我想主题显示启用了评论的节点上显示的“添加评论”和“评论”链接。我知道有theme()
和theme_links()
可以帮助解决这个问题,但我不确定如何使用它们。我很确定我想要theme_links()
,因为在这种情况下我会链接。但是我如何具体获得评论链接?我不想主题所有链接,只是评论中的链接。如果它有帮助,我的目标是在每个链接旁边添加一个图像。另外,在“评论”旁边,我想包括发布的评论数量。
为了澄清,我想主题显示在节点上的链接,而不是显示在评论本身上的链接。
答案 0 :(得分:3)
要将图像/图标添加到链接,您可以使用简单的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)
。例如,如果您想将注释数添加到“添加注释”链接,您可以将一个隐藏的DIV添加到node.tpl.php(或每个内容类型模板)和jQuery来编辑链接文本:
<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()
,我认为您必须创建自定义模块。
修改强>
另一种选择是创建自定义模块。这不是 步骤1:创建名为MYMODULE_NAME.info的文件并添加: 第2步:创建名为MYMODULE_NAME.module的文件并添加: 步骤3:将这些文件放在名为MYMODULE_NAME的文件夹中,将文件夹放在sites / all / modules中,然后启用模块 编辑:要查找数组键:
在您的node.tpl.php(或任何其他节点模板)中,您可以添加theme_links()
,而是hook_link_alter()
。这是一个小示例模块,用于更改“添加新注释”链接的标题,添加图标并包含附加到节点的当前注释的数量:(将MYMODULE_NAME的每个实例替换为您为模块选择的名称)< / p>
name = "MYMODULE_NAME"
description = "Change the appearance of links that appear on nodes"
core = 6.x
<?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;
}
}
<?php print_r($node->links); ?>
。这将显示要在节点中显示的所有链接信息,主阵列的键是您在我的模块中使用的。您还可以尝试使用Firebug / Chrome开发工具等查看包含链接的列表项的类(即ul.links&gt; li。 comment_add )。我相信在构造链接时,Drupal使用数组键作为链接的类。
答案 1 :(得分:0)
我认为最简单的方法是覆盖主题中的comment.tpl.php文件。您可以复制/ themes / garland中的一个作为基础。
答案 2 :(得分:0)
我使用http://drupal.org/node/352020中的这种技术来创建相同类型的链接,你想为你的模块添加一个预处理钩子来访问$ links数组:
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); }