8.9. Темизация Views Drupal 8. Создаем owl carousel слайдшоу с thumbnails. Друпал 8 темизация
Основы синтаксиса Twig в Drupal 8
Думаю, многие из вас уже успели познакомиться с Drupal 8 и его многочисленными изменениями и наверняка уже знаете, что в основу новой ветки пришел и новый шаблонизатор, взамен PHPTemplate – Twig. Сегодня мы рассмотрим основы данного шаблонизатора, дабы в следующих уроках по созданию темы для Drupal 8, вы понимали его специфичный синтаксис.
Итак, начнем с базовых вещей:
Вставка комментария:
#PHPTemplate
<?php
/**
* @file
* File description
*/
?>
#Twig
{#
/**
* @file
* File description
*/
#}
Имена файлов и функций:
#PHPTemplate
node--article.tpl.php
theme_node_links()
#Twig
node--article.html.twig
node-links.html.twig
Хочу заменить, что в Drupal 7 для темизации, используются как функции темизации, например как theme_links(), так и шаблоны шаблонизатора PHPTemplate, например node.tpl.php. В Drupal 8 постарались полностью отказаться от функций темизаций и возложить всё на шаблоны Twig. Системные файлы шаблонов можно найти по пути
core/modules/system/templates
Так же некоторые системные модули, например node, так же имеют свои шаблонные файлы.
core/modules/node/templates
Так же, вам необходимо знать, что все файлы шаблонизатора Twig компилируются один раз и скомпилированная копия файла сохраняется по пути
sites/default/files/php/twig
и при каждой последующей загрузке страницы забирается его копия. Обновление файлов происходит после очистки кеша, так что не забывайте включать режим отладки, при разработке вашей темы.
Вывод переменных:
#PHPTemplate:
<?php print $content; ?>
#Twig:
{{ content }}
Вывод полей:
// Пропущенный через файл темизации
#Twig:
{{ content.field_name }}
// Сырое значение первого поля
#Twig:
{{ content.field_name.0 }}
Создание кастомных переменных:
#PHPTemplate:
<?php $custom_var = $content->comments; ?>
#Twig:
{% set custom_var = content.comments %}
Присвоение массива:
#PHPTemplate:
- <?php $args = array('!author' => $author, '!date' => $created); ?>
#Twig:
{% set args = {'!author': author, '!date': created} %}
Вывод атрибутов:
#PHPTemplate:
<?php print $item['#item']['alt']; ?>
#Twig:
{{ item['#item'].alt }}
Добавление/удаление атрибута:
#Добавление атрибута
#Twig: {{ attributes.setAttribute('id', 'my-id') }}
#Twig: {{ attributes.setAttribute('data-example', 'newvalue') }}
#Удаление атрибута
#Twig:
{{ attributes.removeAttribute('id', 'my-id') }}
Проверка на наличие атрибута:
#Twig:
{% if attributes.hasClass('myClass') %} {% endif %}
Добавление/удаление класса CSS:
#Добавление класса
#Twig:
{{ attributes.addClass('my-class') }}
#Удаление класса
#Twig:
{{ attributes.removeClass('my-class') }}
#Групповая обработка
#Twig: {{ attributes.addClass('my-class').removeClass('my-class-active') }}
Управляющая конструкция if else:
#PHPTemplate:
<?php if ($content->comments): endif; ?>
#Twig:
{% if content.comments %} {% endif %}
#PHPTemplate:
- <?php if (!empty($content->comments)): endif; ?>
#Twig:
{% if content.comments is not empty %} {% endif %}
#PHPTemplate:
- <?php if (isset($content->comments)): endif; ?>
#Twig:
{% if content.comments is defined %} {% endif %}
#PHPTemplate:
<?php if ($count > 0): endif; ?>
#Twig:
{% if count > 0 %} {% endif %}
Управляющая конструкция foreach:
#PHPTemplate:
<?php foreach ($users as $user) {} ?>
#Twig:
{% for user in users %} {% endfor %}
Фильтры:
#Пропустить строку через фильтр Check_plain:
#PHPTemplate:
<?php print check_plain($title); ?>
#Twig:
{{ title|striptags }}
Перевод строки:
#PHPTemplate:
<?php print t('Home'); ?>
#Twig:
{{ 'Home'|t }}
Перевод строки с заменой:
#PHPTemplate:
- <?php print t('Welcome, @username', array('@username' => $user->name)); ?>
#Twig:
{{ 'Welcome, @username'|t({ '@username': user.name }) }}
Получить список элементов из массива
#PHPTemplate:
- <?php echo implode(', ', $usernames); ?>
#Twig:
{{ usernames | join(', ') }}
Использование функций:
#Twig:
- {% set createdDate = node.getCreatedTime|date('M d, Y') %}
- <time datetime="{{ createdDate }}">{{ createdDate }}</time>
Здесь естественно не весь список, а лишь основы, которые вы будете использовать в 90% случаях при создании вашей кастомной темы. Я же, в свою очередь будут стараться обновлять данный список. Если вы считаете, что в данном списке что-то не хватает, то пишем в комментариях.
UPD:
С помощью модуля twig_field_value - можно получить дополнительные форматы вывода полей. В описании модуля продемонстрированы примеры.
drupalfly.ru
Шпаргалка по Drupal 8 | Сергей Беляев
(статья периодически обновляется)
Кеширование
Отключение кеширования на время разработки - https://www.drupal.org/node/1903374 (при добавлении шаблонов в тему кеш все равно нужно сбрасывать, очистка кеша иногда занимает до минуты, поэтому сразу добавляйте по несколько шаблонов).
Хорошее руководство по темизации Drupal 8 - http://sqndr.github.io/d8-theming-guide/index.html.Подключение CSS/JS в теме - https://www.drupal.org/theme-guide/8/assets.Добавление регионов - https://www.drupal.org/theme-guide/8/adding-regions.Хуки темы, preprocess-функции в восьмерке добавляем в файл THEME.theme (аналог семерочного template.php).
Создание шаблона страницы для определенного типа материала
/** * Implements hook_theme_suggestions_HOOK_alter(). */function THEME_theme_suggestions_page_alter(array &$suggestions, array $variables) {if ($node = \Drupal::routeMatch()->getParameter('node')) { $content_type = $node->bundle(); $suggestions[] = 'page__' . $content_type; }}
Добавление плейсхолдера в поле ввода формы поиска
/*** Implements hook_form_alter()*/function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { if ('search_block_form' == $form_id) { $form['keys']['#attributes']['placeholder'][] = t('Search'); }}
Добавление заголовка страницы в хлебные крошки
Добавление названия сайта в переменную для шаблона страницы
function THEME_preprocess_page(&$variables) { $variables['site_name'] = \Drupal::config('system.site')->get('name');}
Создание шаблона для кастомного типа блока
function THEME_theme_suggestions_block_alter(array &$suggestions, array $variables) { if (isset($variables['elements']['content']['#block_content'])) { array_splice($suggestions, 1, 0, 'block__bundle__' . $variables['elements']['content']['#block_content']->bundle()); }}Пример создания опций темы
function THEME_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface &$form_state, $form_id = NULL) { // Work-around for a core bug affecting admin themes. See issue #943212. if (isset($form_id)) { return; }$form['custom_setting'] = array( '#type' => 'textfield', '#title' => t('Custom setting'), '#default_value' => theme_get_setting('custom_setting'), );}
Краткая справка по Twig - https://github.com/vito/chyrp/wiki/Twig-Reference.Путь к папке с темой - {{ base_path ~ directory }}.
sergeybelyaev.name
Drupal 8 темизация блока: добавить html, классы, изменить вывод блока
Блоки в Drupal 8 создаются пользователем или модулями и отображаются в регионах.Если необходимо управлять выводом блока Меню, Представления, тогда необходимо пользоваться хуком.Следующий код позволяет темизировать блоки, влиять на содержимое блоков, созданных модулями или пользователем, учитывая переменные окружения (id блока, роль пользователя, тип страницы, разрешение экрана и т.д.)
Темизация блоков с hook_theme_suggestions_block_alter()
Хуком hook_theme_suggestions_block_alter() можно пользоваться в своём модуле или теме, подставив название темы или модуля вместо слова hook.Идея suggestion (перевод: предложение) - предложить системе Drupal использовать определённые пользователем файлы шаблонов Твиг для вывода блоков. Проверяя содержимое переменой $variables, можно определить нужный блок или группу блоков и назначить им свой дополнительный файл шаблона block--mycooltemplate.html.twig
Для работы с блоком нужно следующее:
- Вставить хук в тему или модуль
- Определить собственный файл шаблона
Например, для изменения отображения блока, созданного модулем Hierarchical Taxonomy Menu, в теме themy хук определяется так:
- function themy_theme_suggestions_block_alter(array &$suggestions, array $variables) {
if ($variables['elements']['#id'] == 'block-hierarchicaltaxonomymenu') {
$suggestions[] = 'block__menu'; //show block using file block--menu.html.twig
}
}
Обратите внимание, в хуке используется нижнее подчёркивание block__menu, но это предложение будет указывать на имя файла, содержащее дефисы: block--menu.html.twig.
Далее нужно скопировать файл core/modules/block/templates/block.html.twig в папку templates темы, в данном случае так: /themes/themy/templates/block--menu.html.twig и добавить нужный html-код, классы или управлять отображением программно.
Предложенный хук также может влиять на отображение страниц hook_theme_suggestions_page_alter() или материалов hook_theme_suggestions_node_alter()
Другой полезный хук: template_preprocess_block()
Редактирование дизайна в Drupal 8
При редактировании дизайна необходимо сбрасывать кэш, чистить историю браузера и отключать кэширование Твиг.
www.tlito.ru
Ресурсы Drupal 8 | vDrupale
Причины быть в восторге от Drupal 8
- Symfony 2 как часть ядра
- Переработана темизация. Twig, HTML 5
- Улучшения в публикации контента, мобильно-ориентированность
- Улучшена поддержка мультиязычности
- RESTful веб-сервисы
- Управление конфигурацией
- API миграции
- и многое другое
Ресурсы которые помогут Вам начать работу с Drupal 8
Для разработчиков темPorting a Contrib Theme to Drupal 8: Get Twig-gy With It — практическое руководство по темизации с TwigTheming in Drupal 8 — Conversion of themes to Twig — еще один пример темизации с TwigTwigify — преобразует D7 php шаблоны темы в D8. Я (автор статьи) принимал участие в заседании по этому модулю в DrupalCon Portland, и это выглядит довольно интересно.Looking at Drupal 8's JavaScript Changes — Вы знали, что Backbone.js и Underscore.js включили в Drupal 8?Twig, Drupal 8's New Theme Layer — глубокий обзор изменений в темизации Drupal 8 (1 час видео)
A practical example for converting a Drupal 7 module to work with Drupal 8 — практический учебникDrupal 8: Hello OOP, Hello world! — сравнение создания модуля в D7 и D8Drupal 8 Module Development — разработка модуля для Drupal 8Drupal 8 Field API series — обзор Field API Drupal 8Creating Your First Simple Drupal 8 Module — 20 минутное видеоConfiguration Management and Features: a look at Drupal 8Drupalism — руководство по переходу с D7 на D8D8CX.org — различные ресурсы по D8
Для разработчиков сайтов, модераторов и администраторовTutorial: Drupal 8 Site Building preview — от нашего партнёра AcquiaGetting your site ready for Drupal 8 — ещё один великий пост от нашего партнёра AcquiaMultilingual Drupal 8 — обзор изменений и особенностей мультиязычности в D8
Общие ресурсы по D8Learning by Trial and Error — Installing and Touring Drupal 8 — 15 минутный видео-тур по D8Great Resources for Learning Drupal 8 — сборник статей и учебных пособийDrupal 8 links & resources — общая коллекция ресурсов на Github
Следите за событиямиDrupal 8 Wins — сборник твитов с хэштегом D8Follow Drupal8 News — на TwitterThis week in Core — еженедельные обзоры изменений в ядре
Покрутите Drupal 8Найдите минутку, чтобы попробовать Drupal 8 с помощью Simplytest.me
ВтягивайсяВ Drupal 8 уже 1700+ участников! В настоящее время сотни модулей находятся на стадии портирования. Вот несколько способов, как Вы можете принять участие
Следующий шаг — Drupal 8 betaКогда альфа станет бетой — недавняя статья Dries
vdrupale.com
8.9. Темизация Views Drupal 8. Создаем owl carousel слайдшоу с thumbnails.
Очень часто нас не устраивает шаблон Views, поэтому мы можем переопределить шаблоны для Views. К сожалению пока нет UI для поиска нужного шаблона во Views, но мы можем использовать паттерны для переопределения шаблонов.
Подробнее про темизацию Views смотрите в этом видео:
4.5.5.1. Подключаем jQuery OwlCarousel к Drupal 8 Views
9.10. Слайдшоу для Drupal 8
Подробнее о паттернах в этой статье:
8.6. Работа с шаблонами в Drupal 8. Какие есть шаблоны в ядре Drupal 8.
В частности нас интересует вот это:
Ниже возможные имена шаблонов для переопределения. Имя вьюса - foobar (машинное имя) Формат отображения - unformatted (неформатированный список, добавить возможные варианты) Стиль отображения записи - fields Имя дисплея - page views-view--foobar--page.html.twig views-view--page.html.twig views-view--foobar.html.twig views-view.html.twig views-view-unformatted--foobar--page.html.twig views-view-unformatted--page.html.twig views-view-unformatted--foobar.html.twig views-view-unformatted.html.twig views-view-fields--foobar--page.html.twig views-view-fields--page.html.twig views-view-fields--foobar.html.twig views-view-fields.html.twigДело в том что у плагина Owl Carousel 1.x нет возможности выводить thumbnail'ы к галереи. Поэтому мы будем использовать Owl Carousel версии 2.x, там есть поддержка thumbnail'ов. Если вы не хотите разбираться в переопределение шаблонов, написание CSS, Javascript кода, то можете просто поставить модуль Views Slideshow:
https://www.drupal.org/project/views_slideshow
Или модуль Flex Slider:
https://www.drupal.org/project/flexslider
На них вы сможете быстро настроить слайдшоу без знания CSS, jQuery.
Мы же будем практиковаться в переопределение шаблонов Views и подключение jQuery библиотек.
Для начала скачаем и подключим библиотеку Owl Carousel 2.x:
https://github.com/OwlCarousel2/OwlCarousel2
Возможно вы нашли версию Owl Carousel 1.x:
https://github.com/OwlFonk/OwlCarousel
Она нам не подойдет, в ней нет поддержки thumbnail'ов, для нее нужно писать дополнительный код.
Скопируем папку owl-carousel (где лежит файл owl.carousel.min.js) в папку с нашей темой, теперь давайте подключим файлы карусели css и js. В файл .libraries.yml темы мы добавляем следующие строчки:
global-styling: version: 1.x css: theme: owl-carousel/owl.carousel.css: {} owl-carousel/owl.theme.css: {} owl-carousel/owl.transitions.css: {} css/style.css: {} css/print.css: { media: print } js: js/custom.js: {} owl-carousel/owl.carousel.min.js: {} dependencies: - core/jqueryЯ не стал переносить js файлы в папке /js, css в папку /css, но вы можете это сделать, не забудьте тогда поправить пути в css файлах на картинки, которые я так полагаю вы положили в папку images.
Чтобы изменения применились нужно почистить кеш.
Теперь давайте создадим тип материала галерея и добавим в него поле изображение.
Скриншот типа материала.
Создаем новый view, где выводим одно поле изображение из нового типа материала.
Скриншот вью.
Теперь если вы посмотрите на вывод представления, то
Подробнее про темизацию Views смотрите в этом видео:
4.5.5.1. Подключаем jQuery OwlCarousel к Drupal 8 Views
9.10. Слайдшоу для Drupal 8
drupalbook.ru
8.9. Темизация Views Drupal 8. Создаем owl carousel слайдшоу с thumbnails.
Очень часто нас не устраивает шаблон Views, поэтому мы можем переопределить шаблоны для Views. К сожалению пока нет UI для поиска нужного шаблона во Views, но мы можем использовать паттерны для переопределения шаблонов.
Подробнее про темизацию Views смотрите в этом видео:
4.5.5.1. Подключаем jQuery OwlCarousel к Drupal 8 Views
9.10. Слайдшоу для Drupal 8
Подробнее о паттернах в этой статье:
8.6. Работа с шаблонами в Drupal 8. Какие есть шаблоны в ядре Drupal 8.
В частности нас интересует вот это:
Ниже возможные имена шаблонов для переопределения. Имя вьюса - foobar (машинное имя) Формат отображения - unformatted (неформатированный список, добавить возможные варианты) Стиль отображения записи - fields Имя дисплея - page views-view--foobar--page.html.twig views-view--page.html.twig views-view--foobar.html.twig views-view.html.twig views-view-unformatted--foobar--page.html.twig views-view-unformatted--page.html.twig views-view-unformatted--foobar.html.twig views-view-unformatted.html.twig views-view-fields--foobar--page.html.twig views-view-fields--page.html.twig views-view-fields--foobar.html.twig views-view-fields.html.twigДело в том что у плагина Owl Carousel 1.x нет возможности выводить thumbnail'ы к галереи. Поэтому мы будем использовать Owl Carousel версии 2.x, там есть поддержка thumbnail'ов. Если вы не хотите разбираться в переопределение шаблонов, написание CSS, Javascript кода, то можете просто поставить модуль Views Slideshow:
https://www.drupal.org/project/views_slideshow
Или модуль Flex Slider:
https://www.drupal.org/project/flexslider
На них вы сможете быстро настроить слайдшоу без знания CSS, jQuery.
Мы же будем практиковаться в переопределение шаблонов Views и подключение jQuery библиотек.
Для начала скачаем и подключим библиотеку Owl Carousel 2.x:
https://github.com/OwlCarousel2/OwlCarousel2
Возможно вы нашли версию Owl Carousel 1.x:
https://github.com/OwlFonk/OwlCarousel
Она нам не подойдет, в ней нет поддержки thumbnail'ов, для нее нужно писать дополнительный код.
Скопируем папку owl-carousel (где лежит файл owl.carousel.min.js) в папку с нашей темой, теперь давайте подключим файлы карусели css и js. В файл .libraries.yml темы мы добавляем следующие строчки:
global-styling: version: 1.x css: theme: owl-carousel/owl.carousel.css: {} owl-carousel/owl.theme.css: {} owl-carousel/owl.transitions.css: {} css/style.css: {} css/print.css: { media: print } js: js/custom.js: {} owl-carousel/owl.carousel.min.js: {} dependencies: - core/jqueryЯ не стал переносить js файлы в папке /js, css в папку /css, но вы можете это сделать, не забудьте тогда поправить пути в css файлах на картинки, которые я так полагаю вы положили в папку images.
Чтобы изменения применились нужно почистить кеш.
Теперь давайте создадим тип материала галерея и добавим в него поле изображение.
Скриншот типа материала.
Создаем новый view, где выводим одно поле изображение из нового типа материала.
Скриншот вью.
Теперь если вы посмотрите на вывод представления, то
Подробнее про темизацию Views смотрите в этом видео:
4.5.5.1. Подключаем jQuery OwlCarousel к Drupal 8 Views
9.10. Слайдшоу для Drupal 8
drupalbook.ru
Темизация сайта Drupal. Из чего состоит шаблон?
Привет, Всем!
Я надеюсь вы уже посмотрели краткое вступление в HTML и CSS. И теперь готовы создавать темы друпала на основе PSD макетов. Вот ниже ссылки на "учебники" HTML и CSS:
HTML
CSS
Дальше идут видео которые на первый взгляд могут быть тяжелыми для понимания, мы в следующих уроках подробно все разберем, так что не переживайте если вам будет что-то непонятно. Возвращайтесь к этой статье и используйте ее как справочный материал.
Вывод любого контента сайта Друпал происходит через шаблон, будь то Page или товар из каталога. Такая система очень удобная, она позволяет разделить вывод из базы данных и отображение выводимых данных. Из чего же состоит шаблон Друпала? Давайте откроем папку themes и посмотрим какие шаблоны там есть по умолчанию.
У меня это 6 тем:
- Bluemarine.
- Chameleon.
- Garland.
- Pushbutton.
- Marvin (вложена в Chameleon).
- Minnelli (вложена в Garland).
Откройте папку с шаблоном Chameleon, посмотрим из каких файлов он состоит.
Файл .info
Первый файл на который стоит обратить внимание - это файл Chameleon.info. Файл .info присутствует в каждой теме, в нем содержится информация о теме, CSS, javascript и некоторых других особенностях темы. Итак, изначально он выглядит так:
; $Id: chameleon.info,v 1.4 2007/07/01 23:27:31 goba Exp $ name = Chameleon description = Minimalist tabled theme with light colors. regions[left] = Left sidebar regions[right] = Right sidebar features[] = logo features[] = favicon features[] = name features[] = slogan stylesheets[all][] = style.css stylesheets[all][] = common.css version = VERSION core = 6.x ; Information added by drupal.org packaging script on 2010-08-11 version = "6.19" project = "drupal" datestamp = "1281559292"Давайте теперь подробно разберем, что значит каждая из строк.
; $Id: chameleon.info,v 1.4 2007/07/01 23:27:31 goba Exp $
Может отсутствовать в самодельных шаблонах.
name = Chameleon
Имя темы, читаемое, которое будет отображаться в админке при выборе темы.
description = Minimalist tabled theme with light colors.
Описание шаблона, также отображается при выборе темы.
regions[left] = Left sidebarregions[right] = Right sidebar
Регионы в которые выводятся блоки нашей темы. Между квадратными скобочками указывается машинное имя региона без пробелов и больших букв. После знака равно указывается имя региона, которое будет отображаться в разделе выбора отображаемых блоков.
features[] = logofeatures[] = faviconfeatures[] = namefeatures[] = slogan
Дает возможность выбирать через панель администирования тем:
stylesheets[all][] = style.cssstylesheets[all][] = common.css
Так подключаются таблицы стилей, Друпал автоматически пропишет путь к этим файлам и будет прикреплять к каждой странице.
; Information added by drupal.org packaging script on 2010-08-11
Информация добавленная при загрузке на Друпал.орг
version = 1.0
Порядковый номер версии темы.
core = 6.x
Версия Друпала для которой сделан этот шаблон.
project = "drupal"datestamp = "1281559292"
В документации по Друпалу отсутствует описание этого параметра, наверно он значит то что эта тема входит в Друпал. Однако настоятельно не рекомендуют писать project в создаваемой теме. Также не рекомендуют писать datestamp.
Приведу краткий список свойств файла .info:
- name имя темы
- description описание
- screenshot - скриншот темы
- version версия
- core для какой версии Друпала
- engine Движок используемый темой
- base theme - тема родитель
- regions - регионы сайта
- features - для изменения на странице настройки темы
- stylesheets - подключение CSS к теме
- scripts - подключение javascript к теме
- php Определяет минимальную версию php
Файлы .tpl.php
Откройте папку с другим шаблоном, например Garland. В папке будут лежать файлы вида имя_файла.tpl.php, это файлы шаблонов. То что файлы имеют такое расширение особенность файлов шаблонов не только в Друпале, но и в некоторых других шаблонизаторах. В теме Garland изначально присутствуют файлы с таким расширением:
- page.tpl.php
- maintenance-page.tpl.php
- node.tpl.php
- comment.tpl.php
- block.tpl.php
Файл page.tpl.php
Это основной шаблон всех страниц. Через него выводится весь контент (наши ноды различных контент типов Page, Story и др).
Давайте рассмотрим один из главных шаблонов сайта page.tpl.php. По умолчанию через этот шаблон выводятся все страницы сайта. Я не буду приводить весь код этого файла, он длинный, Вы и так можете его посмотреть на своем сайте. Этот файл состоит из HTML-кода и со вставленными в него php-переменными. Через эти переменные выводятся регионы, меню (primary_links и $secondary_links), логотип ($logo), слоган($site_slogan), миссия ($mission), а также другие, полный список всех переменных я напечатаю ниже.
Итак, страница формируется через шаблон page.tpl.php посредством заполением переменных, а как заполняются переменные? Заполняют переменные ядро Друпала (те файлы которые лежат в папке /includes и /modules), а также стороние модули, которые мы устанавливаем.
Файл maintenance-page.tpl.php
Копия page.tpl.php, служит для восстановления исходного шаблона. Возможно когда-нибудь и пригодится.
Файл node.tpl.php
Этот шаблон управляет выводом ноды или нескольких нод сразу. Ноды выводятся через переменную $content в файле page.tpl.php. Node.tpl.php какбы встраивается в Page.tpl.php.
Файл comment.tpl.php
Шаблон блока комментариев, через него определяется HTML-код комментариев.
Файл block.tpl.php
Выводит контент для блоков в заданном регионе. Этот шаблон необязательный и может быть переопределен копированием стандартного шаблона.
Файл template.php
Еще один важный файл темы, через него можно, используя специальные функции, перехватить значение переменных выводимых в page.tpl.php и переопределить их. Этому файлу мы посвятим отдельный урок позднее.
Переменные шаблонов .tpl.php
Списки переменных Вы можете посмотреть здесь, либо скачать документ .doc, а также обои рабочего стола с этими переменными:
Переменные файла page.tpl.php
Основные переменные:$base_path: URL-путь к папке с Drupal. Покрайней мере, он будет равен /.$css: массив CSS файлов для данной страницы.$directory: Путь к папке с текущей темой, например themes/garland или themes/garland/minelli.$is_front: Истина, если это главная страница. $logged_in: Истина, если пользователь авторизован.$is_admin: Истина, если пользователь авторизован под учетной записью администратора.
Метаданные страницы:$language: (объект) Язык сайта. $language->language содержит текстовое обозначение. $language->dir Содержит директиву языка, принимает значение 'ltr' или 'rtl' . $head_title: модифицированная версия заголовка страницы, используется в теге TITLE.$head: выводит секцию HEAD (включает в себя мета-теги, keyword tags).$styles: CSS стили страницы.$scripts: Файлы javascript, используемые на странице.$body_classes: множество CSS классов для тега BODY. Содержит переменные определяющие текущую разметку (множественные столбцы, единичный столбец), текущий путь и тд.
Идентификационные данные:$front_page: Адрес главной страницы. Так же включает языковой домен, или префикс.$logo: Адрес логотипа.$site_name: Название сайта, можно отключить в настройках темы.$site_slogan: Слоган сайта, можно отключить в настройках темы.$mission: Миссия сайта, можно отключить в настройках темы.
Навигация:$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: правая колонка.
Переменные подвала:$feed_icons: RSS лента текущей страницы.$footer_message: Текст подвала сайта.$footer : регион footer.$closure: Переменная определяющая конец страницы. Она должна быть после остального динамического содержимого.
Переменные файла block.tpl.php
$block->module - Модуль который создает блок$block->delta - Числовой идентификатор прикрепленый к каждому модулю.$block->subject - Заголовок блока.$block->content - Содержимое блока.$block->status - Статус блока (0 или 1)$block->region - Регион, в котором находится текущий блок.
вспомагательные переменные:$block_zebra: Выводит 'odd' и 'even' поочереди, взависимости от блока в регионе.$zebra: выводит то же самое что и $block_zebra но независимо от региона.$block_id: Счетчик зависящий от регионов.$id: выводит то же что и $block_id но не зависит от региона.$is_front: возвращает истину, когда вызывается на главной странице.$logged_in: возвращает истину когда текущий пользователь авторизирован.$is_admin: возвращает истину когда текущий пользователь администратор.
Список переменых в обоях рабочего стола (английская версия)
Список переменных Друпала в обоях рабочего стола 800X600 (русская версия)Список переменных Друпала в обоях рабочего стола 1024X768 (русская версия)Список переменных Друпала в обоях рабочего стола 1280X1024 (русская версия)Список переменных Друпала в обоях рабочего стола 1920X1080 (русская версия) - русская версия обоев предоставлена сайтом www.fish-drink.ru
drupalbook.ru