Je migre un grand module personnalisé et un thème depuis Drupal 6 et je ne peux pas trouver comment convertir les références en $node->body
et $node->teaser
car ce ne sont plus des champs dans l'objet nœud, non?
Utilisez ce code dans un hook de prétraitement:
$node = \Drupal::entityManager()->getStorage('node')->load($nid);
$view_builder = \Drupal::entityManager()->getViewBuilder('node');
$variables['node_full'] = $view_builder->view($node, 'full');
$variables['node_teaser'] = $view_builder->view($node, 'teaser');
$variables['body_full'] = $node->body->view('full');
$variables['body_teaser'] = $node->body->view('teaser');
Et en brindille
{{ node_full }}
{{ node_teaser }}
{{ body_full }}
{{ body_teaser }}
Utilisez le nœud rendu et configurez les modes d'affichage complet, teaser ou un mode d'affichage personnalisé. Le champ rendu unique ne fonctionne pas bien avec un autre code.
J'ai fait des progrès. Il paraît que
{{ node.body.value|raw }} ** unsafe! **
fonctionne bien, mais je suppose qu'il saute les filtres d'entrée, et
{{ node.body.value }}
affiche le balisage. Je ne sais pas trop comment obtenir le corps avec des filtres d'entrée, mais pas échapper au balisage.
Avis de sécurité:
N'utilisez pas le filtre brut si vous ne pouvez pas garantir que la valeur est à l'abri des entrées utilisateur indésirables!
Vous pouvez obtenir le corps dans twig via:
{{ content }}
Après avoir ajouté ceci à votre fichier THEME.theme:
function THEME_preprocess_node(&$variables) {
$node = &$variables['node'];
$node_array = $node->toArray();
$variables['node_teaser'] = $node_array['body'][0]['summary'];
}
Vous pouvez le récupérer dans templates/node.html.twig avec:
{{ node_teaser }}