April 23, 2007

中文wordpress工具箱的不足与改进

      中文wordpress工具箱是桑林志的作者桑葚写的一个wordpress插件, 给wordpress的中文用户带来了很多非常实用的功能, 在wordpress的广大爱好者中被广泛使用。 我从装上wordpress的第一天开始就使用这个工具箱至今, 觉得功能非常好用而且非常实用! 需要的朋友可以从桑林志上下载, 就在这里《 中文 WordPress 工具箱 》。

这个是中文wordpress的介绍

       用来解决官方 WordPress 没有照顾到的中文相关问题。使用这个插件,你可以显示随机文章,最新留言(最新引用),留言最多文章,发表评论最多的网友,还有真正的文章摘要,等等,真正截断,没有乱码。

      不过我在使用过程中发现几个小的问题存在, 当然不影响整体的功能。

1、 中文wordpress工具箱在截取中由于没有考虑html标志符的问题, 所以有的时候会把摘要截断在html标志符的中间位置, 导致html标志符出错, 当然在输出the_excerpt()的时候, 其他的所有标志符都已经被wordpress自带的函数去除掉了, 只剩余了<br>、<br /> 和 <p></p>, 但由于截断的时候没有考虑这个标志符, 如果正好有的时候被截断在 <b  这个位置的话, 在IE中没有出现任何不适, 但在Firefox中就会看到刚开始的某些字符都是正常的, 但从第二篇日志开始所有的字符都是粗体了, 这个我刚开始的碰到过,但一直没有想明白怎么会出现这样的问题, 还以为是我的css文件有问题, 后来检查源文件才发现这里出现了一个“ <b ”, 可能是 Firefox 和 IE 各自对 W3 的解析不同才导致出现不同的情况。

针对这个问题, 我对此的更改是这样的, 在原来这个函数中

function mul_excerpt ($excerpt) {
     $myexcerpt = substr($excerpt,0,255);
     return utf8_trim($myexcerpt) . ‘… ‘;
}

增加一个判断, 判断是否是截断了 HTML 标志符, 如果截断了标志符的话, 那就重新截取。

function mul_excerpt ($excerpt) {
     $myexcerpt = substr($excerpt,0,255);
     if(strlen($myexcerpt)==strlen($excerpt))
              return $excerpt;
     else{
             if(($pos_myexcerpt = strrpos($myexcerpt, “<”)) > strrpos($myexcerpt, “>”))
             $myexcerpt=substr($myexcerpt, 0, $pos_myexcerpt);

             return ‘<p>’ . strip_tags(utf8_trim($myexcerpt), ‘<br>’) . ‘…</p>’;
     }
}

这里红色的代码就是用来判断和重新截取的, 就可以防止上面问题的产生。(中间的蓝色代码将在下面讲述用处)

 

2、 在使用中文wordpress工具箱的过程中, 我突然有一天突发奇想, 去验证了我的博客的是否符合W3C的要求, 具体验证中出现的见前文《 原来通过W3C还是蛮困难的 》, 如果你也有兴趣验证一下您的博客, 可以前往这个地址验证: http://validator.w3.org/check , 向着W3C方向迈进是我们的目标。

      言归正传, 在验证过程中首页缺少了很多的</p>, 从道理上来说</p>这个应该是和<p>一一对应的, 不太可能缺少的, 而且我是采用所见即所得的编辑器编辑每一篇文章的, 输入过程中不需要我手动输入<p></p>的, 也就不存在手工遗漏的问题, 然后查看源文件, 发现在  the_excerpt()  中输入了连续的<p><p>却只有一个</p>, 由此问题得到合理的解释, 问题出在中文 wordpress 工具箱上, 具体出这个问题的原因就在于中文wordpress工具箱在截断文章时没有考虑 HTML 标志符(原因同上)。 但这个问题的解决不能采用截短的方式来操作,因为<p>永远都处于每天文章的第一个字符的, 这样就需要加一个</p>, 但因为有的时候也正好截在</p>之后, 那就不需要加了。 因为本人对php的编程可以说一窍不通, 最后只能去找php自己提供的函数, 幸好给我找到了, 那就是 strip_tags() , 这个函数可以删除所有的 HTML 标志符, 具体帮助见php官方网站的帮助文档。 所以我就把原来的函数中的

return utf8_trim($myexcerpt) . ‘… ‘;

改成了

return ‘<p>’ . strip_tags(utf8_trim($myexcerpt), ‘<br>’) . ‘…</p>’;

