Typecho
Home
Docs
Community
Blog
Download
您在这里:
Typecho文档站点
»
主题开发
»
自定义评论列表区域
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 自定义评论列表区域 ====== 假如我们要实现一段这样的评论的 html 代码,效果当然要综合 css 样式来看 <code html><li id=\"li-comment-250\" class=\"comment-body comment-parent comment-odd\"> <div id=\"comment-250\"> <div class=\"comment-author\"> <img class=\"avatar\" src=\"avatar.png\" alt=\"\" width=\"40\" height=\"40\"><!-- 评论者头像 --> <cite class=\"fn\"><a href=\"评论者主页\">评论者名字</a></cite> </div> <div class=\"comment-meta\"> <a href=\"评论地址\">评论时间</a> <span class=\"comment-reply\">回复按钮</span> </div> <p>我是评论内容</p> </div><!-- 评论者信息及内容 --> <div class=\"comment-children\"> <!-- 嵌套评论相关 --> </div> </li></code> 如何去实现呢?首先要打开模板文件夹里的 comments.php 文件,做好修改准备。 ===== 一、把上面的代码,也即你要自定义的 html 代码,复制到这个文件的最上面 ===== ===== 二、在这段代码的外围加入自定义评论样式的函数 ===== <code php><?php function threadedComments($comments, $options) { $commentClass = \'\'; if ($comments->authorId) { if ($comments->authorId == $comments->ownerId) { $commentClass .= \' comment-by-author\'; //如果是文章作者的评论添加 .comment-by-author 样式 } else { $commentClass .= \' comment-by-user\'; //如果是评论作者的添加 .comment-by-user 样式 } } $commentLevelClass = $comments->_levels > 0 ? \' comment-child\' : \' comment-parent\'; //评论层数大于0为子级,否则是父级 ?> //自定义评论函数开始 //这里是上面的 html 代码 <?php } ?> //自定义评论函数结束</code> ===== 三、在 li 的 css 样式中判断不同层次的、不同 ID 的评论,并添加 css 样式 ===== 注意区别下面两句的不同地方 <code html><li id=\"li-comment-250\" class=\"comment-body comment-parent comment-odd\"></code> 加入判断代码之后,第一处是判断评论 ID,后者是判断当前评论是父级评论还是子级评论,且判断评论 ID 的奇偶数 <code php><li id=\"li-<?php $comments->theId(); ?>\" class=\"comment-body<?php if ($comments->_levels > 0) { echo \' comment-child\'; $comments->levelsAlt(\' comment-level-odd\', \' comment-level-even\'); } else { echo \' comment-parent\'; } $comments->alt(\' comment-odd\', \' comment-even\'); echo $commentClass; ?>\"></code> ===== 四、添加评论者的相关信息和评论内容 ===== <code html><div id=\"comment-250\"> <div class=\"comment-author\"> <img class=\"avatar\" src=\"avatar.png\" alt=\"\" width=\"40\" height=\"40\"><!-- 评论者头像 --> <cite class=\"fn\"><a href=\"评论者主页\">评论者名字</a></cite> </div> <div class=\"comment-meta\"> <a href=\"评论地址\">评论时间</a> <span class=\"comment-reply\">回复按钮</span> </div> <p>我是评论内容</p> </div></code> 更改后代码,注意各个信息的代码是什么 <code php><div id=\"<?php $comments->theId(); ?>\"> <!-- 评论 ID --> <div class=\"comment-author\"> <?php $comments->gravatar(\'40\', \'\'); ?> <!-- 评论者头像,相关参数请参照下文 --> <cite class=\"fn\"><?php $comments->author(); ?></cite> <!-- 评论作者及连接,连接可在后台设置是否开启 --> </div> <div class=\"comment-meta\"> <a href=\"<?php $comments->permalink(); ?>\"><?php $comments->date(\'Y-m-d H:i\'); ?></a> <!-- 时间及该评论连接 --> <span class=\"comment-reply\"><?php $comments->reply(); ?></span> <!-- 回复按钮 --> </div> <?php $comments->content(); ?> <!-- 评论内容 --> </div></code> 相关参数及说明: <code php><?php $comments->gravatar(\'40\', \'\'); ?> //头像,有两个参数,大小、默认头像? <?php $comments->author(); ?> //评论作者 <?php $comments->permalink(); ?> //当前评论的连接地址 <?php $comments->date(\'Y-m-d H:i\'); ?> //评论时间,可在括号里设置格式 <?php $comments->reply(); ?> //回复按钮,可在括号里自定义评论按钮的文字 <?php $comments->content(); ?> //评论内容</code> ===== 五、添加嵌套评论(子评论)的代码 ===== <code html><div class=\"comment-children\"> <!-- 嵌套评论相关 --> </div></code> 更改后如下: <code php><?php if ($comments->children) { ?> //是否嵌套评论判断开始 <div class=\"comment-children\"> <?php $comments->threadedComments($options); ?> //嵌套评论所有内容 </div> <?php } ?> //是否嵌套评论判断结束</code> 到这里整个自定义评论样式到这里就结束了,**最终得到**的便是以下代码 <code php><?php function threadedComments($comments, $options) { $commentClass = \'\'; if ($comments->authorId) { if ($comments->authorId == $comments->ownerId) { $commentClass .= \' comment-by-author\'; } else { $commentClass .= \' comment-by-user\'; } } $commentLevelClass = $comments->levels > 0 ? \' comment-child\' : \' comment-parent\'; ?> <li id=\"li-<?php $comments->theId(); ?>\" class=\"comment-body<?php if ($comments->levels > 0) { echo \' comment-child\'; $comments->levelsAlt(\' comment-level-odd\', \' comment-level-even\'); } else { echo \' comment-parent\'; } $comments->alt(\' comment-odd\', \' comment-even\'); echo $commentClass; ?>\"> <div id=\"<?php $comments->theId(); ?>\"> <div class=\"comment-author\"> <?php $comments->gravatar(\'40\', \'\'); ?> <cite class=\"fn\"><?php $comments->author(); ?></cite> </div> <div class=\"comment-meta\"> <a href=\"<?php $comments->permalink(); ?>\"><?php $comments->date(\'Y-m-d H:i\'); ?></a> <span class=\"comment-reply\"><?php $comments->reply(); ?></span> </div> <?php $comments->content(); ?> </div> <?php if ($comments->children) { ?> <div class=\"comment-children\"> <?php $comments->threadedComments($options); ?> </div> <?php } ?> </li> <?php } ?></code> **注意:**上面的自定义评论代码输出的就是本来评论页里的这段代码,所以你就不用对原来的这段代码做任何更改了。 <code php><?php $comments->listComments(); ?></code> SVN 版本更新:首次评论审核提示,在自定义评论代码的适当地方添加以下语句,否则将看不到审核提示语句。 <code php><?php $singleCommentOptions->commentStatus(); ?></code> 蚂蚱整理于 2012.03.16 如果系统加了反斜杠,请到下面看正确代码 http://mazha.sinaapp.com/archives/16/
登录
文章
阅读
显示源文件
过去修订
搜索
打印/导出
可打印版本
工具
反向链接
最近更改
媒体管理器
网站地图
永久链接
引用此文