如果我们使用平面评论视图,我们不应在 IMO 的每个评论中看到回复链接。只是原始帖子上的回复链接和底部的评论表。这可能是一个核心问题。

注释

hunmonk 的图片

地位:积极的» 推迟

我同意,但目前评论模块呈现这些链接的方式使得基本上不可能改变它们。我将推迟此操作,直到我们可以在 D7 中修复评论模块。

aclight 的图片

我还没有看过 D6,所以这可能不适用,但在我的 D5 网站上,我使用带有论坛的平面评论,并删除了每个帖子/评论上的回复按钮:


function hook_link_alter(&$node, &$links) {
  if (isset($node->type)) {
    switch ($node->type) {
      case 'forum':
        if (array_key_exists('comment_add', $links)) {
          unset($links['comment_add']);
        }
        break;
    }
  }
}

如果您只是颠倒参数的顺序并检查 $node->type == project_issue,这看起来应该在 D6 中工作

dww 的图片

地位:推迟“ 积极的

看起来是一个合理的方法。似乎这正是 hook_link_alter() 应该擅长的事情。;)

hunmonk 的图片

@aclight:我在 D5 安装上尝试了您的解决方案,但它不起作用。它所做的是从实际节点中删除“添加新评论”链接——它不会从每个评论中删除“回复”链接。在这方面,D6 的操作方式看起来几乎相同。

我看不到 hook_link_alter() 将如何在这里帮助我们,因为它从来没有被用于实际的评论链接本身。

我看到三个选项:

  1. 为 D6 打一个补丁以使用 hook_link_alter 和评论:我和 Eaton 谈到了这一点,他表达了保留意见——说这么晚做这件事可能会给使用钩子改变节点链接的人带来一些意想不到的惊喜。

  2. 尝试在主题层解决它:这是否是一个通用的解决方案值得怀疑,除非我们可以利用一些我在 D6 中不知道的新的疯狂主题功能(也许是 _preprocess 的事情?)。如果我们不能使用通用的主题解决方案,那么下一个可能性就是在 do 上修复它,在这种情况下,我们需要在基础上创建一个新问题。

  3. 我们现在不做任何事情,并针对D7解决评论模块在这方面的不足。

所以,真的,一个不是和选项。我会和一些主题专家一起检查,看看是否有我们可以采用的通用解决方案。如果没有,那么这个问题应该回到推迟。

我很确定我已经涵盖了这里的所有基础,但是如果我遗漏了什么,请告诉我。

aclight 的图片

@hunmonk--是的,我认为它不仅仅是使用 hook_link_alter()。几个月前我做了这件事,并没有清楚地记得细节,但我会在我的网站上四处挖掘,看看我在做什么。

但这绝对是可能的——例如,参见 http://www.igorexchange.com/node/355
请注意,我已在所有评论中添加了“引用”按钮,但我很确定该按钮是由quote.module 并与 comment.module 添加的回复链接分开。

需要明确的是,您要解决这个问题的是我在上面的链接中所做的,减去“报价”按钮,对吗?

我知道页面底部的回复按钮是在主题层中添加的。我只是不确定每个评论中的“回复”链接在哪里删除。我会研究一下我是如何做到这一点的,并报告回来,希望很快。

aclight 的图片

嗯……坏消息

看起来我在 comment.module 的 comment_links() 中这样做:

// Don't include reply link in comment
//      $links['comment_reply'] = array(
//        'title' => t('reply'),
//        'href' => "comment/reply/$comment->nid/$comment->cid"
//      );

尽管如此,这将禁用所有评论中的回复链接,并且由于 do 在其他地方使用线程评论,这不是您想要做的。

comment.module 和 flat 论坛有很多问题。我会尽快找到时间使用 project_issue 的新开发版本创建一个测试站点,以查看我之前遇到的任何一个是否会与 IFAC 产生问题。

很抱歉我在这里的最初想法 - 我忘记了我已经修补了核心以使其正常工作。

摩西·韦茨曼的照片

其他人认为我们应该将此错误移至核心并标记为关键吗?这肯定是糟糕的用户界面......我倾向于以某种方式将 hook_link_alter 添加到评论中。

hunmonk 的图片

@moshe:我很想在核心中修复它,但我在上面的第 1 点中提到的伊顿的担忧可能是一个交易杀手。

通过快速检查,看起来 hook_link_alter() 基本上是为节点链接 atm 设计的,并且在周期中将这种曲线球混合在一起似乎非常晚。

如果我们真的必须为do修复它,那么我可能会提倡现在在do主题的主题层修复它,然后在D7中修复评论模块。

SamRose 的图片

我完全同意这个问题,拥有上述选项会很棒。同时,我正在尝试解决在不编辑核心的情况下合理覆盖的问题。

