Друпал. Настройка темы
Эта статья посвящается настройке темы для Друпала. Статья рассказывает о некоторых полезных механизмах работы с движком PHPTemplate.
node.tpl.php - это файл шаблона для вывода Ваших нод (или документов). Этот шаблон определяет не только то, как Вы будете выводить саму ноду, но и то, как она будет отображаться в списке тизеров (анонсов). А ведь порою крайне необходимо делать это по-разному. Например, возьмите Ваши анонсы статей на главной странице. Вы пишете блог, и на главной странице анонсы постов блога - и под каждым таким анонсом надпись "Все записи блога". И эта надпись повторяется десять раз на главной странице - просто ужас, иголки встают дыбом. То же самое можно сказать о надписи "Добавить комментарий". Нелогично оставлять комментарий к статье, прочитав лишь её анонс. Информацию об авторе статьи тоже можно убрать с главной страницы - особенно это касается личных блогов - зачем на главной странице десять раз повторять одно и то же имя автора?
Для разного отображения тизеров и полных нод можно использовать логические переменные $page и $is_front. Переменная $is_front равна True(1) в том случае, если отображается главная страница сайта. Так как её использовать, чтобы создать шаблон для тизеров на главной страницы? Очень просто - открываю файл node.tpl.php в своей теме, и прописываю в самом его начале следующую строчку:
<?php if ($is_front): include "node-front.tpl.php"; return; endif; ?>
Таким образом я говорю Друпалу, что если я располагаюсь на главной странице, шаблон для отображения нод находится не в файле node.tpl.php, а в файле node-front.tpl.php. Создаю в той же директории файл с таким именем - после чего проще всего скопировать туда весь код из файла node.tpl.php, и убрать всё, что мне не нужно. Например, я убираю с главной страницы всё, что относится к переменной $submitted (имя автора и время добавления статьи), переменную $links (ссылки типа "Все записи блога" и "Добавить комментарий"), переменную $terms (список терминов таксономии) и так далее. Но позвольте, время добавления статьи неплохо было бы и оставить, убрать лучше просто имя автора. Но переменная $submitted всё равно не нужна, решаю я. Для отображения даты и времени существует такая замечательная функция PHP, как date(). Например, прописать вот такую строчку перед переменной $content (переменная для отображения основного содержимого Вашей статьи):
<?php print date("d.m.Y - H:i", $node->created) ?>
И вуаля, в диве submitted отображается теперь только дата создания документа, и никакого имени автора.
Итак, это я сделал - теперь жму на каком-нибудь термине таксономии, которые отображаются у меня теперь только на странице самой ноды - и снова вылазит та же самая проблема. Идёт перечисление всех статей, относящихся к данному термину таксономии, и снова под каждым анонсом тот же самый кошмар - ссылка "Все записи блога", "Добавить комментарий" и так далее. Ну что ж, придётся теперь воспользоваться переменной $page. Её значени равно True(1) в том случае, если Друпал отображает какую-то ноду, но никак не список нод. Итак, прописываю в начале файла node.tpl.php ещё одну строчку:
<?php if (!$page): include "node-front2.tpl.php"; return; endif; ?>
Эта строчка говорит Друпалу о том, что если Друпал отображает список анонсов нод - файл шаблона для него - не node.tpl.php, а node-front2.tpl.php (на самом деле назвать можно как угодно). И снова я всё что, мне нужно прописываю в этом новом файле шаблона. Проблема решена!
С уважением, Ёж


