我似乎无法使用 template.php 覆盖函数
我正在尝试更改 Drupal 输出中的评论链接,并且我想我已经找到了我想要影响的函数,即 function comment_node_view($node, $view_mode)
。
它位于评论模块中。问题是,当我尝试通过将其放入 Template.php 文件并将我的 theme_ 添加到函数名称来覆盖它时,我似乎无法影响它?在我的 template.php 中,现在看起来像这样:
function themename_comment_node_view($node, $view_mode)
如果我去掉 themename_ ,它会导致一个错误,指出我无法重新声明它。我可以复制评论模块并直接编辑它,但我认为这就是我主题化的方式?
I'm trying to alter the comment links in my Drupal output, and I think I have found the function I want to influence, which is function comment_node_view($node, $view_mode)
.
It is in the Comment module. The problem is I can't seem to effect it, when I try to override it by putting it in my Template.php file and add my theme_ to the function name? In my template.php it looks like this now:
function themename_comment_node_view($node, $view_mode)
if I take off the themename_ it causes an error saying I can't redeclare it. I can copy the comment module and edit it directly but I thought this was how I theme something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Drupal主题只能实现主题功能(包括模板预处理和处理功能)或alter hooks。
comment_node_view() 是一个钩子,但它不是更改钩子(不同的是,钩子名称将以“_alter”结尾)。
为什么主题不能实现
hook_node_view()
?因为
hook_node_view()
是在 comment_build_comment() 使用以下代码:因为它也从评论中突出显示,module_invoke_all() 调用模块中实现的钩子,不是主题。
如果您想更改主题中评论的呈现方式,您应该创建 comment.tpl.php 主题的模板文件。
Drupal themes can only implement theme functions (which include template preprocess and process functions) or alter hooks.
comment_node_view() is a hook, but it's not an alter hook (differently the hook name would end with "_alter").
Why cannot themes implement
hook_node_view()
?Because
hook_node_view()
is invoked in comment_build_comment() using the following code:As it is also highlighted from the comment, module_invoke_all() invokes the hooks implemented in modules, not themes.
If you want to change how a comment is rendered, from a theme, you should create the comment.tpl.php template file for your theme.
名称间距为“hook_node_view”,因此您需要将“comment”(评论模块使用的名称间距)替换为您的主题名称:
Hooks:
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
希望有帮助:)
The name spacing is 'hook_node_view' so you need to replace 'comment' (the name spacing used by the comment module) with your theme name:
Hooks:
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
Hope that helps :)