Lab / Drupal

Drupal 7: Как переопределить шаблон для конкретного типа материалов

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

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

function ИмяТемы_preprocess_page(&$vars, $hook) {
 if (isset($vars['node'])) {
 $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
 }
}

Теперь шаблонизатор Друпала будет отлавливать в именах файлов шаблон типа page__ далее тип и его машинное имя и обрабатывать его для вашего типа материала. Для этого шаблон страницы типа материала необходимо назвать пот по такой схеме: page--blog.tpl.php где blog машинное имя вашего переопределяемого типа материала.