Drupal → Модуль Entity view modes — пользовательские режимы отображения сущностей

18.04.2013

Описание

В Drupal 7 у каждой сущности есть один и более способов отображения (view mode). Например у материалов это Teaser, Full content, RSS и Search Result:

Способы отображения материала

Модуль Entity view modes позволяет создавать свои view modes, которые можно использовать в Views или своём коде. Если говорить техническим языком, то это GUI к хуку hook_entity_info_alter().

Установка и использование

Установка стандартная — распаковать в sites/all/modules, включить.

В админке (admin/config/system/entity-view-modes) выводится список сущностей и их дефолтные способы отображения:

Настройки модуля Entity view modes

По ссылке Add new view mode добавляется новый view mode:

Форма добавления способа отображения

В Drupal 8 этот функционал доступен из коробки.

Написанное актуально для
Entity view modes 7.x-1.0-beta3
Похожие записи

Комментарии

Гость
19.04.2013, 06:46

Как кстати, только хотел в ручную тоже самое делать.

Гость
19.04.2013, 11:25

Display suite похоже, но более функционально.

А что тут делать то.. + создаём отдельный шаблон для вывода....
<?php
/**
* @file
* Code for the Demo Store Content architecture feature.
*/

/**
* Implements hook_entity_info_alter().
*
* Create new view mode for product display, commerce product.
*/

function sales_product_ui_entity_info_alter(&$entity_info) {
$entity_info['node']['view modes']['sales_product_list'] = array(
'label' => t('Product list Sales'),
'custom settings' => TRUE,
);
$entity_info['commerce_product']['view modes']['node_sales_product_list'] = array(
'label' => t('Node: SALES Product list'),
'custom settings' => TRUE,
);

}

/**
* Implements hook_theme().
*/
function sales_product_ui_theme(&$existing) {
$themes = array(
'node__product__type__sales__product__list' => array(
'path' => drupal_get_path('module', 'sales_product_ui') . '/theme',
'render element' => 'elements',
'template' => 'node--product--type--sales--product--list',
),

);
return $themes;
}

?>

Роман
13.12.2013, 15:05

Добрый день.

Вот в описании данного модуля указываются правила для формирования имен tpl.php - файлов

entity-type__id__view-mode
entity-type__id
entity-type__bundle__view-mode
entity-type__bundle
entity-type

Вот скажите пожалуйста, если я, к примеру хочу создать новое отображение для сущности user, то какой bundle нужно для этого указывать ?

Роман
13.12.2013, 16:40

Понятно, спасибо большое !

То есть, если я, к примеру, создал новое отображение для сущности user и назвал его teaser, то в этом случае достаточно в папке templates текущей темы задать файл user__user__teaser.tpl.php и в нём уже прописать код шаблон вывода данного отображения ? Ну и, естественно, почистить кэш после этого.

Или нужно еще что-то делать ? Например, где-то этот шаблон явно регистрировать или указывать ?

создать файл user--user--teaser.tpl.php, сбросить кэш

Роман
13.12.2013, 17:47

Задал файл с таким названием, поместил в папку templates (туда, куда все эти файлы и нужно помещать)
В вьюшке задаю вывод как "готовая к выводу сущность" -> "Teaser".
А в результате выводится стандартным способом (одно поле под другим).
Вернее, выводятся те поля, которые разрешены к выводу в данном отображении, но вот почему-то user--user--teaser.tpl.php не цепляется ...

Что ж, будем искать ...

Роман
13.12.2013, 20:37

По ходу дела, у них в модуле логическая ошибка.
А именно, в функции entity_view_mode_preprocess определяется, что сущность user не имеет бандлов и поэтому шаблоны типа

entity-type__bundle__view-mode
entity-type__bundle

не подключаются.
А через оставшиеся шаблоны

entity-type__id__view-mode
entity-type__id
entity-type

по моему, подключить кастомную верстку, во всяком случае, у меня не получается

Хороший модуль, давно пользуюсь, но сегодня первый раз понадобилось добавить новый вид просмотра для комментариев.
Создал вид block_last, создал виевс и выбрал это отображение.
Столкнулся с проблемой. Как теперь "обозвать" шаблон?
Тип материала fish.
Пробовал:
comment--block_last.tpl.php
comment--comment--block_last.tpl.php
comment--fish--block_last.tpl.php
comment--comment--fish--block_last.tpl.php
...не работает.
Работает только для всех комментов этого материал comment--node-fish.tpl.php
Может кто-то уже делал такое, подскажите как правильно?

Спасибо! Так просто оказалось.
Может сому пригодится, шаблон получился такой
comment--comment-node-fish--block_last.tpl.php

Добавить комментарий