Я хочу добавить новую область, которая будет охватывать весь сайт. Опишите процесс добавления этого нового региона в мою тему, если возможно, обобщите его для добавления любого нового пользовательского региона.
Я хочу добавить новую область, которая будет охватывать весь сайт. Опишите процесс добавления этого нового региона в мою тему, если возможно, обобщите его для добавления любого нового пользовательского региона.
Ответы:
Вы определяете регионы в вашем файле .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#closure .
Чтобы прояснить этот момент: если вы определяете свои собственные регионы, вам нужно определить все, что вы используете, включая те, которые требуются. Другими словами, вы не можете просто определить дополнительные регионы: если вы определяете какие-либо, вы должны определить их все.
Создание региона для темы Drupal 7 ничем не отличается от создания региона для региона Drupal 6; различия между Drupal 7 и предыдущими версиями по существу:
mytheme_regions()
функции, как это было сделано в Drupal 5, но они определяются в mytheme.info с использованием regions[]
директив, что также делается с темами Drupal 6.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.
Области темы определены в вашем информационном файле темы - см. Документацию . Просто добавьте строку с, 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. Но вам придется посетить настройки темы в пользовательском интерфейсе и назначить свой регион для зоны.
regions[content] = Content
единственным в регионе требуется D7? drupal.org/node/171205#regions , кажется, подразумевает, но затем drupal.org/node/171224 говорит , что требуемые регионы content
, help
, page_top
иpage_bottom
content
это определенно очень важно. help
поддерживается ядром (для вывода справочных сообщений), page_bottom
вероятно, там, где печатается нижняя js, и, page_top
кажется, она используется для панелей навигации, таких как панели инструментов ядра.
Выполните следующие шаги, чтобы создать пользовательский регион в своей теме:
Перейдите в файл 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; ?>
Конфигурация - Производительность - Очистить все кэши
Вам просто нужно определить его в двух файлах.
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
Теперь рендер этого региона
<?php if ($page['new_region']): ?>
<div class="new_region_class">
<?php print render($page['new_region']); ?>
</div>
<?php endif; ?>
Теперь очистите весь кэш. Теперь у вас есть новый регион в вашей теме. Вы можете увидеть это на странице конфигурации вашего блока.
Для получения дополнительной информации посетите http://drupal.org/node/171205