xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Описание

В 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
Похожие записи

Комментарии RSS

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

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;
}

?>

Добрый день.

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

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

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

user

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

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

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

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

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

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

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

entity-type__bundle__view-mode
entity-type__bundle

не подключаются.
А через оставшиеся шаблоны
entity-type__id__view-mode
entity-type__id
entity-type

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании