Многим, кто занимается разработкой тем для 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 |
На этом все. Не многословно, но упорядоченно 🙂
Спонсоры статьи: