Создание нового региона в шаблоне Drupal и вывод региона в page.tpl.php

Drupal: 
Уровень сложности: 

Регионы - это части страницы, в которых могут размещаться Блоки. Так как модуль Block широко используется в Друпал для отображения меню, представлений, собственных блоков с текстом, слайдов, языков, поиска, то часто возникает необходимость работы с регионами.

Добавив новый регион вы можете легко управлять содержимым, отображаемым в это регионе. Используя модуль Block можно проще и быстрее менять содержимое для разных страниц, вместо того, чтобы править файл шаблона page.tpl.php

Как создать регион в шаблоне

В любом шаблоне, даже в системном, можно добавлять регионы. Для примера используем Bartik.

1. Добавьте имя нового региона в bartik.info

Найдите в info-файле регионы: regions и вставьте свой новый с любым названием: в скобках указано машинное название, оно должно содержать только буквы и цифры и нижнее подчёркивание, а после знака равно - любое читаемое название. Пример:

regions[mynewregion] = My New Region

Скриншот:

После этого регион появится в блоках (если сбросить кеш), но блоки в этом регионе не будут отображаться, необходим следующий шаг - отображение региона.

 

2. Добавьте вывод региона в page.tpl.php с машинным именем региона

Обычно page.tpl.php находится либо в корневой папке темы, либо в подпапке templates.
Если в вашей теме вы не найдёте page.tpl.php, тогда копируйте его из bartik темы и положите в вашу тему в подпапку templates. После очистки кеша друпал найдёт этот файл и применит его работу при отображении страниц (автоматически друпал всегда ищет такие файлы при включении тем).

Редактируйте page.tpl.php. Там вы можете увидеть вывод других регионов функцией render(). По аналогии с другими регионами, добавьте строки вывода нового региона mynewregion в любое место:

  1. <?php if ($page['mynewregion']): ?>
  2. <div id="mynewregion"><div class="section clearfix">
  3. <?php print render($page['mynewregion']); ?>
  4. </div></div>
  5. <?php endif; ?>

Тут в первой строке производится проверка присутствия этого региона (если в нём есть блоки), и следующая строка отображает регион, то есть выводит все блоки в нём. В некоторых темах проверка не производится, в этом стандарта нет.

Внимательно размещайте вывод региона вне секций if

Скриншот.
new region render

Тут видно как можно выводить, рендерить регион в теме. По аналогии с кодом вывода featured мы добавили вывод региона mynewregion сразу под featured.

 

Отображение региона только на главной

Если вы хотите выводить регион только на главной, тогда добавьте проверку if ( $is_front )

  1. <?php if ( $is_front && ($page['mynewregion']) ): ?>
  2. <div id="mynewregion"><div class="section clearfix">
  3. <?php print render($page['mynewregion']); ?>
  4. </div></div>
  5. <?php endif; ?>

 

Результат

Сбросьте кеш (Конфигурация - Производительность - Очистить кеш).
cache

Чтобы просмотреть регионы нажмите "Demosntrate regions" в блоках вверху.

Скриншот: просмотр регионов Bartik

Добавьте нужные блоки в этот регион, и они отобразятся.

Скриншот без слайдера

Скриншот: Слайдер в регионе My New Region

Рубрика: