特定の条件に応じて、カスタムモジュールを介して、特定のノードのコメントフラグを1または2に設定します(コメントフォームを表示または非表示にするため)。
私はhook_node_viewを使用してみましたが、このアプローチは機能していないようです:
function custom_node_view($ node、$ view_mode、$ langcode){ $ node-> comment = 1; }
コメントフラグを明示的に1に設定しても、特定のノードでは2のままです。フラグを設定した直後にdpm($node);
を実行すると、正しい値が開発情報に表示されますが、コメントフォームは引き続き表示されます...
Comment.moduleによると、値は次のとおりです。
/**
* Comments for this node are closed.
*/
define('COMMENT_NODE_CLOSED', 1);
/**
* Comments for this node are open.
*/
define('COMMENT_NODE_OPEN', 2);
プログラムでコメントフォームを表示/非表示にするために使用する必要がある別のフックはありますか?
Hook_node_load()内でコメント表示を正しく設定できるようです。これはプロセスの少し前に実行され、comment.moduleに特定のノードのフォームを表示しないように指示していると思います。
これが私が最終的に実装したものの例です:
<?php
/**
* Implements hook_node_load().
*/
function custom_node_load($nodes, $types) {
foreach ($nodes as $node) {
$node->comment = COMMENT_NODE_CLOSED; // to close comments
}
}
?>