При работе на CMS Drupal 7 вы можете темизировать при помощи шаблонов, практически любой элемент, начиная от целой страницы, заканчивая отдельными полями. Блоки не стали исключением, для них также есть шаблон block.tpl.php и при его помощи можно подстраивать вывод блока под себя. Обычные блоки темизировать не надо, ведь внутри их можно написать любой код, а вот системные блоки или же блоки выводимые представлением не так просто изменить, но об этом чуть позже.
Какие шаблоны block.tpl.php можно использовать?
Перед началом работы с темизацией блоков стоит обратить внимание, какие существуют шаблоны.
block.tpl.php
Первый шаблон используется по умолчанию и затрагивает все блоки, которые есть на сайте.
Он по умолчанию встроен в друпал и его можно найти в директиве /modules/block/block.tpl.php
В нём содержится код, который используя при выводе блока по умолчанию.
block--[регион].tpl.php
Шаблон который будет задевать все блоки находящиеся в регионе, системные названия которых можно узнать в файле с расширением .info Вашей темы. (подробнее о этом в уроке о создании своей темы)
Так, для того, что бы воздействовать на все блоки в Sidebar second название будет выглядеть следующим образом: block-- sidebar_second.tpl.php
block--[модуль].tpl.php
Этот шаблон необходим для темизации всех блоков выведенных при помощи конкретного модуля.
Узнать в ком модуле выводится шаблон можно двумя способами.
Первый это сначала использовать шаблон типа block.tpl.php, в нём вывести dpm($block);
На странице найти необходимый нам блок и открыв сообщение найти строчку под название module и взять значение.
А также можно зайти в настройки блока
И он будет написан в адресной строке после /manage/..
block--[модуль]--[дельта].tpl.php
При помощи уточнения, а именно дописания [дельты], можно темизировать конкретный блок, так как [дельта] у каждого блока уникальная
Где брать название модуля мы уже выяснили, теми же способами можно узнать и название дельты, также при помощи dpm($block)
И при помощи адресной строки в настройке блоке, дельта идёт следом за модулем
Важность шаблона
Теперь когда мы знаем какие существуют шаблоны блоков, пришло время выяснить какой из ни будет задействован.
Главным шаблоном, который перекрывает все другие является block--[модуль]--[дельта].tpl.php.
Если он отсутствует то следом будет подключён шаблон block--[модуль].tpl.php.
Если система не найдёт вышеупомянутые шаблоны она начнёт искать block--[регион].tpl.php.
И если уже и этого шаблона нет, то будет подключен шаблон block.tpl.php.
Стоит обратить внимание, что местоположение шаблона тоже играет существенную роль, сначала будут подключены шаблоны которые находятся внутри папки текущей темы, а затем шаблоны с папки /module/… Следовательно если у вас в папке темы будет шаблон block.tpl.php то он перекроет этот же шаблон который находится в папке модуля.
Переменные
Кроме самого кода, в файле стандартного шаблона, написаны еще переменные, которые можно использовать для темизации блоков. В самом файле они разделены на «Available variables» (Доступные (Основные) переменные),
и «Helper variables:» (Вспомогательные переменные)
Рассмотрим каждые из них
$block->subject — название самого блока.
$content – содержит контентную информацию
$block->module — название модуля, который был задействован при выводе блока
$block->delta — идефикатор. Является не повторимым и содержится в каждом блоке, благодаря ему можно обращаться к конкретным блокам.
$block->region — содержит название региона в котором был выведен блок.
$block_zebra — присваивает классы odd и even, в соответствии с с чётностью элемента. Напрямую связанна с регионом в котором находится блок, следовательно исчисление идёт от первого элемента внутри региона
$zebra – делает то же что и $block_zebra, только в этом случае отсчет не привязан к региону
$block_id- содержит значения id блока, внутри определённого региона
$id- содержит значение id блока, но не привязан к региону.
Следующие переменные присваивают значение «Истина» при соблюдении условий:
$is_front — блок на главной странице
$logged_in — пользователь залогинен(авторизован) на сайте
$is_admin — авторизованный пользователь является администратором
Подключение шаблона и пример использования
Для начала нам стоит какие или какой именно блок мы будем темизировать и создать соответствующий файл. Для примера мы будем темизировать блок созданный представлением «Жанры».
Для этого создадим файл с названием block--views--ganre-block.tpl.php и откроем его.
Теперь стоит перейти в дерективу module/block/ и найти там стандартный файл block.tpl.php, скопировать его содержимое и вставить в наш ново созданный шаблон блока.
И у нас должно получиться следующие.
Теперь у нас есть новый шаблон для блока с жанрами, осталось его подключить, а для этого необходимо перейти в раздел конфигурация, на административной панели сайта, найти в ней подраздел «Разработка» и перейти по ссылке «Производительность».
В открывшимся окне необходимо нажать на кнопку «Очистка кэша». После чего наш шаблон будет подключён
Теперь наш шаблон подключен и мы можем вносить в него изменения.
Скроем контент этого блока для незарегистрированных пользователей. Для этого мы воспользуемся дополнительными переменными, а именно $logged_in.
Пропишем наше условие и сохраним документ.
Теперь если мы выйдем из своей учётной записи то в нашем блоке не будет выводится содержимое
А если мы авторизуемся то содержимое блока будет выводится.
Так мы можем добавить в содержимое блока специальные подписи, поменять оформления заголовков и сделать еще множество вещей для приведения нашего сайта к желательному для нас виду.
Важно
Будьте внимательны в темизации блоков, особенно при выборе шаблона, ведь в Drupal 7 вывод всего контента совершается через блоки.