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

mbaev 30.05.2016, 11:43

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

  1. /**
  2.  * Implements hook_entity_info_alter().
  3.  */
  4. function EXAMPLE_entity_info_alter(&$entity_info) {
  5.   $entity_info['node']['view modes']['some_new_display'] = array(
  6.     'label' => t('Some new display'),
  7.     'custom settings' => TRUE,
  8.   );
  9. }

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

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

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

  1. function EXAMPLE_preprocess_node(&$variables) {
  2.   if($variables['view_mode'] == 'some_new_display') {
  3.     $variables['theme_hook_suggestions'][] = 'node__some_new_display';
  4.   }
  5. }

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