Последовательность применения шаблонов темы

30 Май 2008
Опубликовано VladSavitsky
Задача: 

Разобраться в порядке, который используется для шаблонов сайта.

Решение

PHPTemplate поддерживает использование шаблонов для определённых системных URL.

Если вы находитесь на странице http://example.com/node/1/edit, то шаблоны будут искаться в следующей последовательности:

  • page-node-edit.tpl.php
  • page-node-1.tpl.php
  • page-node.tpl.php
  • page.tpl.php

Если вы находитесь на странице http://example.com/tracker, то шаблоны будут искаться в следующей последовательности:

  • page-tracker.tpl.php
  • page.tpl.php

Если вы находитесь на странице http://example.com/user/1, то шаблоны будут искаться в следующей последовательности:

  • page-user-1.tpl.php
  • page-user.tpl.php
  • page.tpl.php

Если вы находитесь на странице http://example.com/taxonomy/term/1, то шаблоны будут искаться в следующей последовательности:

  • page-taxonomy-term-1.tpl.php
  • page-taxonomy-term.tpl.php
  • page-taxonomy.tpl.php
  • page.tpl.php

Если вы находитесь на странице http://example.com/, то шаблоны будут искаться в следующей последовательности:

  • page-front.tpl.php
  • page.tpl.php

Можно создавать шаблоны для формирования отдельных страниц. Шаблоны страниц могут базироваться на системном URL страницы.

Например если вы находитесь на странице /node/1/edit, то шаблоны будут искаться в следующей последовательности:

  • page-node-edit.tpl.php
  • page-node-1.tpl.php
  • page-node.tpl.php
  • page.tpl.php

Обратите внимание:
шаблоны ищутся основываясь на стандартных для Drupal URL. Т.е. если вы задали альтернативный URL вручную или используете модуль Pathauto, то шаблоны всё равно будут искаться по системному пути и альтернативный адрес использоваться не будет.

Если вы хотите переключать шаблоны страниц основываясь на определённых правилах (например роли пользователя), то вы должны определить эти правила в шаблоне template.php, определив переменной $vars['template_files'] массив возможных шаблонов.

Пример определения шаблонов этой переменной можно посмотреть на странице Creating a separate admin theme.

Использованные материалы: 
Авторы решений:
Версия Drupal:
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>