Ich möchte den Ansichtsmodus des Knotens programmgesteuert ändern. Ich habe hook_preprocess_node(&$vars)
den Ansichtsmodus verwendet und eingestellt:
function moduleName_preprocess_node(&$vars) {
// if conditions to apply particular view mode
$vars['view_mode'] = 'teaser';
$vars['elements']['#view_mode'] = 'teaser';
}
Dies funktioniert jedoch nicht wie erwartet. Vermisse ich hier etwas?
Antworten:
Das Ändern des Ansichtsmodus in der Vorverarbeitungsfunktion ist zu spät.
Die richtige Methode zum Ändern des Ansichtsmoduls ist die Implementierung von hook_entity_view_mode_alter () , die aufgerufen wird, bevor der Entitätsinhalt gerendert wird. Zum Beispiel in node_view () wird aufgerufen , daß Haken von node_build_content () , die die erste Funktion aufgerufen ist
node_view()
.quelle
Wenn Sie müssen es nur für bestimmte Seiten ändern, würde ich vorschlagen , Anzeigemodus Seite . Es ist ziemlich praktisch und einfach zu bedienen.
quelle