Более менее опытный разработчик знает, что html-разметку или верстку отдельных элементов лучше всего выносить в отдельные файлы - шаблоны, чтобы потом было удобно их подключать в нужных местах своего проекта. Это хорошая практика, она позволяет не захламлять php-код тегами html, оставляя его более понятным и чистым. Плагин WP-Recall поддерживает эту практику и дает удобные инструменты для работы с шаблонами внутри своих дополнений. Ниже мы рассмотрим основы использования шаблонов внутри дополнений плагина WP-Recall.
Для начала определим куда можно класть шаблоны и каким образом их можно подключать внутри своего дополнения.
Основы
Согласно текущего стандарта все шаблоны дополнения должны располагаться внутри папки templates, тогда их без проблем можно будет использовать с помощью специальных функций из ядра плагина.
- rcl_include_template() - подключает файл шаблона с выводом его содержимого на экран
- rcl_get_include_template() - возвращает контент шаблона для обработки
Обе функции принимают один и тот же набор аргументов.
Например, в папке нашего дополнения my-addon, находится шаблон по пути /my-addon/templates/custom.php, подключим его внутри своей функции и вернем его контент через return:
$content = rcl_get_include_template('custom.php', __FILE__); return $content;
Допустим, внутри нашего шаблона будут использовать две переменные, разного типа: число и массив. Передадим их внутрь шаблона третьим аргументом:
$content = rcl_get_include_template('custom.php', __FILE__, array( 'var1' => 10, 'var2' => array( __('string one'), __('string two') ) )); return $content;
Теперь внутри подключаемого шаблона custom.php можно будет использовать переменные $var1 и $var2, первая будет иметь значение 10, а вторая будет являться массивом с указанной выше структурой.
Шаблоны удобно править обычному пользователю, ведь, по большей части там размещена html-разметка, с которой большинство работать умеет, но зачастую после внесения изменения в какой-либо шаблон дополнения или плагина WP-Recall встает вопрос о сохранении этих изменений при обновлении плагина или дополнения. Полезно будет знать, что в плагине WP-Recall предусмотрено решение этой проблемы.
Положите измененный шаблон в папку по пути /wp-content/wp-recall/templates/ и они будут приоритетно подключаться оттуда, а не из папки плагина или дополнения.
На этом описание порядка базового применения шаблонов заканчивается, рассмотрим частные случаи и полезные хуки, которые можно использовать в своих проектах.
Подключение шаблона из папки другого дополнения
Допустим нам потребовалось использовать в своем дополнении чужой шаблон, т.е. шаблон из папки другого дополнения. Дублировать его у себя не очень хорошо, поэтому мы можем подключить его просто указав полный путь до папки дополнения шаблон которого нам нужен:
//получаем данные дополнения по идентификатору $addon = rcl_get_addon('addon-id'); $content = rcl_get_include_template('template.php', $addon['path']); return $content;
Только важно знать, что дополнение шаблон которого подключаем должно быть активировано, иначе шаблон не будет подключен.
Подменяем подключаемый шаблон
Если необходимо подключить свой шаблон вместо текущего, то можно использовать специальный фильтр:
add_filter('rcl_template_path', 'replace_custom_template_path', 10, 2); function replace_custom_template_path($path, $templateName){ if($templateName != 'user-rows.php') return $path; //подключаем шаблон my-user-rows.php //из своего дополнения вместо user-rows.php $path = rcl_addon_path(__FILE__).'templates/my-user-rows.php'; return $path; }
Выводим до или после шаблона свой контент
Перед и после подключения любого шаблона плагина WP-Recall или его дополнения срабатывают экшны:
- rcl_include_template_before
- rcl_include_template_after
Зная это, можно вывести любой контент перед или после контента подключаемого шаблона.
add_action('rcl_include_template_after', 'add_custom_content_after_template', 10, 2); function add_custom_content_after_template($templateName, $path){ if($templateName != 'custom.php') return false; //через echo выводим нужный нам html-код //после подключения шаблона custom.php }
Таким образом, мы можем не только создавать свои шаблоны и работать с ними, но и подключать или даже подменять подключение шаблонов из других дополнений, тогда, когда нам это требуется.
Также рекомендую ознакомиться со статьей по теме Используем функционал шаблонов в плагине WP-Recall. Список шаблонов. В ней перечислены почти все действующие шаблоны из базовой части плагина и не только, кроме того, собраны полезные советы и замечания по использованию этого функционала.
Статья актуальна для версии WP-Recall 16.8.3 и выше.
Вот и статейка, спасибо. Теперь поищу просветления в кофе и буду применять в дело.
Очень интересно!
Добрый день! Вопрос такой, стандартно контент дополнения выводится через rcl_area_tabs, в одном файле office.php. Как сделать так, чтобы например личный кабинет выводился через lichny_cabinet.php, баланс выводился в balance.php и так далее?
Здравствуйте. Технические вопросы задаем на форуме поддержки. Создавайте новую тему на форуме и даем подробности: что делаете - что не получается