我正在尝试更改Drupal输出中的注释链接,我想我已经找到了我要影响的函数,即function comment_node_view($node, $view_mode)
。
它位于“注释”模块中。问题是我似乎无法影响它,当我尝试通过将它放在我的Template.php文件中并将我的theme_添加到函数名称来覆盖它?在我的template.php中,它现在看起来像这样:
function themename_comment_node_view($node, $view_mode)
如果我取消themename_它会导致错误,说我无法重新声明它。我可以复制评论模块并直接编辑它,但我认为这是我主题的方式吗?
答案 0 :(得分:2)
Drupal主题只能实现主题功能(包括模板预处理和流程功能)或alter hooks。
comment_node_view()是一个钩子,但它不是一个alter hook(不同的是钩子名称以“_alter”结尾)。
为什么主题不能实现hook_node_view()
?
因为使用以下代码在comment_build_comment()中调用了hook_node_view()
:
// Allow modules to make their own additions to the comment.
module_invoke_all('comment_view', $comment, $view_mode, $langcode);
module_invoke_all('entity_view', $comment, 'comment', $view_mode, $langcode);
正如评论中也强调的那样,module_invoke_all()调用模块中实现的钩子,而不是主题。
如果您想更改评论的呈现方式,请从主题中为您的主题创建comment.tpl.php模板文件。
答案 1 :(得分:-2)
名称间距为'hook_node_view',因此您需要将'comment'(注释模块使用的名称间距)替换为您的主题名称:
function mytheme_node_view($node, $view_node)
钩:
http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7
hook_node_view:
http://api.drupal.org/api/drupal/modules--node--node.api.php/function/hook_node_view/7
希望有所帮助:)