2010年07月11日 160条评论

完美的WordPress无限嵌套回复方法

我曾今在《折腾:5级嵌套改为2级嵌套 & 主评论内悬浮显示 @ 评论(唠叨篇)》这篇文章说过我的嵌套评论结构——所有嵌套评论用 jQuery 锁定到主评论下,用的是 Jinwen 的嵌套思路 实现的,但这样有个访客体验小问题:就是回复主评论下的嵌套评论时,回复框会跑到主评论上面去,对于访客的体验非常不好,容易晕。

前几天阿邙和qiqiboy同时写了关于实现无线嵌套评论的方法,认真拜读后,觉得阿邙的方法不适合我,觉得qiqiboy的方法非常适合我。

传送门:阿邙《WordPress嵌套评论之无限嵌套》《WordPress嵌套评论之无限嵌套之补遗

qiqiboy的原理方法我不累说,具体到这里《完美解决WordPress嵌套回复的层深问题(无限嵌套)<一>

下面我只说实现方法:(由于qiqiboy在文章贴的代码错误,我花了一些时间才发现问题所在,已去qiqiboy那里评论反馈)

1. 去WP后台设置评论嵌套层数,我设为2层

2. 打开主题 functions.php 找到评论回调函数,回复按钮一般都是利用默认函数comment_reply_link(),如下

<?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>

把其修改为

<?php if ($depth == get_option('thread_comments_depth')) : ?>    <!-- 评论深度等于设置的最大深度 -->
 <!-- 将第二个参数改为父一级评论的id -->
     <a onclick="return addComment.moveForm( 'comment-<?php comment_ID() ?>','<?php echo $comment->comment_parent; ?>', 'respond','<?php echo $comment->comment_post_ID; ?>' )" href="?replytocom=<?php comment_ID() ?>#respond" class="comment-reply-link" rel="nofollow">Reply</a>
 <?php else: ?>
 <!-- 正常情况 -->
     <a onclick="return addComment.moveForm( 'comment-<?php comment_ID() ?>','<?php comment_ID() ?>', 'respond','<?php echo $comment->comment_post_ID; ?>' ) " href="?replytocom=<?php comment_ID() ?>#respond" class="comment-reply-link" rel="nofollow">Reply</a>
 <?php endif; ?>

3. 因为最后那层评论都是堆积在最后那层评论上一级,所以如果评论很多的话,就会出现不知道谁回复谁的情况,可以考虑我的评论给每个评论加上 @评论者 ,实现方法参考我以前写的《用 jQuery 实现点击回复之后显示@用户名的效果

OK,搞定,具体效果看我博客的评论

=======================

发呆时,延伸一下

PS一种情况(其实是我的情况):如果以前用的是5级嵌套,现在想用2级无限嵌套,如果按上面的方法实现无限嵌套回复,就会出现一个情况

什么情况呢?就是以前2级以后的嵌套评论都排在2级评论下面,混乱的很,那如何解决呢?我稍微想了下,两个步骤解决:

1. 修改一下判断条件$depth == get_option('thread_comments_depth')
当$depth等于后台设置的嵌套最大层数(这里是5)时,用特殊的 reply 链接,可以改一下,改为 $depth == 2,也就是第2层使用特殊的 reply 链接

2. 因为设置了5层嵌套,第1步修改后第3、4层还是会出现 reply 链接,可以在style.cs加个css属性隐藏掉第3、4层的reply

ol.commentlist li ul.children li ul.children div.reply{display:none;}/*意思是第3级以后的reply链接隐藏不显示*/

(其实可以写个 if 语句根据 $depth 的值显示 reply,这样就不用设置css了。反正举一反三,一个目的可以多种方式实现)

OK,解决。

zww
or
oooo

“完美的WordPress无限嵌套回复方法”有160条评论

  1. 阿邙 says:

    无限套套 :grin: 安全 :mrgreen:

    1. zwwooooo says:

      @阿邙 年轻要注意 :grin:

  2. Jutoy says:

    这个我真想请教你呢,哈哈,收藏之慢慢研究~~

    1. zwwooooo says:

      @Jutoy 这个方法简单

  3. 学习一下

  4. 7cbt says:

    最多5层 就足够了。太多也有点麻烦、

    1. zwwooooo says:

      @7cbt 当你讨论到第5层就知道了

  5. 海天 says:

    额 你这个和qiqi的还是不一样的啊
    他那个下一阶的 还是会向右去一点的

    1. zwwooooo says:

      @海天 一样的,注意评论样式,每个主题的评论样式不同

    2. 包子 says:

      @海天 我为什么想起来酱油

  6. 很赞的分享!

  7. 包子 says:

    baidu sitemap是骗人的吗?

    1. zwwooooo says:

      @包子 爱用不用

  8. JOY says:

    三层

  9. MOPVHS says:

    嗯?看起来Zsofa没有这个问题...

    1. zwwooooo says:

      @MOPVHS 你应该没搞懂,这跟“问题”有啥关系?

    2. MOPVHS says:

      @zwwooooo
      但这样有个访客体验小问题:就是回复主评论下的嵌套评论时,回复框会跑到主评论上面去,对于访客的体验非常不好,容易晕。

    3. zwwooooo says:

      @MOPVHS 囧~看来你真的没心看文章……你试试我这里的回复框会不会跑上最上面去,而且不然我叫完美版干嘛 :evil:

    4. MOPVHS says:

      @zwwooooo 泪奔...貌似我们说的不是同一个意思...我只是说我用的Zsofa,回复主评论下的嵌套评论时,回复框不会跑到主评论上面去~~~这么说没错了吧? :evil:

    5. zwwooooo says:

      @MOPVHS zSofa 当然不会,我自己用的主题以前会跑到上面是因为 http://zww.me/archives/24737 ,而现在这篇文章是因为解决了这个问题所以叫完美。

      (请注意出现问题的“前提”,因为你不知道我这评论结构特殊性所以你才会说“你用的zSofa回复主评论下的评论时不会跑到上面”)

    6. MOPVHS says:

      @zwwooooo 晓得了~~~ :arrow:

  10. 捷易通 says:

    呵呵 不错 了解了!谢谢

  11. countmeon says:

    我的博客也该折腾折腾了

  12. fly3q says:

    哈哈,我也来测试,无限套

  13. Mucid says:

    嵌多了会挤在一起的说 :evil:

    1. zwwooooo says:

      @Mucid 是吗?说明你根本不了解我这所说的无限嵌套样式

  14. heson says:

    无限套套,杯具了~~~~~~ :evil:

    1. zwwooooo says:

      @heson 为了安全我们要无限套套

    2. Lazyyyyyy says:

      @zwwooooo
      很期待无限套套下去是什么效果~

    3. Lazyyyyyy says:

      @Lazyyyyyy
      有点效果了。原以为每一个下级评论都会比上一级评论向右平移,于是无限评论下去的话……

      看来担心是多余~

    4. zwwooooo says:

      @Lazyyyyyy :mrgreen: 哈哈,你以为是那种嵌套啊,我记得有个博客就是这样的,很壮观

    5. 成叔叔 says:

      @zwwooooo 一起来欠操 :evil:

    6. 小邪 says:

      @zwwooooo 测试一下这个评论会出现的位置是在回复目标下方还是在回复楼最下方 ~ :grin:

    7. roger says:

      @Lazyyyyyy 觉得还是向右缩进一点会感觉层次分明

  15. Louis Han says:

    哇哦 我看到有无限多的套套啊

    1. zwwooooo says:

      @Louis Han 哈哈,安全第一嘛

  16. max says:

    我刚刚在本机测试了,基本上这么做的话,就不用再限制嵌套的层数,也就是要设多少层都行,所以我认为即使在公用主题用上这方法也没问题,太完美了!!

    1. zwwooooo says:

      @max 对啊,可以加个设置开启否,呵呵

  17. Bee君 says:

    正在尝试改造WordPress3.0的默认主题

    1. zwwooooo says:

      @Bee君 改头换面吧,把它变成自己的专用主题

  18. LAONB says:

    a-shun同学一直纠结在这个问题上吧。我晚上也给自己找点乐子,看看这个。

    1. zwwooooo says:

      @LAONB shun搞定了

  19. FORECE says:

    无限嵌套。感觉10层就够用了吧。。。

    1. zwwooooo says:

      @FORECE 其实一般主题很难保持10层嵌套样式好看的

  20. 小邪 says:

    求助,你的无限嵌套使用之后 ~ 是不是在数据库里面 ~
    某一个楼(即一个最早的主评论),下面所有子评论或者子评论的子评论以及更下一级的评论 ~
    这些评论在数据库里面的parrent id是不是都是最早的主评论?

    1. zwwooooo says:

      @小邪 你在wp后台设置了允许2级嵌套,那么回复2级的评论(3级)都锁定在主评论下;
      如果你设置允许5级嵌套,那么回复5级的嵌套都在4级嵌套内,1~4级的回复是正常的,就5级的不同。

    2. 小邪 says:

      @zwwooooo 喔喔,了解鸟 ~ 多谢 ~ :mrgreen:

回复给 fuzzz ¬
取消回复

昵称 *

网址

B em del U Link Code Quote