Темизация drupal: назначение папок и файлов темы, создание подтемы. Drupal редактирование шаблона


файлы шаблона и подтемы (Sub-theme)

Здравствуйте, уважаемые читатели! Это третья и, пожалуй, заключительная статья в рамках базового курса, посвященная темам Drupal. В ней я расскажу о темизации Drupal, а если говорить по-русски, то о том, как устроены шаблоны. Эти знания помогут вам отредактировать внешний вид сайта по своему разумению и довести его до ума.

Темизация drupal

Все установленные в Drupal темы лежат в директории /sites/all/themes каждая в своей папке. Чаще всего в теме присутствуют следующие каталоги:

Кроме этого, в корневой директории лежат следующие файлы:

Шаблоны темы Drupal

Шаблоны отвечают за формирование какого-то определенного элемента страницы. При этом соблюдается некоторая иерархия, которая заключается в том, что одни шаблоны задействуют в себе другие шаблоны (подключают их). Это напоминает матрешку — более мелкие элементы объединяются в более крупные.

Для лучшего понимания обратимся к рисунку. На нем представлена структура файлов и каталогов темы под названием example.

Структура

Здесь цветами показано, какой шаблон за какую область страницы отвечает:

К примеру, comment-wrapper.tpl.php задействует шаблон comment.tpl.php для вывода оставленных пользователями комментариев и добавляет к ним форму для создания нового сообщения, в свою очередь node.tpl.php подключает к себе шаблон comment-wrapper.tpl.php и еще добавляет вывод содержимого страницы (материала).

Если один из шаблонов отсутствует, то используется шаблон по умолчанию, заданный в ядре Drupal.

Создание отдельного шаблона Drupal для главной страницы

Что делать, если нужно поменять оформление или содержание главной страницы сайта не затрагивая все остальные? Такая проблема очень часто встречается на практике. Например, вывести над анонсами статей в области контента поле для справок или список текущих конкурсов. Казалось бы, надо добавить в шаблон page.tpl.php пару строчек кода! Нет, все не так просто. В этом случае поле для справок будет выводится на всех страницах, а не только на главной.

Проблема решается элегантно и просто — для главной нужно создать отельный шаблон page--front.tpl.php. Порядок действий следующий.

1. Чаще всего за основу шаблона для главной страницы берется page.tpl.php. Скачиваем этот файл из используемой темы Drupal к себе на компьютер, переименовываем в page--front.tpl.php и загружаем обратно в папку с другими шаблонами. Для работы с сервером советую использовать бесплатный ftp клиент FileZilla. Меня еще никогда не подводил!

2. Открываем продвинутым редактором кода Notepad++ файл page--front.tpl.php и добавляем наш код для поля со справками.

3. Чтобы Drupal подхватил новый шаблон, необходимо почистить кэш: «Конфигурация» — «Разработка» — «Производительность» — кнопка «Очистить кэш». Настоятельно рекомендую использовать модуль Administration menu.

Вот и все!

Создание отдельного шаблона для определенного типа материалов

Идем дальше в своих изысканиях. Теперь нам захотелось выделить определенные типы материалов. Например, статьи (машинное имя: post). В этом случае последовательность действий будет следующая.

1. Заходим на сервер в папку с активной темой Drupal и открываем на редактирование файл template.php. Прописываем в нем следующую функцию.

function НАЗВАНИЕТЕМЫ_preprocess_page(&$vars, $hook) { if (isset($vars['node'])) { $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type); } }

Не забудьте вписать в код название темы, после чего сохраните файл template.php.

2. Далее можно создавать отдельный шаблон для определенного типа материала Drupal. В общем виде он будет называться так: page--ТИПМАТЕРИАЛА.tpl.php. Для примера со статьей: page--post.php. За его основу можно взять файл page.tpl.php.

3. Не забудьте очистить кэш!!!

Sub-themes (подтемы)

Sub-themes — такие темы не имеют полного комплекта шаблонов, они просто задействуют некоторые шаблоны из другой темы (родительской). Это обязательно должно быть прописано в файле НАЗВАНИЕ_ТЕМЫ.info. При этом, родительская тема должна быть включена в Drupal, а подтема включена и установлена по умолчанию. В свою очередь родительская тема может быть подтемой для другой темы. Таким образом, в Drupal возможна иерархия тем.

На этом на сегодня все. Материал может показаться несколько сложным, все эти папки, файлы, шаблоны Drupal и подтемы, но тут главное уловить суть, понять. Как только придет понимание — все встанет на свои места. Спасибо за внимание! Берегите себя.

Лучший способ выразить благодарность автору - поделиться с друзьями!

Узнавайте о появлении нового материала первым! Подпишитесь на обновления по email:

Следите за обновлениями в Twitter и RSS.

fairheart.ru

Темизация формы создания/редактирования ноды в друпал

Рассмотрим один из способов темизации формы создания/редактирования ноды в друпале, путем перекрытия своим шаблоном.

(Актуально для Drupal 6)

В файле template.php перекрываем шаблон формы:

  1. function название_темы_theme($existing, $type, $theme, $path){

  2. 'тип_материала_node_form' => array(
  3. 'arguments' => array('form' => NULL),
  4. 'template' => 'имя_шаблона'

  5. )

  6. );

  7. }

Создаем файл шаблона имя_шаблона.tpl.php в котором имеем доступный массив $form для темизации формы.

Теперь можно темизировать. Самый простой пример, завернем поле body в нужную нам обертку. Наш шаблон в результате будет выглядеть так:

  1. $form['body_field']['#prefix'] = '<div>';

  2. $form['body_field']['#suffix'] = '</div>';

  3. print drupal_render($form);

В Drupal 7 немного проще - используем функцию theme_form_alter(). Вот пример:

  1. function mytheme_form_alter(&$form, &$form_state, $form_id) {

  2.  

  3. if ($form_id == 'views_exposed_form') {

  4.  

  5. $form['field_adv_price_value']['min']['#title'] = t('from:');

  6. $form['field_adv_price_value']['max']['#title'] = t('to:');

  7.  

  8. $form['field_adv_roomsnumber_value']['min']['#title'] = t('from:');

  9. $form['field_adv_roomsnumber_value']['max']['#title'] = t('to:');

  10. }

  11.  

  12. if ($form_id == 'advertisement_node_form') {

  13.  

  14. global $user;

  15.  

  16. if ($user->uid == 0) {

  17. unset($form['field_adv_area']);
  18. unset($form['field_adv_roomsnumber']);
  19. unset($form['field_adv_description']);
  20. unset($form['field_adv_specification']);
  21. }

  22. }

  23. }

З.Ы.При помощи модуля Devel можно посмотреть весь массив $form, хотя может кому-нибудь и простого print_r() хватит :)

drunkcat.ru

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

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

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

Ниже приведён рисунок, который отражает "анатомию" темы в Друпале. Обратите внимание на цвет перед именем шаблона и цвет на макете сайта: наглядно показано какой шаблон за какую часть сайта отвечает. Например, html.tpl.php включает в себя разметку полной html страницы (DOCTYPE, <head>, <body>), а page.tpl.php отвечает за вывод содержимого (внутри тэга <body>). На рисунке показана тема с названием example.

theme7_anatomy.png

.info файл (обязателен)

Как я уже говорил - всё, что нужно Друпалу, чтобы найти тему - это .info файл. Здесь могут быть описаны файлы стилей (css), javascript, метаданные, блоки. Именно могут быть описаны, но не являются обязательными. О том, что является в .info файле обязательным для заполнения, я расскажу в следующей статье.

Этот файл описывает имя темы, которое будет видно при работе с сайтом, а так же имя файла, которое будет использоваться для вызова функций темы (опять же - об этом чуть позже). Например, если .info файл назвать themename.info, а внутри файл указать name = Theme Name, то на сайте эта тема будет названа именно Theme Name, но в качестве имени темы для функций должно использоваться themename.

