Още темплейти за Entity view mode

С http://drupal.org/project/entity_view_mode добавяме допълнителни node Display. По подразбиране имената на темплейтите на видовете съдържание са описани тук http://drupal.org/node/1089656.

Като добавим нов дисплей за вид съдържание, например custom view за article би било хубаво да може да направим темплейт за него - нещо като node--article--custom-view.tpl.php.

Това може да направим като добавим следния код в template.php на темата

/**
 * Implementation of hook_node_view().
 */
function THEME_preprocess_node(&$variables) {
  $variables['theme_hook_suggestions'][] = 'node__' . $variables['type'] . '__' . $variables['view_mode'];
}

Копираме /modules/node/node.tpl.php в папката на темата и го преименуваме на node--article--custom-view.tpl.php и редактираме съдържанието му по наш вкус.

Това ни дава еднотипно представяне когато използваме този дисплей във views списъци - вече не се налага да добавяме по отделно необходимите полета и да създаваме сложни css правила за да се приложат стилове за тях. Достатъчно е да се наравят стиловете за .node.node-article.view-mode-custom_view, както и да ползваме собствени тагове в темплейта, класове и id.

Тъй като това може да се приеме като разширение на node, за който писах в предния пост, е удобно да добавим този код в неговия модул:

/**
 * Implementation of hook_node_view().
 */
function node_ext_preprocess_node(&$variables) {
  $variables['theme_hook_suggestions'][] = 'node__' . $variables['type'] . '__' . $variables['view_mode'];
}

Дори да не ползваме допълнителни node display, този код е необходим за да имаме темплейти на съществуващите дисплеи по техните имена за вид съдължание като node--article--teaser.tpl.php, node--article--full.tpl.php и т.н.

Comments

Не бях забелязала този модул, а той съшествува от 1 година. Благодаря! Винаги съм ползвала Display suite за тази цел.

Модула вече има собствена имплеметация на тези благинки в новата си beta2 версия http://drupal.org/project/entity_view_mode, в този ред на мисли може да смятаме горния код за морално остарял вече :)