...

Наводим порядок в темах Drupal

Многим, кто занимается разработкой тем для Drupal, известно насколько широким механизмом переопределения шаблонов располагает Drupal. Но в этом очевидном плюсе есть и свои недостатки, благодаря тому, что вы можете переопределить большое количество шаблонов, в скором времени ваша тема может стать «свалкой» файлов. И тот, кто увидит это может испугаться 🙂 Но этот, казалось бы, недостаток лечится еще одним достоинством Drupal, суть которого в том, что вы можете упорядочить все шаблоны различных элементов страницы по папкам согласно модулей, которые их предоставляют.

 

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

Как я и говорил выше, вы можете сгруппировать все ваши файлы шаблонов в подкаталоги по типу базового шаблона (т.е. page, node, block, view). Например, так:

theme-name/templates/page/page.tpl.php
theme-name/templates/page/page-front.tpl.php
theme-name/templates/node/node.tpl.php
theme-name/templates/node/node-blog.tpl.php
theme-name/templates/views/views-view.tpl.php
theme-name/templates/views/views-view-fields--directory.tpl.php
theme-name/templates/views/views-view-field--user-list.tpl.php
theme-name/templates/block/block.tpl.php
theme-name/templates/block/block-footer.tpl.php
theme-name/templates/block/block-login.tpl.php

По официальной информации, для того чтобы это работало, чтобы Drupal распознал местоположение ваших шаблонов, в директории соответствующего узла должен присутствовать базовый файл шаблона. Например, файл node.tpl.php, должен быть в папке node/, прежде чем любые другие производные шаблоны типа ноды будут распознаны системой. Однако на практике я пробовал использовать папки с шаблонами без базового файла и это работало в Drupal 7, не скажу такого же про Drupal 6.

CSS, Javascript и картинки

Стандартный вариант размещения этих файлов в теме такой:

theme-name/js/
theme-name/css/
theme-name/images/

Но есть еще один вариант, как сделать это более упорядоченным, все эти директории можно поместить в общий каталог /assets:

theme-name/assets/js/
theme-name/assets/css/
theme-name/assets/images/

template.php

Если вы пишите много кастомных функций в этом файле и он становится огромных размеров, то вы можете разбить его на части для большего удобства чтения. Для этого можно использовать PHP инструкцию require и поместить ее в template.php, например, по хукам, которые выполняются:

require "template-overrides.php";
require "template-preprocess.php"; // Whatever code you want to stay in template.php

И соответственно вы получите такой вид фалов вашей темы:

theme-name/template.php
theme-name/template-overrides.php
theme-name/template-preprocess.php

На этом все. Не многословно, но упорядоченно 🙂

Спонсоры статьи:
Оцените статью
Добавить комментарий