Я хочу программно изменить режим просмотра узла. Я использовал hook_preprocess_node(&$vars)
и установил режим просмотра:
function moduleName_preprocess_node(&$vars) {
// if conditions to apply particular view mode
$vars['view_mode'] = 'teaser';
$vars['elements']['#view_mode'] = 'teaser';
}
Но это не работает, как ожидалось. Я что-то здесь упускаю?
Ответы:
Изменение режима просмотра в функции предварительной обработки делает это слишком поздно.
Правильный способ изменить модуль представления - реализовать hook_entity_view_mode_alter () , который вызывается до визуализации содержимого объекта. Например, в node_view () этот хук вызывается из node_build_content () , который является первой вызванной функцией
node_view()
.источник
Если вам нужно просто изменить его для определенных страниц, я бы предложил страницу просмотра в режиме просмотра . Это довольно удобно и просто в использовании.
источник