我想要主题启用了注释的节点上显示的“添加评论”和“评论”链接。我知道有theme()
和theme_links()
这可以帮助,但我不知道如何使用它们。我很确定我想要theme_links()
,因为我在这种情况下链接。但是,如何特别获取评论链接?我不想主题的所有链接,只是评论。如果有帮助,我的目标是在每个链接旁边添加图片。另外,在“评论”旁边,我想包含发布的评论数量。如何在Drupal中主题评论链接?
为了澄清,我想主题出现在节点上的链接,而不是显示在评论本身上的链接。
我想要主题启用了注释的节点上显示的“添加评论”和“评论”链接。我知道有theme()
和theme_links()
这可以帮助,但我不知道如何使用它们。我很确定我想要theme_links()
,因为我在这种情况下链接。但是,如何特别获取评论链接?我不想主题的所有链接,只是评论。如果有帮助,我的目标是在每个链接旁边添加图片。另外,在“评论”旁边,我想包含发布的评论数量。如何在Drupal中主题评论链接?
为了澄清,我想主题出现在节点上的链接,而不是显示在评论本身上的链接。
要添加图像/图标到一个链接,你可以使用简单的CSS。这个CSS会为“添加评论”链接添加一个图标,但其他链接也可以这样做(li.comment_delete,li.comment_edit等)。
ul.links > li.comment_add > a {
background: url(PATH TO IMAGE) no-repeat;
padding-left: 20px; /* Change to compensate for size of image */
}
要添加一个节点上的评论的数量,你可以使用函数comment_num_all($node->nid)
。例如,如果您希望将评论数添加到“添加评论”链接,则可以向node.tpl.php(或每个内容类型模板)和jQuery添加隐藏的DIV以编辑链接文本:
<div id="num-comments" style="display:none;"><?php print comment_num_all($node->nid); ?></div>
的jQuery:
$('ul.links > li.comment_add > a').text('Add new comment (' + $('#num-comments').text() + ')');
这还不是最完美的解决方案,但它的工作原理。如果你想使用theme_links()
我认为你将不得不创建一个自定义模块。
编辑: 另一种选择是创建一个自定义模块。这不使用theme_links()
,而是使用hook_link_alter()
。这是一个很小的示例模块,用于更改“添加新评论”链接的标题,添加一个图标并包含当前注释的数量:(将每个MYMODULE_NAME实例替换为您为模块选择的名称)
第1步:创建一个名为MYMODULE_NAME.info文件,并添加:
name = "MYMODULE_NAME"
description = "Change the appearance of links that appear on nodes"
core = 6.x
第2步:创建文件名为MYMODULE_NAME.module并添加:
<?php
/**
* Implementation of hook_link_alter
*/
function MYMODULE_NAME_link_alter(&$links, $node){
if (!empty($links['comment_add'])) {
// Get number of comments for node
$num_comments = db_result(db_query('
SELECT comment_count
FROM {node_comment_statistics}
WHERE nid = %d
', $node->nid));
// Set "Add new comment" link text
$links['comment_add']['title'] = '<img src="PATH TO ICON"/> ADD COMMENT TEXT (' . $num_comments . ')';
// Allow HTML in the link text
$links['comment_add']['html'] = TRUE;
}
}
第3步:将这些文件放入一个文件夹名为MYMODULE_NAME,将文件夹放置在sites/all/modules中,并启用模块
编辑:要查找的数组键:在你的node.tpl.php (或其它任何节点模板),你可以添加<?php print_r($node->links); ?>
。这将向您显示所有要显示在节点中的链接信息,并且主数组的键是您在模块中使用的。您也可以尝试使用Firebug/Chrome开发工具等来查看包含链接的列表项目的类别(例如,ul.links> li。comment_add)。我相信,当链接被构建时,Drupal使用数组键作为链接的类。
我认为最简单的事情就是重写主题中的comment.tpl.php文件。您可以复制/ themes/garland中的一个作为基础。
我不想主题评论自己。我想主题*节点*上的“添加评论”和“评论”链接。 – Chaulky
我用这个技术从http://drupal.org/node/352020创建同一种类的链接,要一个预处理挂钩添加到您的模块访问$链接数组:
function yourmodule_preprocess_comment (&$variables) { $comment = $variables['comment']; //load links for current comment $links = comment_links($comment, FALSE); //code to alter the links array //reset the links HTML $variables['links'] = theme('links', $links); }
再次,这是编辑**注释上的链接**。这不是我想要的。我想编辑指向评论的**节点**上的链接。具体来说就是“添加评论”和“评论”链接。 – Chaulky
感谢您的建议。在这种情况下,我宁愿使用theme_links,但其他人可能。有关如何使用theme_links执行此操作的任何信息? – Chaulky
@Chaulky看到我的编辑上面的方法来实现这个在自定义模块中使用hook_link_alter。 – Laxman13
谢谢你补充说,这一切都对我有意义。我唯一想知道的是如何知道“添加新评论”链接的数组键是'comment_add'?有没有办法找到这些名字? – Chaulky