файл.tpl.php

УрокТемизация Drupal 7. Обзор файлов темы (шаблона)

Я уже давно грозился, и, наконец, решился написать серию статей по темизации для Drupal 7. Итак, для начала я опишу все файлы в Drupal 7, которые необходимы для создания собственной темы.

Тема представляет из себя набор файлов, которые определяют уровень представления (внешнего вида) сайта. К каждой теме вы можете создать одну или несколько подтем (саб-тем). Для того, чтобы Друпал обнаружил вашу тему, достаточно лишь наличия .info файла (файл с описанием темы), однако в таком случае пользы от вашей темы будет немного :)

УрокБыстрый старт в темизации Drupal

7 мая в Беларуси прошёл Drupal Camp Belarus 2011, где я читал доклад по темизации. Хочу поделиться тем, что я рассказывал народу :)

Краткое введение

Тема сайта – это лицо сайта. Пользователю достаточно нескольких секунд чтобы оценить сайт, понять, нравится он ему или нет. Безусловно, каждый сайт выделяется в первую очередь своим функционалом – сайт никогда не получит большую популярность, имея невероятно красивый дизайн, но бесполезный по своей сути. Однако речь пойдёт именно о темизации, о создании красивого и удобного сайта для пользователя.

УрокФункции предобработки переменных перед выводом в шаблон

Все мы знакомы с обычными файлами шаблонов, выглядящими по принципу файл.tpl.php. И все привыкли, что в этом шаблоне откуда-то (магия?) появляются переменные с даннами. Сегодня я приоткрою эту тайну: для того, чтобы попасть в шаблон, была придумана функция предобработки переменных. Обычно она выглядит вот таким образом:

<?php
  function template_preprocess_что_обрабатываем(&$variables) {
    //код
  }

где

  • template- это имя темы или модуля (в зависимости от того, где реализуем функцию)
  • $variables - массив с доступными переменными
  • preprocess_что_обрабатываем - собственно, название функции с говорящим названием :)

Как пример - в каждой теме присутствует файл page.tpl.php. Функция, которой можно обработать этот файл - template_preprocess_page.

УрокСоздание отдельного шаблона страницы для разных типов ноды

По умолчанию в друпале все страницы выводятся через шаблон page.tpl.php. Можно создавать шаблоны созданные по такому принципу: если путь выглядит как имясайта/node/10, то шаблон будет выглядеть как page-node-10.tpl.php. Если создать шаблон page-node.tpl.php, то все страницы, лежащие "ниже" урла имясайта/node/ будут автоматически перекрыты этим шаблоном.

То есть, если в корне вашей темы лежит файл page-node-tpl.php и выводит только переменную $content, то на странице абсолютно любой ноды будет выведен тольько контент, без колонок, табов и прочих аттрибутов.

Этот принцип работает для любого адресса, и любого уровня вложенности в него. Однако давайте рассмотрим неординарный вариант: допустим, перекрыть надо только страницы нод определённого типа материала. Для этого потребуется поместить в template.php следующий код:

УрокНемного о выводе любых cck-полей программно через node.tpl.php

Сегодня я решил рассказать как выводить cck поля через шаблон node.tpl. Часто бывают такие ситуации, что, например, требуется, чтобы данные из cck полей автоматически закидывать в html-таблицу, или формировать её особым образом, требующим обёртки в дополнительные div'ы (или в любые другие тэги). Поэтому надо обязательно знать, каким образом вывести эти поля в своём шаблоне.

Алгоритм вывода не сложен:

УрокОстальные файлы.tpl.php

Настало время поговорить о том, как создать шаблон любой страницы. Может, вам когда-нибудь придётся делать такой сайт, в котором, например, конкретная страница должна содержать дополнительные поля, или подключать скрипты (не засовывать же их в шаблоны всех страниц из-за одной страницы!), или ещё что-нибудь. Потребностей много, а реализация далеко не для всех является очевидной.

УрокНеобходимые файлы для создания шаблона. Box.tpl.php

Пожалуй, последним из файлов, которые должны обязательно присутствовать в теме является файл box.tpl.php. О нём я рассказываю в последнюю очередь не случайно - он действительно менее важен, чем все предыдущие файлы. Лично я делал лишь несколько шаблонов для друпала, в котором мне приходилось его менять. Однако знать об этом файле вы просто обязаны.

box.tpl.php описывает шаблон создания для немногих элементов сайта. Одним из таких элементов является форма комментирования. Однако тут не получится особо гибко настраивать этот шаблон, так как он состоит всего из двух переменных - заголовок и содержимое:

<div class="box">
 
<?php if (&title): ?>
    <h2><?php print $title; ?></h2>
<?php endif; ?>
 
<div class="content">
    <?php print $content; ?>
</div>
 
</div>

УрокНеобходимые файлы для создания шаблона. Node.tpl.php

Теперь мы поговорим о таком файле как node.tpl.php. Очень полезный файлик. Он является шаблоном для вывода всех типов материалов. Полезен для каждого сайта, так как всегда надо переписать стандартный вывод статей - иногда ссылки убрать, или, например, показывать тэги только в полной версии материала, а в сокращённой(тизере) не выводить.

Вот как строится материал по стандартному шаблону:

Страницы