Файлы шаблонов (.tpl.php)

Эти шаблоны используются для (X)HTML разметки и вывода PHP переменных. В некоторых случаях они могут использоваться для вывода других типов данных, например, XML или RSS. Каждый файл.tpl.php управляет выводом определённой части (темизируемых) данных. В некоторых случаях шаблоны могут перекрывать друг друга при помощи системы возможных вариантов отображения данных (suggestions).

Присутствие каждого файла шаблона в теме необязательно. Отсутствие шаблона приведёт лишь к использованию его стандартного прототипа из ядра Drupal 7. Огромная просьба - никогда не пишите в этих файлах объёмные фрагменты php кода. Для этого есть template.php. Файлы шаблонов должны оставаться лишь файлами шаблонов, а никак не слоем для реализации какой-либо логики.

Для того, чтобы Drupal понял, что необходимо использовать шаблон из темы, а не из ядра, достаточно скопировать его в корень темы и сбросить кэш регистра темы. В этом может помочь Drush либо Admin menu. Если не хотите разбираться с дополнительным функционалом - просто очистите кэш всего сайта.

Вообще, кэш регистра темы необходимо очищать в следующих ситуациях:

template.php

Данный файл используется как площадка для написания php кода. Здесь необходимо описывать всю логику темы. Файл template.php не является обязательным, однако в большинстве тем он всё же присутствует как минимум для предварительной обработки данных, или создания новых переменных для файлов шаблонов .tpl.php.

Неважно, что именно вы пишете - свои функции, или перекрываете функции темы - всё это должно находиться в template.php. Файл начинается с открывающегося тэга <?php. Однако использовать закрывающий тэг ?> не рекомендуется по причинам возможных ошибок php.

Подтемы (саб-темы)

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

Остальные файлы

drupalace.ru

Шаблоны страниц и нод в Drupal 7

Страница обслуживания

maintenance-page--[offline].tpl.php

maintenance-page.tpl.php - шаблон страницы обслуживания. Отображается когда включен режим обслуживания сайта. И часто эта страница выглядит некрасиво, если её не менять. Для этого и существует шаблон maintenance-page.tpl.php.

maintenance-page--offline.tpl.php - шаблон страницы, отображающийся при ошибках, связанных с базой данных.

У этих двух шаблонов есть особенность - они включают в себя полную разметку HTML страницы, т.е. содержит всю страницу целиком, включая head и body.

Шаблоны нод

node--[type|nodeid].tpl.php

Пожалуй самые используемые шаблоны, т.к. довольно часто необходимо изменить разметку для ноды или для всех нод одного типа. Например, необходимо сделать страницу товара. У товара есть поля, которые необходимо вывести в определённых местах страницы. Это можно сделать очень просто, создав шаблон для определённого типа ноды товара.

Базовый шаблон, используемый для отображения любых нод называется node.tpl.php.

Шаблоны страниц

page--[front|internal/path].tpl.php

Базовый шаблон для страниц: page.tpl.php.

UPD: Этим способом можно переопределить шаблон страницы Drupal, выводимой через модуль Views. Для этого нужно создать новый шаблон page--[viewurl], где viewurl - путь страницы. Например, для страницы http://site.ru/views-page/ нужно создать шаблон с именем page--views-page.tpl.php.

Подробнее про шаблоны views я написал в отдельной статье: Шаблоны блоков, страниц, полей для модуля views Drupal 7.

UPD: В Drupal 7 нет стандартных шаблонов для страниц ошибок 404, 403. Так же, по умолчанию нет возможности объявить свой шаблон страницы для отпределённых типов нод. Но это легко реализуется. Как это сделать можно прочитать здесь: Создание кастомных шаблонов в теме Drupal 7.

