Предложения по блочному шаблону
Есть ли способ использовать настраиваемый шаблон для каждого блока по названию? Например, если я назвал свой блок «test1», и он находится в области «left1», я хочу использовать следующие предложения шаблонов:
- блок-left1-test1.tpl.php
блок-left1.tpl.php литий>
блок-test1.tpl.php литий>
Есть ли список предложений шаблонов для блоков?
3 ответа
В тематической системе Drupal есть концепция, называемая «предложениями шаблонов». Когда вызывается вызов темы, Drupal проверяет, был ли крючок темы реализован как шаблон или как функция. В случае шаблона вызывается все препроцессорные функции для этой темы. Это означает, что каждый модуль или шаблон может добавлять свои собственные данные к переменным, которые будут доступны для шаблона. Эти переменные передаются как большой массив, $variables
. Этот массив может содержать список предложений шаблонов в виде вложенного массива с именем $variables['template_files']
. Затем Drupal изменит этот список и использует первый существующий шаблон, который он может найти. Дополнительную информацию см. В документации на drupal.org .
Теперь вы можете сделать следующее:
- Добавить функцию в шаблон tem.php вашей темы с именем
[themename]_preprocess_[themehook]
(например.function mytheme_preprocess_block(&$variables) {}
) - В этой функции создайте желаемые имена имен шаблонов
- Добавьте эти предложения в массив
$variables['template_files']
Кстати, если я не ошибаюсь, вы не можете использовать имя региона в предложении шаблона, потому что в момент рендеринга блока пока неизвестно, в какой области будет отображаться вывод.
PS 1: Это помогает, если вы сообщите нам, какую версию Drupal вы используете.
PS 2: Я голосую за этот вопрос, который нужно переместить на https://drupal.stackexchange.com/
Шаблоны предложений шаблонов для блоков (и остальной части ядра) можно найти на http://drupal.org /узел /1089656 . Вместо использования заголовка блока вы используете идентификатор блока, например block-block-1.tpl.php, для блока, который определен блоком блока (определяется пользователем) с идентификатором 1 (вы можете найти идентификатор и модуль в URL-адресе, когда вы редактируете блок).
Вы также можете использовать имена регионов, но нет необходимости использовать оба идентификатора и имя региона, так как блок может переходить только в один регион.
Я не уверен, будет ли он делать именно то, что вы ищете, но блок темы темы звучит близко. Аналогичный модуль стоит посмотреть Skinr .