2011-02-24 22 views
0

我想要主题启用了注释的节点上显示的“添加评论”和“评论”链接。我知道有theme()theme_links()这可以帮助,但我不知道如何使用它们。我很确定我想要theme_links(),因为我在这种情况下链接。但是,如何特别获取评论链接?我不想主题的所有链接,只是评论。如果有帮助,我的目标是在每个链接旁边添加图片。另外,在“评论”旁边,我想包含发布的评论数量。如何在Drupal中主题评论链接?

为了澄清,我想主题出现在节点上的链接,而不是显示在评论本身上的链接。

回答

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)。例如,如果您希望将评论数添加到“添加评论”链接,则可以向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使用数组键作为链接的类。

+0

感谢您的建议。在这种情况下,我宁愿使用theme_links,但其他人可能。有关如何使用theme_links执行此操作的任何信息? – Chaulky

+0

@Chaulky看到我的编辑上面的方法来实现这个在自定义模块中使用hook_link_alter。 – Laxman13

+0

谢谢你补充说,这一切都对我有意义。我唯一想知道的是如何知道“添加新评论”链接的数组键是'comment_add'?有没有办法找到这些名字? – Chaulky

0

我认为最简单的事情就是重写主题中的comment.tpl.php文件。您可以复制/ themes/garland中的一个作为基础。

+0

我不想主题评论自己。我想主题*节点*上的“添加评论”和“评论”链接。 – Chaulky

0

我用这个技术从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); 
} 
+0

再次,这是编辑**注释上的链接**。这不是我想要的。我想编辑指向评论的**节点**上的链接。具体来说就是“添加评论”和“评论”链接。 – Chaulky