В одном из проектов потребовалось создать свои шаблоны темы Drupal 7 для некоторых страниц. Например, в Drupal 7 нет кастомного шаблона для 404 ошибки (что-то типа page--404.tpl.php). Если нужно задать разметку страницы (page.tpl.php) для всех нод одного типа (например у всех нод одного типа убрать заголовки страниц), то нужно самому добавить в тему такие шаблоны.
Все это делается в файле темы template.php
. Здесь в хуке THEME_preprocess_page
(вместо THEME - название Вашей темы) пишется следующая конструкция:
function THEME_preprocess_page(&$variables, $hook)
{
// Для ноды типа 'portfolio' задаёт свой шаблон страницы page.tpl.php
if (isset($variables['node']) && $variables['node']->type == 'portfolio')
{
$variables['theme_hook_suggestions'][] = 'page__portfolio';
}
// Шаблоны для 404 и 403 ошибок
$status = drupal_get_http_header("status");
if($status == "404 Not Found") {
$variables['theme_hook_suggestions'][] = 'page__404';
}
if($status == "403 Forbidden") {
$variables['theme_hook_suggestions'][] = 'page__403';
}
}
Всё! Теперь можно создавать файлы шаблонов page--portfolio.tpl.php, page--404.tpl.php и page--403.tpl.php в теме и изменять разметку для этих страниц.
Про стандартные файлы шаблонов Drupal 7 вы можете почитать в следующих темах: