Файлы-шаблоны

Видимость кирпичка в дизайне

Показывать админо-неуправляемые кирпичики или нет решают рисовальщик с верстальщиком. Например, хлебные крошки "Вы здесь:" могут быть включены в дизайн сайта, а могут быть и не включены. В случае когда рисовальщик с верстальщиком решат включить хлебные крошки в дизайн, администратор сайта не сможет удалить их через админку.

Видимость админо-управляемых кирпичиков зависит от решения совместного решения всех трех сторон. Например, рисовальщик должен заложить для формы поиска место дизайне, верстальщик сверстать форму поиска в теме дизайна. А администратор должен разрешить через админку отображать форму поиска на сайте.

Но если рисовальщик или верстальщик решат не выводить какой-то админоуправляемый кирпичик, то даже если кирпичик будет включен на показ через админку, на сайте он все равно не появится.

 

Места, где задается тема дизайна

Дизайн в Друпале задается с помощью четырех .php файлов, которые есть в любой теме дизайна. Каждый файл выдает html-код.

Основной файл шаблона:

Он выдает html-код, который пересылается браузеру при просмотре страницы.

3 дополнительных файла шаблона:

Они выдают html-код, который используется основных файлом шаблона Page.tpl.php.

Подробнее о каждом файле.

1. Page.tpl.php задает общее расположение информации на странице. Когда мы смотрим в браузере страницу Друпал-сайта, мы видим html-код, выданный Page.tpl.php.

Page.tpl.php опирается на html-код, выданные тремя другими php-файлами темы дизайна и на html-код, содержащийся в других информационных кирпичиках.

Характерно, что на разных страницах html-код от 3-х дополнительных .tpl.php-файлов может встретится разное количество раз:

Это заставляет рисовать дизайн для них таким образом, чтобы повторяющиеся куски информации стыковались между собой красиво.

2. Node.tpl.php выдает html-код ноды (статьи).

Если статья показывается на своей странице, то она будет дана в полном виде, возможно даже с комментариями. Html-код страницы обычно выдается в центральной колонке.

Если статья показывается на других страницах среди списка похожих статей (например, стать в блоге), то статья выводится в сокращенном виде, только первые 600 символов и без показа комментариев. Друпал с помощью файла Node.tpl.php собирает 10 html-кодов сокращенных страниц и выдает их друг за другом в центральной колонке. Рисовальщик должен предусмотреть, чтобы ноды (статьи) в сокращенном виде хорошо визуально разделялись друг от друга.

3. Comment.tpl.php выдает html-код комментариев и их обрамление дизайном. Дизайн комментариев должен быть прорисован так, чтобы подряд выданные комментарии хорошо смотрелись друг под другом. Друпал поддерживает выдачу комментариев в древообразном виде со сдвигом. Рисовальщик может отобразить такую возможность в дизайне.

4. Block.tpl.php отображает html-код информации, выводимой в блок, включая html-оформление дизайна блока.

В колонке html-код блоков выводится друг за другом. Верстальщик может задать обрамление блок через файл Block.tpl.php. Верстальщик может задать оформление колонки блоков через файл Page.tpl.php. Но верстальщик не может разнообразить переход между блоками. Друпал на основе Block.tpl.php сгенерирует html-коды нескольких блоков и расставит их подряд.

Единственная возможность для верстальщика разнообразить переход между блоками это вставить html-код всей колонки в таблицу, а в таблице фоном пустить какой-нибудь графический элемент с наклонной линией. Тогда переходы между блоками не будут смотреться однообразно.

Если нужно разнообразить переходы между блоками только в левой колонке, то можно использовать для разнообразия прижатую влево фоновую картинку всего сайта.

..........................
Макс Кириленко, подбор названий и доменов

Page.tpl.php, переменные

Полный список переменных, употребляемых в файлах шаблонах *.tpl.php:
http://docs.drupal.ru/doc/peremennye_v_s...

Некоторые из них носят технический характер и нужны только верстальщику, но не рисовальщику. Например:

$closure: Содержит код, который должен быть в конце кода страницы; используется JS-скриптами, которые вызываются после полной загрузки страницы

Для удобства освоения материала рисовальщиком разделим переменные на 4 группы.

 

Переменные, управляемые через админку

Это переменные, задающие "шапку" сайта. Их все надо постараться отразить в дизайне.

$site: Наименование сайта; заполнено всегда

$logo: Путь к файлу логотипа; определяется в настройках темы

$site_name: Наименование сайта; если отображение наименования запрещено в настройках темы, то переменная будет пустой

$site_slogan: Слоган сайта; если отображение слогана запрещено в настройках темы, то переменная будет пустой

$search_box: True(1), если в настройках темы разрешен блок поиска

$primary_links (array): Массив, который содержит список т.н. "первичных ссылок" (обычно - главное меню сайта)

$secondary_links (array): Массив, который содержит список т.н. "вторичных ссылок" (обычно - подменю одного из пунктов главного меню или независимое от главного "вторичное" меню сайта)

$mission: Миссия сайта; если отображение миссии запрещено в настройках темы, то переменная будет пустой

$footer_message: Текст "подвала" сайта (футер); если отображение подвала запрещено в настройках темы, то переменная будет пустой

 

Переменные, не управляемые через админку

Эти переменные заполняются Друпалом в зависимости от выводимой страницы.

  • $sidebar_left: html-код левой колонки пометкой left sidebar
  • $content: центральная колонка с основным содержимым текущей страницы (нода, комменты и прочее)
  • $sidebar_right: html-код правой колонки с пометкой right sidebar

Переменная $content выводится в центральную колонку, обычно это центральная ячейка таблицы. В центральной колонке выше $content обычно выводятся еще 3 переменные:

  • $messages: html для сообщений - статусное сообщение, сообщение об ошибке (обычно в начале страницы или вверху центральной колонки, даже выше закладок)
  • $breadcrumb: html для отображения "хлебных крошек"
  • $tabs: html для отображения ссылок-"закладок" (обычно вверху центральной колонки)

 

Переменные без визуального образа

Есть еще 3 переменные, которые не имеют визуального образа. Они помогают верстальщику сориентироваться, как выводить информацию на странице:

Рисовальщик об этих переменных может не беспокоится и знать о них только для общего образования.

$is_front: True(1), если отображается главная страница сайта (корень сайта). Может использоваться, чтобы выдать шапки разного размера на главной и второстепенных страницах сайта.

$layout: в зависимости от блоков, выведенных в левую, правую колонки, эта переменная принимает 4 значения

  • 'none' - нет ни левой ни правой колонки
  • 'left' - блоки есть только в левой колонке
  • 'right' - блоки есть только в правой колонке
  • 'both' - блоки есть и в левой и в правой колонках

$title: Заголовок; обычно заголовок ноды; это НЕ заголовок всей страницы

 

Технические переменные

Их нужно знать верстальщику, но не обязательно знать рисовальщику.

$closure: Содержит код, который должен быть в конце кода страницы; используется JS-скриптами, которые вызываются после полной загрузки страницы

$directory: Каталог (путь к каталогу), в котором расположена данная тема; к примеру: themes/box_grey или themes/box_grey/box_cleanslate

$head: код html, который Друпал генерирует функцией drupal_get_html_head() (используется для динамического добавления JS-скриптов в код страницы)

$head_title - Текст, отображаемый как заголовок страницы.

$help: Текст "конктекстной помощи"; обычно генерируется модулями, через hook_help; к примеру - тексты помощи для элементов формы ввода ноды

$language - Язык сайта.

$onload_attributes: Onload tags to be added to the head tag, to allow for autoexecution of attached scripts.

$search_button_text: Перевод текста на кнопке формы поиска

$search_description: Перевод описания для формы поиска

$search_url: URL страницы, на которой был инициирован поиск

$styles: html для загрузки CSS-файлов

..........................
Макс Кириленко, подбор названий и доменов

Node.tpl.php, переменные

Node.tpl.php

Этот файл шаблона используется для отображения ноды (статьи) - как в режиме списка, так и в режиме "одиночного отображения" (конкретной ноды).

Перечислим переменные, о которых надо знать рисовальщику. 

Видимые Переменные

$title : Заголовок ноды

$picture : Аватар автора (код html); переменная непуста, если аватары пользователей разрешены через админку в настройках темы. Включение аватара управляется через админку.

$terms : Отформатированный список (html) терминов таксономии (классификации)

$name : Автор (отформатированная ссылка)

$date : Дата создания (отформатированная)