我正在查看http://drupal.org/node/44708似乎指向正确的方向,以及http://api.drupal.org/api/function/theme_links/5 中的信息

我试图了解这如何直接适用于评论回复。我知道我会首先按照http://drupal.org/node/44708 中的描述编辑 template.php ,然后在主题文件夹中创建一个文件 links.tpl.php。但是,我正在努力解决的是在该 links.tpl.php 文件中包含的内容。

我如何告诉模板引擎仅在inks.tpl.php 文件中覆盖评论回复链接?

SamRose 的图片

附注。我应该补充一点,我是在 Drupal 5.x 的上下文中问这个问题的,非常感谢任何想法

langweer 的图片

我想做同样的事情,从我论坛的评论中删除回复链接。而且我无法通过覆盖我的 template.php 中的内容来找到解决方案。有人有解决方案吗?我不喜欢更改核心文件,这似乎也是目前唯一的解决方案......

SamRose 的图片

可以在 template.php 中覆盖。当我有机会时,我会回到这里并发布一个我最终能够做到的例子

zmove 的图片

我认为 SamRose 没有机会......

SamRose 的图片

地位:积极的» 关闭(固定)

将此从“/includes”目录下的“themes.inc”文件复制到template.php,将template.php放在您的主题目录中:

/**
 * Return a themed set of links.
 *
 * @param $links
 *   A keyed array of links to be themed.
 * @param $attributes
 *   A keyed array of attributes
 * @return
 *   A string containing an unordered list of links.
 */
function theme_links($links, $attributes = array('class' => 'links')) {
  $output = '';

  if (count($links) > 0) {
    $output = '<ul'. drupal_attributes($attributes) .'>';

    $num_links = count($links);
    $i = 1;

    foreach ($links as $key => $link) {
      $class = '';

这是需要修改以覆盖主题中的评论链接的内容。

dww 的图片

地位:关闭(固定)“ 积极的

这并不能解决问题——您只是在说“覆盖 theme_links()”。我们需要关闭这个问题的是对 theme_links() 的覆盖实现,它在适当的时候实际上删除了链接。

泽利乌斯的画像

你能写一个分步说明吗?

SamRose 的图片

dww,我知道我的回答不能解决问题,并接受您所说的。您能否详细说明您正在寻找的内容*是否*可以解决问题?

您是在寻找对现有 comment.module 的补丁,还是在寻找可以做到这一点的贡献,或者什么?我不清楚人们在这里寻找什么,并想提供帮助,但想把我的精力放在一个富有成效的方向上。谢谢!

aclight 的图片

@SamRose:我们正在寻找的是一种无需破解核心评论模块即可仅删除问题评论中的“回复”链接(即不在论坛评论中等)的方法。您在上面评论 #14 中的帖子没有提供这些回复链接的功能覆盖。可能是您没有正确复制/粘贴您的代码,因为看起来您粘贴的内容突然结束。

所以,如果你能提供一个 theme_links() 函数来删除这些只针对问题评论的回复链接,那可能是我们可以用来做的事情 但是核心评论模块的补丁不是我们想要的,因为有是原因(在上面的评论#4 中给出)为什么这可能不是一个好主意。

SamRose 的图片

好吧,有道理。

pcambra 的图片

我应用的解决方案是将 theme_links 复制到我的 template.php 并将其重命名为 phptemplate_links。
然后,我在 foreach 循环和 voilà 之前添加了这一行,所有回复链接都消失了
   unset($links['comment_reply']);

aclight 的图片

jayg 的图片

这是一个长期存在的问题,并且由于 D6 的时间没有分配给核心。为什么不把它作为 D7 的核心问题,以便我们有更好的方式来主题评论?

zbombicz 的图片

我的解决办法是:

function phptemplate_links($links, $attributes = array('class' => 'links')) {
  unset($links['comment_reply']);
  return theme_links($links, $attributes);
}

意见?

kjarli 的图片

这是我按节点类型隐藏它们的解决方案:

<?php
/**
 * function to overwrite links. removes the reply link per node type
 * 
 * @param $links
 * @param $attributes
 * @return unknown_type
 */
function phptemplate_links($links, $attributes = array('class' => 'links')) {
  // array of node types of which comments should not get the reply link
  $nodes = array('forum', 'blog');
  
  // check if the comment reply link exists
  if (isset($links['comment_reply'])) {
    // it exists, dissect the url location
    // 3th part = node you reply to, 4th part = comment you reply to
    // we need the 3th ($parts[2];)
    $parts = explode('/', $links['comment_reply']['href']);
    
    if (ctype_digit((string) $parts[2])) {
      if (($parent = node_load($parts[2])) && in_array($parent->type, $nodes)) {
        unset($links['comment_reply']);
      }
    }
  }
  
  return theme_links($links, $attributes);
}
?>
phKU 的图片

以下是我实现“只要没有发布后续回复就允许用户编辑自己的评论”行为的简单解决方案。这很容易,因为它只是一个 template.php 添加和轻量级,因为只有一个数据库请求缓存在静态变量中。

function [template name]_links($links, $attributes = array('class' => 'links')) {
  
  //  Record all comments of the current node
  static $cur_node_comments = array();

  if (count($links) > 0) {

    // Check if the comment edit link exists
    if (isset($links['comment_edit'])) {
      $cid = substr($links['comment_edit']['href'], 13);
      
      //  Load all comments for the current node if not already done
      if(empty($cur_node_comments)) {
        $query = "SELECT c2.cid, c2.pid FROM `dru_comments` c1 " .
          "INNER JOIN `dru_comments` c2 ON c1.nid = c2.nid " .
          "WHERE c1.cid = %d ORDER BY c2.pid, c2.cid DESC";
        $result = db_query($query, $cid);
        
        //  Builds $cur_node_comments while adding to each comment row an 'edit' allowed flag
        $pid = -1;
        while($row = db_fetch_array($result)) {
          $last = $row[pid] != $pid ? 1 : 0;
          $pid = $row[pid];
          $cur_node_comments[$row[cid]] = $row + array('edit' => $last);
        }
      }
      
      //  Kill unallowed edit link excepted for administer comments rights user
      if(!$cur_node_comments[$cid]['edit'] && !user_access('administer comments'))
        unset($links['comment_edit']);
    }
  }

  return theme_links($links, $attributes);
}

希望有帮助:)

dww 的图片

@phKU:谢谢,但这在这里并不是很有帮助。;)

A) 那只会删除编辑链接——如果用户自己手动输入正确的 URL,他们仍然可以编辑评论。

B) 您正在尝试解决与本期中描述的问题完全不同的问题。你所说的与#389718更密切相关:一旦有回复,阻止用户编辑他们自己的论坛帖子......如果每个问题仍然专注于一个单一的变化,而不是集中在一起,那么对每个参与者来说一切都会变得容易得多不同的功能/错误进入同一问题。