Про шаблоны блоков, комментариев и полей вы можете почитать в соотвествующей статье: Шаблоны блоков, комментариев и полей Drupal 7.

Так же, есть очень хорошая статья (Drupal 7 Template (Theme Hook) Suggestions) на официальном сайте Drupal, где описываются еще шаблоны форума, голосований, таксономии и т.д.: https://drupal.org/node/1089656

nikitakiselev.ru

Свой дизайн на Друпал 8

Друпал 8 - интеллектуальная система, в руках разработчика предсталяет набор функциональных возможностей. Освоение системы начинается с редактирования дизайна сайта.Структура документа:

Если вы хотите визуальной информации по разработке темы для Друпал 8, тут видео Theme Development for Drupal 8 https://www.youtube.com/watch?v=zTX3jrPCKWsНиже идет теоретическая методология и шпаргалка верстальщика.

 

Как работать над дизайном сайта

После установки Drupal 8 нужно скачать любую контрибную тему из Обзора шаблонов для Drupal 8 и в ней верстать нужный вам макет. Этого нельзя делать в стандартных темах bartik, stark, так как есть правила доработки Друпала.

Видеоурок о FireBug поясняет как правильно менять внешний вид сайта, исследуя стили и внося изменения в нужный файл стилей. Файлы стилей, как правило, располагаются в папке css вашей темы. Редактирование css-файлов не требует чистки кэша (если у вас не включена опция "Объединение CSS-файлов" в Конфигурация - Производительность). С помощью CSS можно вполне доработать внешний вид, скрыть ненужные элементы. А с помощью блоков можно разместить нужные элементы в правильных местах.

Если нужно переделать структуру сайта, добавить регионы, задавать собственные шаблоны отдельных страниц (главной или лендингов), изменять положение элементов по условиям, тогда в Друпал 8 нужно исследовать и освоить Twig - язык разметки шаблонов - и редактировать файлы шаблонов. Что-то по Твигу есть тут http://x-twig.ru/ (по ссылке с адаптивностью на данный момент проблемы).

Все файлы шаблонов в 8 Друпале написаны на Твиге, хотя в 7ке всё было на простом пхп.

Шаблоны - это файлы вашей темы с расширением .twig, которые задают способ отображения различных частей сайта. Шаблоны располагаются обычно в папке templates вашей темы. Шаблон отображения страницы и шаблон отображения содержимого материала - это два разных файла. Первый друпал использует 1 раз, а второй может использовать несколько раз, если на странице отображаются несколько материалов. То же актуально для регионов, блоков, комментариев, поиска, меню.

В коде шаблона можно пользоваться различными переменными, вызывать функции друпала, подгружать данные из базы данных. Также переменные можно определить в файле mytheme.theme, который обычно подгружает переменные, задаваемые через админку, глобальные переменные, а также меняет некоторые стандартные функции друпала при необходимости, то есть, содержит хуки.

Всегда, когда вы редактируете шаблон и закачиваете на сервер, нужно очищать кэш сайта так: Конфигурация - Производительность - Очистка кэша /admin/config/development/performance. Чтобы не чистить кэш и быстрее редактировать дизайн, нужно отключить кэширование Твиг. Нередко при ошибках в шаблоне друпал показывает белый экран и системную ошибку, тогда надо исправить файл шаблона или удалить этот файл, или сменить тему в админке /admin/appearance .

 

Предлагаю перевод статьи Template naming conventions.

Именование файлов шаблонов в Drupal 8

Файлы шаблонов имеются в ядре Drupal 8 ( в папке /core/modules/system/templates ) - их нельзя редактировать согласно правил доработки Drupal 8. Также некоторые файлы шаблонов присутствуют в контрибных темах ( в папке templates темы ) и служат для переопределения вывода и создания нужной разработчику логики, структуры шаблона.

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

После загрузки файла шаблона на сервер чистите кэш сайта через админку Друпала.

Вы можете отлаживать шаблоны Твига или определять, какие шаблоны использовались при отображении любого интересующего вас элемента.

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

 