这里增加了  ‘<p>’  和   ‘</p>’   的原因就是因为 strip_tags()删除了文章中的<p></p>。 可能这样做会引发排版不是非常好的结果, 不过到目前位置, 我还未发现这个问题。经过这样修改后, 就不会出现缺少 </p>  的问题了。

      我会把这个问题反馈给桑椹, 也非常感谢桑林志给我们提供如此好的工具箱。

  您喜欢本文吗?即刻订阅"偶爱偶家",精彩文章不再错过!现在就给我们留个话吗?

 

« Earth Day(世界地球日) Feedsky的ping不行了吗? »
16 responses to "中文wordpress工具箱的不足与改进"
Oldjan said:
2007年04月26日

你好,我是一位小菜鸟,我打算把我现在的模板改为4U的,但我在本地测试时发现我使用中文WORDPRESS工具箱后不知道该如何显示摘要。。。可能是我太菜了,我启用插件后,在写新文章的那个可选摘要里面填上我想显示的摘要,但始终还是无法在首页看见摘要,我又不想使用,不想让订阅的人没法看到全文。可以告诉我要怎么在首页显示摘要,同时能让订阅用户可以查看全文吗?
我加你友情链接了,如果你愿意也请加我 Oldjan’s Blog,谢谢~

[Reply]

Oldjan said:
2007年04月26日

我又不想使用MORE语法强行截断,不想让订阅的人没法看到全文。

[Reply]

枫叶 said:
2007年04月27日

您好, 使用中文wordpress显示摘要, 对于4u这个模板是需要修改index.php这个文件的, 把里面的the_content(’继续阅读 »’);修改成the_excerpt();就可以了, 但要激活中文wordpress工具箱, 这个时候rss输出应该是全文的, 我这里的rss输出就是全文的.
具体的你可以先看看这篇文章, 桑椹有详细的说明
http://yanfeng.org/blog/wordpress/kit/
欢迎继续讨论

[Reply]

枫叶 said:
2007年04月27日

“我启用插件后,在写新文章的那个可选摘要里面填上我想显示的摘要,但始终还是无法在首页看见摘要”

其实你不需要在写文章的时候填写摘要的, 写文章还是按照一般的写就可以了, 他修改的是模板, 会自动对你的文章进行截断而输出摘要的, 这个时候rss的输出是全文的, 如果你写了摘要, rss的输出会变成摘要的. 所以你只要修改了index.php的模板, 其他的事情不用管了, 中文wordpress工具箱会帮你搞定一切的.

你只要写文章就可以了, 不用写摘要

[Reply]

枫叶 said:
2007年04月27日

友情链接我已经做好了, 以后多多关照啊. 呵呵!

[Reply]

Oldjan said:
2007年04月27日

谢谢了,终于弄懂了~

[Reply]

Oldjan said:
2007年04月27日

哦还有,如果我想对某一篇文章设置摘要,比如说我有三副图,但我只想在首页显示一副图,该怎么弄呢?而且得让RSS显示全文

[Reply]

枫叶 said:
2007年04月27日

这个要求我还不知道怎么达到, 目前看来还没人做这个功能. 所以暂时你还没有办法, 或者你再搜索看看有没有, 不好意思帮不了你

[Reply]

2007年07月03日

中文 WordPress 工具箱的熱門文章…

  我用的Wordpress外掛「中文 WordPress 工具箱」裡面有顯示「評論最多的帖子」這個功能,也就是我的網站右手邊的「熱門文章」區塊。但是他會包含頁面,如我的花履歷以及留言版,都是用….

Hitbali said:
2008年01月21日

喜欢这个插件的随机显示功能

[Reply]

[...] 但是测试中又遇到了问题,发现有的页面显示正常,有的侧边栏则没有了。经过一些测试,认定问题出在中文的文章上。于是想到了我在用的中文wordpress工具箱。将其deactivate,重新测试有问题的页面,果然显示正常,只是中文的文章无法正常截断,显得很难看。又一轮google,看到了这篇文章,一个对工具箱的简单优化。 [...]

Gr.Zhang said:
2008年03月16日

很好,很喜欢

[Reply]

[...] 具体我在这里有所说明《 中文wordpress工具箱的不足与改进 》, 桑椹也准备改进, [...]

xx said:
2009年05月08日

出现下面问题

Parse error: syntax error, unexpected ‘>’ in /home/content/s/a/o/saomonks/html/xxcvb.cn/wp-content/plugins/mulberrykit.php on line 195

[Reply]

UGGboots said:
2009年11月23日

http://www.6inchboot.com/

UGG boots;cheap UGG;UGG classic

[Reply]

2010年01月27日

这个工具箱是如何使用的?好像我激活后没有反应嘛,说明好像是激活就可以了……

[Reply]

Leave a comment