干杯,-
德里克

鲁斯坦的图片

#24,kjarli:谢谢,非常有用。

巴特兹的图片

#24 完美运行,谢谢!

哦,提醒一下,在将它应用到 template.php 之后清除缓存,就像对 template.php 文件所做的更改一样。
这是星期一早上,我忘记了,在我有尤里卡时刻之前花了我 15 分钟:)

干杯

coolboygfx 的图片

此外,phKU 的解决方案对于从除最后一条评论之外的所有评论中删除编辑链接非常有用。
感谢分享。
但出于兼容性原因,我建议在查询中用 {comments} 替换 `dru_comments`。

将 #24 和 #25 结合在一个函数中甚至更强大
,事实上,最后评论开始按照他们应该的方式行事:-)

iparsin 的图片

我使用“平面列表”来显示评论。因此,仅禁用或删除每个评论上的“回复”链接更有意义。我的解决方案是使用hook_link_alter,抱歉,如果我重复了上述任何评论,它又长又旧,所以我可能会错过一些东西,只是想分享。我将此代码放在我的自定义模块调用“myfunction”中。

function myfunction_link_alter(&$links, $node, $comment = NULL) {
	unset($links['comment_reply']);

}

ravurihareesh 的图片

我们可以在评论中添加字段吗?

iparsin 的图片

我从来没有做过,但相信“节点评论”可能是你正在寻找的。由于它像完整节点一样工作,因此您可以使用 cck 添加字段等等。IMO,请谨慎使用,因为 Drupal 本身构建了一些旨在成为节点的东西,有些人不喜欢“评论”或“用户”以获得更好的优化,但我们绝对可以修改它们。

edgar_estor 的图片

感谢 kjarli
在使用脚本并完成后清除缓存.. :)

spyderpie 的图片

在视图中显示评论时,我似乎无法让它发挥作用。

有什么想法吗?

朱丽叶

jaap76 的图片

我不想理会回复链接,但有人可以告诉我如何从每条评论中删除“登录/注册”链接?我的大多数访问者只是看看我的网站,但没有会员资格。谢谢。

jaap76 的图片

事实上,我必须纠正我的要求。我希望登录/注册链接仅显示在内容下方的第一条评论上。如果用户想从 node/33 登录,则用户在登录后返回 node/33。(就像现在一样,不是指向用户个人资料的自定义链接)

巴特兹的图片

jaap76 的图片

