在modules / comment / comment.module中,我们可以看到hook_node_view()(comment_node_view())在614行上运行。这是函数触发加载所有注释并将它们附加到节点的地方。前两组if(){...}似乎正在处理添加注释表单和操作链接。然后,最后的代码块最终添加了注释,我认为这实际上是您最关心的隐藏问题,并且我想出于性能原因,您希望跳过此注释:
// Only append comments when we are building a node on its own node detail
// page. We compare $node and $page_node to ensure that comments are not
// appended to other nodes shown on the page, for example a node_reference
// displayed in 'full' view mode within another node.
if ($node->comment && $view_mode == 'full' && node_is_page($node) && empty($node->in_preview)) {
$node->content['comments'] = comment_node_page_additions($node);
}
我认为这段代码很愚蠢,因为注释模块不应依赖于任何特定的硬编码视图模式。希望这会改变并成为用户界面中的设置。
无论如何,我发现了一个类似的帖子,您可能会感兴趣:有没有办法阻止comment_node_view触发?
基本上,您想使用hook_module_implements_alter()来阻止注释模块能够触发hook_node_view()。这是您需要添加到自定义模块中的内容:
function hook_module_implements_alter(&$implementations, $hook) {
if ($hook == 'node_view') {
unset($implementations['comment']);
}
}