Как создать пользовательские области в теме?
Я хочу добавить новую область, которая будет на сайте. Опишите процесс получения этого нового региона в мою тему, если возможно, обобщите его для добавления любого нового настраиваемого региона.
6 ответов
Вы определяете регионы в файле темы .info. См .: Структура файла .info
Затем вам нужно поместить соответствующие теги шаблона в файл page.tpl.php.
Так, например, если вы определили боковую панель области sidebar
в вашем файле .info темы, вы добавили бы: <?php print render($page['sidebar']); ?>
в соответствующее место на странице page.tpl.php.
Еще один момент: не пропустите необходимые регионы!
regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
Подробнее об этом можно узнать на http://drupal.org/update/themes/6/7# закрытие .
Чтобы прояснить этот момент: если вы определяете свои собственные регионы, вам необходимо определить все, что вы используете, в том числе те, которые требуются. Другими словами, вы не можете просто определить дополнительные регионы: если вы определяете какой-либо объект, вы должны определить их все.
Создание региона для темы Drupal 7 не отличается от создания региона для области Drupal 6; различия между Drupal 7 и предыдущими версиями по существу:
- Регионы не определены с помощью функции
mytheme_regions()
, как это было сделано в Drupal 5, но они определены в mytheme.info, используя директивыregions[]
что и делается с темами Drupal 6. - Регионы отображаются с помощью функции Drupal
render()
вместо печати содержимого переменной.
По умолчанию области Drupal 7 следующие:
regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer
Drupal 7 основных тем теперь включают область с именем «выделенная», которая использует тот же дисплей, что и область задания миссии в Drupal 6; они также включают регион с именем «help», который по умолчанию имеет то же содержимое переменной $help
, используемой Drupal 6.
Области темы определены в вашем файле .info. . Просто добавьте строку с областями regions[corner] = Corner
, чтобы получить область углов.
Затем вам нужно отредактировать файл page.tpl.php и добавить <php print render($corner); ?>
, где вы хотите, чтобы регион отображался. Если ваша тема не имеет page.tpl.php, скопируйте ее из базовой темы или из системного модуля.
Общие ошибки:
-
Если в файле theme.info не было объявленных областей, оно использовало области по умолчанию Drupal. Если вы хотите добавить, вам придется повторно объявить регионы по умолчанию. Конечно, вы можете удалить любой регион, но, пожалуйста, поддержите необходимые регионы. Подробнее см. документы .
-
Изменения в файле .info или добавлении новых файлов к теме (например, page.tpl.php) будут заметны только после очистки кешей.
-
Omega, очень популярная базовая тема, не нуждается в каких-либо изменениях в файле page.tpl.php, просто в файле .info. Но вам нужно будет посетить настройки темы в пользовательском интерфейсе и присвоить свой регион зоне.
Следуйте приведенным ниже инструкциям, чтобы создать пользовательскую область в своей теме:
-
Перейдите в файл theme.info и добавьте эту строку.
regions[machine_name_of_your_region] = Name of your region
-
Хотя вы также можете вызывать региональные блоки в шаблоне узла как ну, вы, как правило, добавите регион на страницу темы шаблон. Обычно это файл page.tpl.php, или если у вас есть пользовательские файлы шаблонов для разных страниц, отредактируйте их тоже. Новый регион появится только на страницах, построенных вокруг шаблона, который вы добавьте новый регион в. Вставьте его туда, где вы хотите, чтобы ваш новый регион появляются.
<?php if ($page['machine_name_of_your_region']): ?> <div id="sidebar-first" class="column sidebar"><div class="section"> <?php print render($page['machine_name_of_your_region']); ?> </div></div> <!-- /.section, /#sidebar-first --> <?php endif; ?>
-
Конфигурация - Производительность - очистка всех кешей
Создать новый регион в теме
Вам просто нужно определить его в двух файлах.
- Theme.info
- page.tpl.php
Theme.info
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
page.tpl.php
Теперь отрисуйте эту область
<?php if ($page['new_region']): ?>
<div class="new_region_class">
<?php print render($page['new_region']); ?>
</div>
<?php endif; ?>
Теперь очистите весь кеш. Здесь вы идете, у вас новый регион в вашей теме. Вы можете увидеть его на странице конфигурации блока.
Подробнее см. http://drupal.org/node/171205