感谢您的回复 Bartezz。

我试过这个模块,但无法弄清楚。我的 php 技能不是很好。

巴特兹的图片

@Jaap,在问题队列中搜索“片段”,我相信一定有您可以使用的东西。

也许阅读一些基本的 php 技能,当你想要 Drupal 中的标准之外的东西时会很有帮助,而且真的没有你想象的那么难学!不知道你现在的 php 级别,但也许这有帮助;http://www.tizag.com/phpT/

干杯

jaap76 的图片

Bartezz,我会为你的网址添加书签。也许我可以自己解决问题。谢谢。

dww 的图片

版本:5.x-2.x-dev» 6.x-1.x-dev
成分:问题“ 注释

我们能否停止将此问题(具有特定范围和目的)用作您网站上与评论相关的链接的一般支持论坛?;)

谢谢,-
德里克

克洛诺斯的图片

如果案例仍然如问题摘要中所建议的那样,那么我们应该简单地将链接带到页面底部的人们,他们可以在那里发表新评论或扩展它以执行诸如在评论文本区域中填充某些内容像这样:

@[user-from-posted-info], <a href="http://drupal.org/node/[current-issue-number]#comment-[comment-number]">#[post-number]</a>:

<blockquote>[comment-text]</blockquote>

例如,如果我点击了上面德里克评论中的回复链接,那么这里的文本区域应该预先填充:

@dww,#48

我们能否停止将此问题(具有特定范围和目的)用作您网站上与评论相关的链接的一般支持论坛?;)

谢谢,-
德里克

...这样,我所要做的就是将德里克的评论剪辑到我有兴趣引用的部分,最后输入我的回复并点击保存按钮。你怎么认为?

前辈的图片

标题:删除评论上的回复链接» 在 drupal.org 上删除单线程评论中的回复链接
版本:6.x-1.x-开发» 7.x-2.x-dev
类别:漏洞“ 特征
地位:积极的» 推迟

不管这个结果如何,它现在是一个 D7 问题,因为我们非常接近 drupal.org 升级重新启动。

有没有人看到正在进行的工作:

dww 的图片

标题:删除 drupal.org 上的单线程评论中的回复链接» 删除问题评论中的回复链接

这不仅仅是做..

dww 的图片

优先事项:次要的“ 主要的
地位:推迟“ 积极的
问题标签:
+项目,+ Drupal.org D7

我刚刚发现,即使您将节点类型配置为不显示评论线程,核心也是*始终*记录评论线程。鉴于我们选择如何解决#1632492:找出并将 project_issue 注释编号功能移植到 D7,这现在是一个大问题。我们绝对不希望人们回复特定评论并引入线程。D6 迁移被创建评论线程来为节点修订(例如问题摘要更新)创建新评论,这样我们实际上不会重新编号主要的 D6 问题后续评论,这已经够糟糕了。例如见 http://git7site.devdrupal.org/node/1981038

基于与drumm和tvn的快速IRC聊天,将其标记为do D7升级和碰撞优先级......

在升级土地上从来没有沉闷的时刻。:/

鼓的图片

我承诺http://drupalcode.org/project/project_issue.git/commitdiff/0919d58d849f9...来解决我们的评论排序问题。很好,因为它在 comment_view() 尝试添加s之前被调用我宁愿没有s不是额外的 CSS 来隐藏它们。额外的应该直接来自缓存并保持我们的代码干净。hook_comment_view()divdivnode_load()

dww 的图片

分配:未分配»德国之声

谢谢你的承诺,鼓。我已经修复了其余部分,但我现在无法让我的笔记本电脑联机来推送它。我会在今晚晚些时候推送并在此处回复以将其标记为已修复。

干杯,-
德里克

dww 的图片

地位:积极的“ 固定的

http://drupalcode.org/project/project_issue.git/commit/c3f99c9

决定将此(以及关于删除线程注释上的缩进)转换为设置,以便不希望此行为的网站可以轻松关闭它。只需重用我们已经从#1569524: Add a 'Project settings' tab on node type edit forms 中获得的所有好的项目行为特定设置管道虽然,当我在做这个的时候,我发现并修复了一个关于如何处理#states 的错误:

http://drupalcode.org/project/project.git/commit/64f1457

无论如何,现在配置了新设置,在创建默认节点类型时将如何使用它们。因此,一旦将其合并到 bzr 中并发生另一次重建,这最终将全部自动修复。

dww 的图片

ps 现在合并到 bzr 中,应该很快就会出现在 git7site 上(尽管我现在无法访问该站点)。

地位:固定的» 关闭(固定)
问题标签:-项目,- Drupal.org D7

自动关闭 - 问题已修复 2 周,没有活动。