HTML, шаблон заголовка <head>

Шаблон HTML-документа содержит базовую разметку и задаёт параметры тегов <html>, <title>, <body>.

Базовый файл: html.html.twig, он расположен тут core/modules/system/templates/html.html.twig

Вот некоторые примеры использования этого файла в собственных шаблонах:

  1. html--internalviewpath.html.twig
  2. html--node--id.html.twig
  3. html.html.twig

Исследуя любую тему, например, Bartik, можно обнаружить, что файл html.html.twig расположен в папке темы templates. В вашей теме вы так можете добавить тег адаптивности или обозначить классы главных элементов html-документов, дописать любой html-код. Друпал будет формировать страницы сайта, пользуясь этим файлом шаблона.

Официальная документация о html.html.twig.

 

Шаблон страницы page.html.twig

Шаблон имени: page--[front|internal/path].html.twigБазовый файл: page.html.twig (расположение: core/modules/system/templates/page.html.twig)

Содержит много строк. Шаблон главной страницы также задаётся файлом page--front.html.twig, он является приоритетным. Если нужно изменить вывод главной, можно пользоваться админкой: Управлять - Конфигурация - О сайте - Главная страница /admin/config/system/site-information .

Используемые файлы шаблонов подгружаются в порядке спецификации, основанной на внутренних путях. Так например для страницы /node/1/edit будут использованы такие имена файлов шаблонов:

  1. page--node--edit.html.twig
  2. page--node--1.html.twig
  3. page--node.html.twig
  4. page.html.twig

Подробнее в официальной документации о page.tpl.php.

 

Регионы

Шаблон имени: region--[region].html.twigБазовый файл: region.html.twig (расположение: core/modules/system/templates/region.html.twig)

Файл шаблона региона используется при отображении каждого региона, имеющего содержимое. Он вызывается модулем ядра Block или любой функцией типа hook_page_build(). Имена регионов могут задаваться в файле темы mytheme.info.yml.

Официальная документация по region.html.twig.

 

Блоки

Шаблон имени: block--[module|-delta]].html.twigБазовый файл: block.html.twig (расположение: core/modules/block/templates/block.html.twig)

  1. block--module--delta.html.twig
  2. block--module.html.twig
  3. block.html.twig

В предложенных именах "module" - системное имя модуля, "delta" - системное название, присвоенное блоку этим модулем.

Пример:block--block--1.html.twig - этот файл шаблона будет использоваться для отображения блока с номером 1 из Библиотеки пользовательских блоков, то есть созданного тут admin/structure/block/block-content.Имена шаблонов блоков, использующие нумерацию внутри региона, не поддерживаются в Друпал 8.

Если нужно задать шаблон отображения блока, созданного некоторым модулем, например mymodule, и допустим, модуль присвоил блоку внутреннее имя (delta): my-block, тогда нужно использовать имя: block--mymodule--my-block.html.twig .

Пример для блоков Views.Если вы создали Представление с системным именем front_news и задали вывод в блок с системным именем block_1, тогда имя шаблона должно сформироваться так: block--front-news--block-1.html.twig. Обратите внимание

в именах файлов шаблонов нижнее подчеркивание "_" заменяется на дефис "-"

Также имейте ввиду, имена модулей чувствительны к регистру в этом случае. Так что для модуля с системным именем MyModule шаблон HTML будет иметь имя MyModule.html.twig, шаблон блока - block--MyModule--delta.html.twig

Подробнее читайте официальную документацию по block.html.twig.

 

Материалы

Шаблон имени: node--[type|nodeid]--[viewmode].html.twigБазовый файл: node.html.twig (расположение: core/modules/node/templates/node.html.twig)

Имеющиеся в теме файлы шаблонов материалов будут использоваться по приоритетам, согласно внутренним путям: более точное имя файла имеет приоритет над более общим. То есть так:

  1. node--nodeid--viewmode.html.twig
  2. node--nodeid.html.twig
  3. node--type--viewmode.html.twig
  4. node--type.html.twig
  5. node--viewmode.html.twig
  6. node.html.twig

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

