Как создать дисплей

Опубликовал Максим Баев, 20 мая 2016, 12:43

По умолчанию, в Drupal'е есть несколько дисплеев для нод: teaser, full, default, rss,...
Создать дополнительный тип отображения нод очень просто:

<?php
/**
 * Implements hook_entity_info_alter().
 */
function EXAMPLE_entity_info_alter(&$entity_info) {
  $entity_info['node']['view modes']['some_new_display'] = array(
    'label' => t('Some new display'),
    'custom settings' => TRUE,
  );
}

Или же можно использовать модуль Display Suite, который позволяет не только создавать дополнительные дисплеи, но и предоставляет дополнительную функциональность. Например, клонировать в новосозданный дисплей настройки полей из другого дисплея.

Как темизировать новый дисплей?

Для того, чтобы затемизировать какой-либо тип материала с новым дисплеем достаточно добавить новый suggestion.

<?php
function EXAMPLE_preprocess_node(&$variables) {
  if($variables['view_mode'] == 'some_new_display') {
    $variables['theme_hook_suggestions'][] = 'node__some_new_display';
  }
}

После того как новый suggestion объявлен достаточно создать шаблон с именем node--article--some-new-display.tpl.php копированием из шаблона node.tpl.php, где article - это тип материала, к которому применён дисплей.

Другие посты