Quero alterar o modo de exibição do nó programaticamente. Eu usei hook_preprocess_node(&$vars)
e configurei o modo de exibição:
function moduleName_preprocess_node(&$vars) {
// if conditions to apply particular view mode
$vars['view_mode'] = 'teaser';
$vars['elements']['#view_mode'] = 'teaser';
}
Mas isso não está funcionando como esperado. Estou faltando alguma coisa aqui?
Respostas:
Alterar o modo de visualização na função de pré-processo está atrasando muito.
A maneira correta de alterar o módulo de visualização está a implementar hook_entity_view_mode_alter () , que é chamado antes que o conteúdo entidade é processado. Por exemplo, em node_view () , esse gancho é invocado a partir de node_build_content () , que é a primeira função chamada from
node_view()
.fonte
Se você precisar apenas alterá-lo para determinadas páginas, sugiro Página do modo de exibição . É bastante útil e simples de usar.
fonte