Включить/отключить форму комментариев в модуле?


Я хотел бы установить флаг комментария для данного узла равным 1 или 2 (чтобы либо показывать, либо скрывать форму комментария) с помощью моего пользовательского модуля, в зависимости от определенных условий.

Я пробовал использовать hook_node_view, но этот подход, похоже, не сработал:

function custom_node_view($node, $view_mode, $langcode) {
  $node->comment = 1;
}

Даже если я явно установлю флаг комментария равным 1, он останется 2 для данного узла. Если я dpm($node); сразу после установки флага, правильное значение будет отображаться в информации о разработке, но форма комментария будет все еще показывают...

Согласно модулю comment., значения таковы:

/**
 * Comments for this node are closed.
 */
define('COMMENT_NODE_CLOSED', 1);

/**
 * Comments for this node are open.
 */
define('COMMENT_NODE_OPEN', 2);

Есть ли другой крючок, который я должен использовать для программного отображения/скрытия формы комментария?

Author: kiamlaluno, 2011-06-01

1 answers

Похоже, я могу правильно настроить отображение комментариев в 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
  }
}
?>
 4
Author: geerlingguy, 2011-06-02 12:38:36