Отметим, нижние подчеркивания всегда заменяются дефисами в именах файлов шаблонов.

Читайте официальную документацию по node.html.twig.

 

Термины таксономии

Шаблон имени: taxonomy-term--[vocabulary-machine-name|tid].html.twigБазовый файл: taxonomy-term.html.twig (расположение: core/modules/taxonomy/templates/taxonomy-term.html.twig)

Как и все другие шаблоны, файлы имеют порядок выбора - более специальное имя файла будет приоритетным.

  1. taxonomy-term--tid.html.twig
  2. taxonomy-term--vocabulary-machine-name.html.twig
  3. taxonomy-term.html.twig

Не забудьте менять нижнее подчёркивание на дефис в имени файла.

Официальная документация по taxonomy-term.html.twig.

 

Поля

Шаблон имени: field--[type|name[--content-type]|content-type].html.twigБазовый файл: field.html.twig (расположение: core/modules/system/templates/field.html.twig)

Поля тоже имеют шаблоны отображения. В этих шаблонах можно сократить обёртки, перегруппировать элементы или ограничить их количество, добавить классы. Подключая скрипт слайдера, вам наверняка понадобится использовать шаблон нужного поля (поля "картинка слайда" в материале типа "Слайд").

Шаблоны используются по приоритетам в следующем порядке:

  1. field--field-name--content-type.html.twig
  2. field--content-type.html.twig
  3. field--field-name.html.twig
  4. field--field-type.html.twig
  5. field.html.twig

Меняйте нижнее подчёркивание на дефис и добавляйте "field-" к имени поля, например, fiield--field-slide.html.twig.

Официальная документация по field.html.twig.

 

Комментарии

Шаблон имени: comment-wrapper--node-[type].html.twigБазовый файл: comment-wrapper.html.twig

Задаёт параметры отображения и html-разметку каждого комментария.

 

Форумы

Шаблон имени: forums--[[container|topic]--forumID].html.twigБазовый файл: forums.html.twig (расположение: core/modules/forum/templates/forums.html.twig)

Разделы форума управляются шаблонами:

  1. forums--containers--forumID.html.twig
  2. forums--forumID.html.twig
  3. forums--containers.html.twig
  4. forums.html.twig

Страницы топиков управляются шаблонами:

  1. forums--topics--forumID.html.twig
  2. forums--forumID.html.twig
  3. forums--topics.html.twig
  4. forums.html.twig

Официальная документация по forums.html.twig.

 

Страница сообщения о техническом обслуживании

Шаблон имени: maintenance-page--[offline].html.twigБазовый файл: maintenance-page.html.twig (расположение: core/modules/system/templates/maintenance-page.html.twig)

Эта страница появляется, когда не работает база данных. Полезно использовать для отображения читабельной страницы без сообщений об ошибках. Настройка этой страницы описана тут Theming the maintenance page

Официальная документация по maintenance.html.twig.

 

Страница результатов поиска

Шаблон имени: search-result--[searchType].html.twigБазовый файл: search-result.html.twig (расположение: core/modules/search/templates/search-result.html.twig)

Файл search-result.html.twig можно скопировать в тему и использовать для настройки общей страницы поиска и индивидуальных. В зависимости от типа поиска могут использоваться различные разметки. Например, для страницы example.com/search/node/Search+Term Друпал будет искать файл search-result--node.html.twig или, если такого нет, использует стандартный файл шаблона поиска. Для страницы поиска типа example.com/search/user/bob файл шаблона должен называться search-result--user.html.twig. Есть возможность расширить с помощь модулей (расширений) типы поиска и добавить больше шаблонов.

Официальная документация по search-result.html.twig.

 Добавление от тлито 

Страница пользователя user.html.twig

