每次做新风格,都会有一大堆使用心得,经常会想,“要是EE能这样做多好”、“要是能那样运行多好”。EE的开发团队EllisLab全都是牛人,整个公司非常技术化,他们的价值观也和其他公司有一些区别:EllisLab非常重视Web开发者的开发体验,甚至要高于网站所面向的最终用户——那是Web开发者所需要考虑的内容。
我想正是这个价值观,造成了EE与众不同的特色,包括好的和不好的(最显而易见的例子就是很漂亮的后台界面和很垃圾的默认前台界面)。也是因为EllisLab非常坚持自己的价值观,因此在面对社区的功能需求方面甚至会显得有些固执——只要有自己的观点,EllisLab就会坚持自己的路线方针不动摇。
最初我觉得EllisLab面对社区不够友好,但后来慢慢多了些理解,那并非无视用户需求,而是对于技术和理想主义的崇拜所导致的偏执,狂热的技术分子多少都会有些这类毛病的。至于需要增加的功能,干脆自己来改好了。
进入正题。
EE输出的评论内容全都是经过格式化的,即带有HTML标记,截断的话就可能会出现HTML标签被断开,导致页面解析错误。如果是自己写的文章,可以修改下内容避开发生截断问题的位置,但是用户评论就不能这么信手调整了。所以,需求就是:让EE能够输出不经格式化的评论原文内容,这样就可以在首页上放心显示限定字数的“最近评论”了。
修改方法:
打开EE的 system/modules/comment/mod.comment.php 文件,查找如下内容(大约在第1164行前后):
if ($EXT->active_hook('comment_entries_comment_format') === TRUE)
{
$comment = $EXT->call_extension('comment_entries_comment_format', $row);
if ($EXT->end_script === TRUE) return;
}
else
{
$comment = $TYPE->parse_type( $row['comment'] ......
增加如下粗体四行,修改为:
if ($EXT->active_hook('comment_entries_comment_format') === TRUE)
{
$comment = $EXT->call_extension('comment_entries_comment_format', $row);
if ($EXT->end_script === TRUE) return;
}
<strong>elseif ( $TMPL->fetch_param('no_formatting') == "true" )
{
$comment = $row['comment'];
}</strong>
else
{
$comment = $TYPE->parse_type( $row['comment'] ......
OK,Hack部分修改完成。使用方法也很简单,在输出评论的 {exp:comment:entries} 标签中加入一个参数:no_formatting=“true”,就像下面这样:
{exp:comment:entries no_formatting=“true”}
That’s All.
真厉害呀,对于php我还一点都不会呢。