$content : Содержимое ноды (в режиме "одиночного отображения); Выдержка (teaser), в режиме списка нод

$node_url : Путь к ноде (URL). Если нода выводится полностью, то в ее конце можно разместить ссылку на страницу, где располагается нода.

$links : Список "контекстных" ссылок для данной ноды ("Редактировать", "Удалить" и прочее)

Технические переменные,

Нужны только верстальщику.

$taxonomy (array) : Массив отформатированных (html) ссылок для терминов таксономии; в отличие от содержимого переменной $terms, это именно массив

$node (object) : Обьект ноды, содержащий все доступные в данном контексте поля

$main : True(1), если Друпал находится в режиме отображения списка нод (отображает не конкретную ноду, а список нод, обычно выдержками)

$sticky : True(1), если нода имеет статус "закреплена" (sticky)

$page : True(1), если Друпал находится в режиме "одиночного отображения" (отображает не список нод, а конкретную ноду)

$submitted : Translated text, if the node info display is enabled for this node type.

..........................
Макс Кириленко, подбор названий и доменов

Comment.tpl.php, переменные

Comment.tpl.php 

Этот файл шаблона используется для отображения конкретного комментария (не списка комментариев). Список комментариев будет подверстан Друпалом к ноде и выведен в переменой $content.

 

Визуальные переменные 

$title : Заголовок комментария

$picture : Аватар автора комментария (код html, включая ссылку на профиль автора комментария); переменная непуста, если аватары пользователей разрешены через админку в настройках темы

$new : Флаг "Новый комментарий" (текст), если комментарий новый для посетителя (участника)

$author : Автор (имя и ссылка на профиль)

$date : Дата комментария (отформатированная и локализованная/переведенная)

$content : Содержимое комментария

$links : Список "контекстных" ссылок для данного комментария ("Редактировать", "Удалить" и прочее)

 

Технические переменные

$comment : объект (формируется в функции theme_comment)

$submitted : ? 

..........................
Макс Кириленко, подбор названий и доменов

Block.tpl.php, переменные

Block.tpl.php

Этот файл шаблона используется для отображения блоков.

 

Визуальные переменные

$block->subject : Заголовок блока

$block->content : Отформатированное (html) содержимое блока

 

Переменные для анализа

Такие переменные не выводятся в виде html-кода. Они помогают верстальщику выводить блоки разным способом, чтобы соседние блоки не были похожи по оформлению дизайна.

$block->region : Регион, в котором расположен блок; значения для Друпал 5.0 и выше - наименование региона (строка). Через анализ этой переменной можно блоки в левой и правой колонке выводить разным способом. Рисовальщик может задать разный дизайн для блоков левой и правой колонок.

$seqid : Порядковый номер блока в пределах текущей страницы; первый по коду блок имеет номер 1, второй - 2 и так далее

$block_seqid : То же самое, что и $seqid, но нумерация отдельная для каждого региона. Можно назначать блокам в колонке последовательно цвета радуги. Или менять плавно менять светлоту блоков при переходе от первого ко второму, третьему, четвертому. Или снижать насыщенность цветов блоков - самый верхний блок имеет насыщенный цвет, а к 7-ому блоку цвет становится серым.

На момент верстания html-кода php-код блока знает только свой порядковый номер в колонке, но не знает сколько всего будет выведено блоков в колонке. Это лишает рисовальщика и верстальщика возможности определить последний блок и закончить переход цветов именно на последнем блоке. Поэтому рисовальщику нужно учитывать, что  изменения в дизайне блоков могут быть завершены на любом блоке.
Например, если выводить блоки со сдвигом вправо на 10 пикселей, а через некоторое количество блоков вывести очередной блок без сдвига и после него опять сдвигать блоки вправо, то может оказаться, что будут выведены 5 блоков со сдвигом, 6-ой опять будет прижат влево, а больше блоков не будет.
Если бы знать заранее, что будет именно 6 блоков, то можно было бы сдвигать их через 8 пикселей, тогда они влезли бы все. Или сдвигать их по по 3 штуки. Но общее количество выводимых блоков неизвестно внутри php-кода Block.tpl.php.
Единственные повторные структуры, которые может использовать рисовальщик, это с длиной 2 элемента, см.  $block_zebra. 

$zebra : Флаг "четный/нечетный" (odd/even); значения - 'odd' (нечетный) или 'even' (четный); глобально в пределах текущей страницы

$block_zebra : То же самое, что и $zebra, но локально в пределах конкретной колонки. Можно чередовать в колонке блоки по цвету. Примерно так же, как это делается для строк таблицы (белые/серые строки). Это уменьшает монотонность блоков в колонках.

 

Технические переменные

Нужны только верстальщику, рисовальщику их знать не надо.

$block : переменная-объект; далее - поля объекта, доступные для чтения в шаблоне.

Часть полей уже была приведена выше. Перечислим оставшиеся поля.

block->module : Наименование модуля, сгенерировавшего данный блок (к примеру - view)

$block->delta : Порядковый номер блока; этот номер уникален в пределах сайта; генерируется модулем, формирующим данный блок

$block->status : Статус блока (0 - запрещен, 1 - разрешен) - ? так ли это ?.

$block->path : Путь (url "внутри" Друпала), относительно которого разрешен/запрещен данный блок (эти разрешения и запреты устанавливаются на странице настройки конкретного блока)

$block->throttle: Флаг для модуля Throttle (отключать блок или нет при больших нагрузках на сайт).

..........................
Макс Кириленко, подбор названий и доменов