it-swarm-ko.tech

모듈에서 주석 양식을 활성화 / 비활성화 하시겠습니까?

특정 조건에 따라 사용자 정의 모듈을 통해 주어진 노드의 주석 플래그를 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);

프로그래밍 방식으로 주석 양식을 표시/숨기기 위해 사용해야하는 다른 후크가 있습니까?

3
geerlingguy

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
geerlingguy