J'ai créé un module pour mettre en évidence les exemples de code dans les articles basés sur la bibliothèque highlight.js. Cette bibliothèque nécessite des exemples de code à intégrer dans < pre> < code> ... </code> </pre> tags. Je ne veux pas ajouter la balise < pre> quand j'écris un article, parce que les autres bibliothèques de surlignage n'en ont pas besoin et je veux pouvoir changer de bibliothèque sans modifier les articles. J'ai donc besoin d'envelopper dynamiquement < code> tags avec < pre>. J'ai essayé de mettre en œuvre _node_view (et _node_view_alter (crochets sans succès.Comment modifier le corps d'un nœud via un module dans Drupal 8
Mon apparence de code comme
function highlight_node_view($node, $view_mode, $langcode) {
$node->content['body']['und'][0]['safe_value'] = "test";
$node->body['und'][0]['safe_value'] = "test";
$node->content['body']['und'][0]['value'] = "test";
$node->body['und'][0]['value'] = "test";
}
function highlight_node_view_alter($build, $node) {
$build["body"]["#items"]["0"]["value"] = "TEST";
$build["body"]["#items"]["0"]["safe_value"] = "TEST";
$build["body"]["#formater"]["0"]["#markup"] = "TEST";
}
Si j'imprimer le contenu de mon modèle avec
<pre>
<?php
ob_start("minimal_htmlspecialchars_callback");
print_r($content);
ob_end_flush();
?>
</pre>
Je peux confirmer que tous les les valeurs sont correctement remplacées par "test" mais un appel à
<?php print render($content['body']); ?>
resta tente au lieu de "test"
Quelle est la bonne façon de modifier le contenu d'un article à partir d'un module?
Drupal 8 n'a pas encore communiqué stable et ne doit pas être utilisé autrement que pour les tests ... Etes-vous sûr ne signifie pas Drupal 7? – Clive
Je sais que Drupal 8 n'est pas encore prêt, mais j'aime expérimenter. Je développais mon propre système de bloc très basique avec Symfony2, donc quand j'ai découvert que Drupal 8 était basé sur ce framework, j'ai décidé de l'essayer (et jusqu'à présent je l'aime bien). – MathieuLescure