Я создаю пользовательский тип контента. По умолчанию узлы поддерживают только два режима просмотра ( full
и teaser
):
function mymodule_view($node, $view_mode)
{
if ($view_mode == 'full') {
$node->content['#theme']= 'my_full_node_view_theme';
}
if ($view_mode == 'teaser') {
$node->content['#theme']= 'my_teaser_node_view_theme';
}
return $node;
}
Я хочу добавить несколько других режимов просмотра для этого типа узла, например:
small_box
small_box_with_user_pic
big_box
и хотите визуализировать узел с кодом следующим образом:
$node = node_load($my_nid);
$output = drupal_render(node_view($node, 'big_box'));
Какие-либо предложения?
Ответы:
сначала мы должны добавить дополнительные режимы просмотра с помощью hook_entity_info_alter
// мы можем прикрепить дополнительные функции темы или шаблоны и добавить переменные с помощью hook_view
// в нашей теме хуков
источник
Если все, что вам нужно, это пользовательские режимы просмотра, то режим Entity View Mode может помочь. Display Suite также упрощает создание пользовательских режимов просмотра, создание новых псевдополей и имеет приятный интерфейс перетаскивания для размещения различных элементов в различных режимах просмотра.
Если вы хотите сделать все это в коде, то entity_example из модуля примеров имеет режим просмотра IIRC. Drupal Commerce также имеет ряд пользовательских сущностей с настраиваемыми режимами просмотра.
источник
Если вы используете Display Suite, убедитесь, что модуль ds_ui включен, и перейдите к admin / structure / ds / view_modes, чтобы получить список существующих и создать новые режимы просмотра.
источник
Я знаю, что это старая тема, но я нашел следующий метод, который отлично работает в большинстве случаев.
Эти простые шаги помогут вам создать собственный модуль в новом режиме просмотра. Это довольно просто. Я хотел бы предоставить атрибуцию, но я не могу вспомнить, где я нашел основание для этого. Тем не менее, он следует той же логике, что и ответ werqious.
Файл 1: my_module_view_modes.module
Файл 2: my_module_view_modes.info
Сохраните эти два файла в папке my_module_view_mode в папке модулей и включите. Очистите кеш, и теперь вы увидите новые режимы просмотра в соответствующих им сущностях.
источник