我創建了一個模塊來突出基於highlight.js庫的文章中的代碼示例。該庫需要將代碼示例嵌入< pre> <代碼> ... </code> </pre>標記中。我不想在寫文章時添加< pre>標籤,因爲其他熒光筆庫不需要它,我希望能夠在不修改文章的情況下切換庫。所以我需要動態地將<代碼>標籤與< pre>包裝起來。我試圖執行_node_view(和_node_view_alter(鉤子都沒有成功。如何通過Drupal 8中的模塊修改節點的主體
我的代碼看起來像
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";
}
如果我打印帶有
<pre>
<?php
ob_start("minimal_htmlspecialchars_callback");
print_r($content);
ob_end_flush();
?>
</pre>
模板中的內容,我可以確認所有值被正確地替換爲「測試」,但是調用
<?php print render($content['body']); ?>
仍呈現原始的con帳篷而不是「測試」
什麼是正確的方式來改變從一個模塊的文章的內容?
Drupal 8還沒有一個穩定的版本,不應該用於測試......你確定你不是指Drupal 7嗎? – Clive
我知道Drupal 8尚未準備好,但我喜歡嘗試。我正在用Symfony2開發我自己的非常基本的集團系統,所以當我發現Drupal 8基於這個框架時,我決定嘗試一下(到目前爲止我喜歡它)。 – MathieuLescure