Шаблон ноды в зависимости от режима отображения в Drupal

17 декабря 2014 - 23:57

В теме оформления сайта на Drupal 7 можно переопределять шаблоны нод конкретного типа материала (node--TYPE.tpl.php) или конкретных нод (node--NID.tpl.php), однако нередко возникает задача создания шаблона для конкретного режима отображения ноды, например анонса (teaser) или любого другого, который можно задать самостоятельно с помощью хука hook_entity_info_alter или с помощью различных модулей. В таком случае определить шаблон для конкретного режима отображения ноды можно с помощью следующего кода в файле template.php:

/**
 * Implements template_preprocess_node().
 */

function THEME_preprocess_node(&$vars) {
  $vars['classes_array'][] = 'node-' . $vars['type'] . '-' . $vars['view_mode'];
  $vars['theme_hook_suggestions'][] = 'node__' . $vars['type'] . '__' . $vars['view_mode'];
}

Теперь можно создать в папке с темой, например, следующий шаблон - node--product--teaser.tpl.php - для темизации анонсов материалов типа с машинным именем product. Также приведенный выше код добавляет к обертке ноды дополнительный стилевой класс, что может оказаться полезным для верстки.