Базовый файл: user.html.twig (расположение: core/modules/user/templates/user.html.twig)

Официальная документация по user.html.twig.

 

Пример разработки темы: Как перенести HTML-шаблон на Друпал, видео

 

 

Ответы на вопросы

1 Как мне настроить собственный внешний вид для конкретной страницы на Друпале 8?

Если это страница материала, используйте в папке темы templates файл page--node--1.html.twig, где 1 - это id материала (можно узнать при редактировании в адресной строке).Если это другой тип страницы (Представление, Главная, Термин, Страница пользователя), тогда найдите соответствующий файл шаблона в папке ядра core/modules/search/templates/, скопируйте в папку темы templates, задайте в имени файла правильный идентификатор страницы и редактируйте.

2 Что делать, если изменения в файле шаблона не дают результат?

Очистите кэш, как об этом написано в уроке выше, отключите кэширование Твиг, убедитесь в правильности имени файла, научитесь дебажить Твиг, в частности, определять подключенные файлы шаблонов, как написано тут https://www.drupal.org/node/2358785

3 Будут ли ещё переводы статей о дизайне, Твиге и доработке Друпала?

Да. Чтобы повлиять на выбор статей для перевода, оставляйте вопросы или темы на форуме.

4 Какой шаблон на Друпал 8 более менее подходящий для блога, магазина, сайта компании?

Paxton, BusinessGroup Zymphonies Theme, Drupal8 Zymphonies Theme, Professional Responsive Theme. Обзор шаблонов для 8 Друпала есть на тлито ру. Используйте поиск тем по друпал.орг.

5 Стоит ли использовать Друпал 8 для сайта компании?

Если у вас нет опыта использования кода и функций Друпал, вы не знаете как искать ответы на вопросы, но вам понадобятся сложные функции, типа слайдер, связи материалов, тогда Друпал 7 будет более правильным решением, так как для него есть много модулей. Для Друпал 8 мало расширений, поэтому на нём можно делать только небольшие сайты компаний, типа блог и пять страниц меню.

6 Как начать изучение кода Друпал 8 ?

Я думаю, что стоит открыть несколько сайтов с разнообразным набором функций: форум, поиск музыки, городской сайт, фотосайт с голосованием и комментариями. Тогда, может быть, вы освоите систему, дорабатывая функции на каждом сайте.Если вы готовы читать теорию, то на Друпал.орг есть кнопка Documentation.

www.tlito.ru

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

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

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

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

/** * Implementation of template_preprocess_page(). */ function ИМЯТЕМЫ_preprocess_page(&$variables) { if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); $sug[] = 'page-node-type-' . $node->type; $variables['template_files'] = $sug; } } ?>

Теперь друпал научится понимать шаблоны, построенные по любому типу ноды (если вы их перекрыли).

Пример: для типа материала story шаблон будет выглядеть так:

page-node-type-story.tpl.php

Сейчас я немного поясню код. Для этого мне придётся рассказать о функции arg(). Она возвращает составные части текущего урла страницы. То есть для страницы http://drupalace.ru/node/add/lesson оно вернёт:

arg(0) вернёт node arg(1) вернёт add arg(2) вернёт lesson

Значит, этой строкой я убеждаюсь, что нахожусь на странице с нодой (т.к. страница с нодой строится по урлу имяСайта/node/нид):

if (arg(0) == 'node' && is_numeric(arg(1))) {

Далее всё вообще прозрачно:

$node = node_load(arg(1)); //загружаю ноду, т.к. arg(1) на этой странице будет равен nid ноды $sug[] = 'page-node-type-'.$node->type; //создаю шаблон как мне хочется $variables['template_files'] = $sug; //передаю записанный шаблон для его обработки

Да, и ещё - arg() возвращает ДЕЙСТВИТЕЛЬНОЕ значение урла, т.е. даже если у вас на сайте стоит модуль pathauto и страница ноды выглядит не по шаблону имяСайта/node/нид, то arg() всё равно будет возвращать именно значения node и нид.

Применяется это к любым шаблонам и страницам. Просто я делал всё на примере node.

Вот и вся хитрость. Таким же образом можно создать себе шаблоны на абсолютно любой случай жизни :)

UPDATE

Код вывода немного оптимизировался:

/** * Implementation of template_preprocess_page(). */ function ИМЯТЕМЫ_preprocess_page(&$variables) { if (isset($variables['node']) && $variables['node']->type) { $variables['template_files'][] = 'page-node-type-' . $variables['node']->type; } }

drupalace.ru

Создание своего шаблона для Drupal 7 на конкретном примере. Часть 1.

Сегодня хочу затронуть такую тему как создание собственного шаблона для Drupal 7, на конкретном примере. Этому делу, будет посвящено несколько уроков, которые я думаю помогут вам разобраться в принципах построения своего шаблона. Для опытных пользователей данной системы, допил свёрстанного дизайна под Drupal не составляет особого труда, но вот для новичков – тема сложновата и усложняется она ещё и тем, что в рунете практически нет какого либо описания построения шаблона, - есть какие то обобщённые данные, я попытаюсь устранить данный пробел своими статьями. Итак приступим:

Для начала нам необходимы исходные данные, а именно свёрстанный (HTML и CSS) шаблон. В просторах интернета их достаточно много. Я же вам предлагаю взять мои исходники, которые будут использоваться в примерах, скачать его можно вот отсюда, а выглядеть он будет вот так:

Как мы видим, структура совершенно простая. Давайте откроем папку с исходными файлами и посмотрим из чего состоит наш с вами дизайн:

Набор файлов скуден честно говоря, внутри находится индексный файл (index.html), стили (style.css), и папка с картинками (images). Теперь приступим к созданию, для начала нам нужно создать папку с названием вашего шаблона (название берём из головы) в директории вашего сайта, я назову его «modeldrupal», а именно идём по пути

sites/all/themes/название_вашего_шаблона

Внутри папки создаём файл

Название_вашего_шаблона.info

В этом файле у вас будет храниться вся необходимая информация о данном шаблоне, которая необходима для Drupal.

И пишем вот такую структуру:

name = modelDrupal description = new themes for drupal modelDrupal package = Core version = VERSION core = 7.x stylesheets[all][] = style.css

Полный список доступных значений для info файла можно прочитать вот здесь. Для того что бы данный шаблон появился в админке вашего сайта, наличие данного файла будет достаточно, давайте посмотрим, переходим в раздел оформление:

И видим, что для полного отображения нам не хватает скриншота темы, поэтому сделаем скриншот свёрстанного дизайна и поместим его в корень нашего с вами шаблона, название ему необходимо дать как:

screenshot.png

Расширение файла может мыть как «png» так и «jpg», в моём случае это – png. Обновляем страницу и смотрим что у нас из этого получилось:

Как мы видим, для него так же доступна опция «Включить и установить по умолчанию» я вам не советую этого делать, так как это приведёт лишь к белой странице. Теперь нам необходимо создать каркас нашего шаблона, который формирует index.html и повешенные на него стили, для этого копируем папку с картинками, index.html и style.css в корень нашего шаблона, на деле должно выглядеть вот так:

Если вы читали мои предыдущие статьи по темизации, то вы наверняка знаете, что за каркас страницы в Drupal 7 отвечает файл

page.tpl.php

Поэтому, переименуем файл index.html в page.tpl.php. И теперь, если мы активируем наш шаблон в админке и поставим его по умолчанию, то вывод любой странице на сайте будет именно такой как в нашем дизайне. Давайте посмотрим как выглядит сайт после выше перечисленных манипуляций:

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

page.tpl.php

И в начало URL каждого изображения подставляем вот такую конструкцию, изображений у нас всего 4

/sites/all/themes/modaldrupal/

Сохраняем и смотрим, какие изменения произошли у нас на сайте:

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

drupalfly.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта