Je souhaite modifier le mode d'affichage du nœud par programmation. J'ai utilisé hook_preprocess_node(&$vars)
et défini le mode d'affichage:
function moduleName_preprocess_node(&$vars) {
// if conditions to apply particular view mode
$vars['view_mode'] = 'teaser';
$vars['elements']['#view_mode'] = 'teaser';
}
Mais cela ne fonctionne pas comme prévu. Est-ce que j'ai râté quelque chose?
Réponses:
Modifier le mode d'affichage dans la fonction de prétraitement le fait trop tard.
La façon correcte de modifier le module de vue consiste à implémenter hook_entity_view_mode_alter () , qui est appelée avant le rendu du contenu de l'entité. Par exemple, dans node_view () , ce hook est appelé depuis node_build_content () , qui est la première fonction appelée depuis
node_view()
.la source
Si vous avez juste besoin de le changer pour certaines pages, je suggère la page Mode d'affichage . C'est assez pratique et simple à utiliser.
la source