如何在Drupal中主题评论链接?

时间:2011-02-24 00:27:35

标签: drupal-6 comments drupal-themes

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

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

3 个答案:

答案 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(),我认为您必须创建自定义模块。

修改 另一种选择是创建自定义模块。这不是theme_links(),而是hook_link_alter()。这是一个小示例模块,用于更改“添加新注释”链接的标题,添加图标并包含附加到节点的当前注释的数量:(将MYMODULE_NAME的每个实例替换为您为模块选择的名称)< / p>

步骤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&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);
}