Aug
02


2007-08-02 22:28:24 作者:mclee.openid.35.com

偶爱偶家 看到个不错的插件 WP Thread Comments它可以给文章的评论增加回复功能。

其中div的问题我这里是添加id成comments

以下内容引用自偶爱偶家!

wordpress的评论是一个平板式的结构, 为此很多开发者开发了让wordpress的评论阅览起来更加清晰明了的插件, 包括 Brian’s Threaded Comments — thread comments(评论回复插件)、 Quoter – quote comments(评论引用插件)、 Quote Comment – another quote comments(另一款评论引用插件)【注:这里还有关于它的介绍“ Quote Comment plug-in added ”】。

关于这几款插件, 我在这里“ 让wordpress归类显示评论 ”说过了, 这里我要介绍一下WP Thread Comments这个插件。

WP Thread Comments 这个插件是我自己写的, 起因是 Brian’s Threaded Comments 使用太过麻烦, 配合模板不易因此本着偷懒的精神, 写了这个插件。wp thread comment

评论回复插件在回复的时候没有太大的变化, 只是在 wordpress 的 comments 数据表的 comment_parent 字段中写入父评论的 comment_ID 就可以了, 关键的一点是显示的时候要把子评论显示在父评论下。

要做到这一点有两个方法, 一个是利用 wordpress 的 comments_array 的filter, 在评论从数据库中取得, 但未显示前将 comments 数组内容重新排序, 输出的数序不再是按照评论ID排序, 而是按照 ID+父子评论关系排序, 这样最后到模板 comments.php 中 foreach($comments as $comment) 的时候就是子评论显示在父评论下了, 这个时候你要将子评论显示的跟父评论有所区别, 直接修改模板中 foreach 之间的内容就可以了, 根据 $comment->comment_parent == 0 就可以来判断是父评论还是子评论, 然后决定各自的显示方式, 这种方法可以实现任何你想要的格式, 而且显示起来比较完美, 而且插件写的也较简单, 运行速度快; 但缺点就是需要修改模板, 不过模板修改起来不算很复杂, 实在不想修改模板, 也就跟平常的输出一样, 就是顺序变了而已。

方法二就是 wp thread comments 采用的, 在每个父评论显示的时候 hook wordpress 的 get_comment_text filter, 然后在中间插入子评论。 但由于 wordpress 的 comments 变量不是一个全局变量(没有想明白为什么不把这个变量作为一个全局变量), 为避免子评论重复显示, 必须在此之前 hook comments_array filter, 把 comments 中子评论全部去除。 这样插件看起来就复杂很多, 不过对模板来说很好, 可以免除修改模板的麻烦。

WP Thread Comments 插件的使用很简单, 只要上传wp-thread-comments文件夹到wp-content/plugins下, 然后激活就可以了。

不过由于在点击“ [回复此评论] ”的链接时, 需要把评论输入框移动到当前位置, 所以需要把评论输入框的div id写到 wp-thread-comments.js 的moveAddCommentBelow()中, 我现在写的div id是”addcomment”, 把这个值改成你自己的div id就可以了!

对于使用某些模板的同志, 因为评论输入框在上移之后由于评论显示区域<原先的评论输入框, 会导致输入框外移, 这个时候只要使用 changeCommentSize() 函数改变框的大小就可以了。

这个插件目前刚开始运行, 连后台的配置对话框也没有写, 所以所有的修改都需要在源代码中进行。

好了, WP Thread Comments介绍完了, 如果你也想试试, 可以点这里下载WP Thread Comments。 如果您有什么好的意见或建议, 欢迎在下面留言。

WP Thread Comments 中很多的函数来源于 Brian’s Threaded Comments , 在此说明, 并感谢Brian Meidell

发表评论: