Урок - Шаблон page.tpl.php в Drupal 6.

Главная » Курсы » Курс Drupal 6, Темизация. » Урок - Шаблон page.tpl.php в Drupal 6.

Обучающий онлайн курс
Drupal 6, Темизация.

Лицензия: Копирование запрещено.

Шаблон page.tpl.php - это основной шаблон всех страниц, используется для формирования HTML-кода страницы. Через шаблон page.tpl.php выводится вс содержимое страницы (блоки, основное содержимое)

По умолчанию через этот page.tpl.php выводятся все страницы сайта. Этот файл состоит из HTML-кода со вставленными в него php-переменными. Через эти переменные выводятся регионы, меню ($primary_links и $secondary_links), логотип ($logo), слоган($site_slogan), миссия ($mission), а также другие данные.

В Drupal 6 заложен механизм переопределения шаблона page.tpl.php по следующим правилам:

1. page-front.tpl.php - это шаблон для главной страницы сайта.

Если в вашей теме существует шаблон page.tpl.php и шаблон page-front.tpl.php, то на главной странице сайта будет использоваться шаблон page-front.tpl.php, а на всех остальных страницах page.tpl.php.

2. Drupal 6 осуществляет поиск шаблона в соответсвии с внутренним путем. Вспомните, что Drupal 6 обладает системой алиасов(синонимов для путей), но  создавая алиас(синоним) пути вы не меняете внутренний путь. А вот как раз внутренний путь и используется в Drupal 6 для более гибкого переопределения шаблонов page.tpl.php.

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

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

Проверим это на практике: Создайте в папке вашей темы следующие файлы:

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

* 200 - это номер материала, который вы редактируете.

следующего содержимого:

 

This is file: <?php echo basename(__FILE__) ?>

Это команда позволит видеть название шаблона, который загружается  Drupal 6.

Теперь перейдите на страницу http://example.com/node/200/edit и вы увидете текст:

This is file: page-node-edit.tpl.php

Удалите файл page-node-edit.tpl.php и перезагрузите страницу, результатом будет:

This is file: page-node-1.tpl.php

Удалите файл page-node-1.tpl.php и перезагрузите страницу, результатом будет:

This is file: page-node.tpl.php

Обратите внимание, что шаблон вида page-node-200-edit.tpl.php был проигнорирован.

Далее аналогичнй подход с шаблонами для других модулей.

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

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

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

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

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

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

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

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

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

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


Предопределенные переменные шаблона page.tpl.php

Основные переменные шаблона page.tpl.php:

$base_path: URL-путь к папке с Drupal. Покрайней мере, он будет равен /.
$css: массив CSS файлов для данной страницы.
$directory: Путь к папке с текущей темой, например themes/garland или themes/garland/minelli.
$is_front: Истина, если это главная страница.  
$logged_in: Истина, если пользователь авторизован.

$is_admin: Истина, если пользователь авторизован под учетной записью администратора.

Метаданные страницы шаблона page.tpl.php:

$language: (объект) Язык сайта. $language->language содержит текстовое обозначение. $language->dir Содержит директиву языка, принимает значение 'ltr' или 'rtl' . 
$head_title: модифицированная версия заголовка страницы, используется в теге TITLE.
$head: выводит секцию HEAD (включает в себя мета-теги, keyword tags).
$styles: CSS стили страницы.
$scripts: Файлы javascript, используемые на странице.
$body_classes: множество CSS классов для тега BODY. Содержит переменные определяющие текущую разметку (множественные столбцы, единичный столбец), текущий путь и тд.

Идентификационные данные шаблона page.tpl.php:

$front_page: Адрес главной страницы. Так же включает языковой домен, или префикс.
$logo: Адрес логотипа.
$site_name: Название сайта, можно отключить в настройках темы.
$site_slogan: Слоган сайта, можно отключить в настройках темы.
$mission: Миссия сайта, можно отключить в настройках темы.

Навигация шаблона page.tpl.php:

$search_box: HTML код формы поиска, пустой если поиск выключен.
$primary_links (array): Массив содержащий primary_links.
$secondary_links (array): Массив содержащий secondary_links.

Содержание страницы (в порядке появления в default page.tpl.php):

$left: Левая колонка.
$breadcrumb: обратная навигация(«хлебные крошки») для текущей страницы.
$title: Заголовок старницы.
$help: Текст справки, в основном используется на страницах администрирования.
$messages: Статусные сообщения и сообщения об ошибках.
$tabs: закладки.
$content: основное содержимое текущей страницы.
$right: правая колонка.

Переменные подвала шаблона page.tpl.php:

$feed_icons: RSS лента текущей страницы.
$footer_message: Текст подвала сайта.
$footer: регион footer.
$closure: Переменная определяющая конец страницы. Она должна быть после остального динамического содержимого.