Loading...

提升本blog用户体验

类归于: Wordpress, 网站技术 — 江东 @ 2008-12-04 17:01:04 才(19)条评论

ishawn对通过show和hide来提升用户体验的方式进行了批判之后,本人决定还是要采用这个方式来提升一下用户体验。不过值得一提的是,虽然本次的提升采用的是show和hide,但是和ishawn所批判完全的不是同一个东西。

正如你看到的那样,生活点滴的sidebar中的小版块都是可以通过点击进行折叠的,可能很多和我一样有“洁癖”的网友不喜欢右边花花绿绿的小东西,这个功能正是为了满足这些朋友而诞生的。在以前,cosbeta按照自己的喜好将那些自认为不需要显示的板块进行了折叠,如你确实需要看该板块的内容,点击鼠标即可展开。然而这样的方式最大不足就是每次访问,折叠方式总会重置。所以今天cosbeta就花了点时间,改动了这个sidebar的折叠方式,一旦用户改变了sidebar中的折叠状态,在同一台计算机上下次访问的时候,依然会记住最后一次的折叠状态(其实就是一个cookie记录嘛),所以这样做应该提升了用户体验!

老朋友打开本blog的时候,请用ctrl+F5刷新一下本站,因为css和js可能缓存在你本地了。

本站的老友,这样你就可以永久关闭本站顶端的那个虚拟主机推介的广告链接了!

给wordpress增加月度评论之星功能

类归于: Wordpress, 网站技术 — 江东 @ 2008-12-03 12:37:37 才(11)条评论

细心的朋友可能已经发现了,本blog的sidebar上面已经多了一个项目,那就是“本月评论之星”,这个栏目的作用就是将最近一个月在本blog评论最多的网友给显示出来,下面就给出详细方法:

首先在模板的functions.php中增加一个函数,代码请自行下载
在合适的地方调用此函数即可u_get_recent_top_commenter($num,$size),num表示显示最多评论网友的数量,size表示网友头像图标的大小。

由于防止spam评论增加,因此评论网友的url采用javascript打开。

需要增加的一个css是.topcmtor img{border:1px solid #ccc;width:50px;height:50px;margin:2px;padding:2px}
喜欢折腾wordpress的朋友,折腾去吧!

考虑到有些朋友想用插件的方式,所以这个函数已经集成到插件 cos-custom中了,安装好该插件之后,在模板中调用函数u_get_recent_top_commenter($num)即可。其实这个插件cos-custom已经集成了很多功能,可惜识货的朋友不多,或者很多朋友都没有发现罢,里面有很多函数可以直接使用,免得再写其他查询代码了。

cos-html-cache不会导致CPU超标

类归于: Wordpress, 网站技术 — 江东 @ 2008-11-24 17:00:43 才(10)条评论

我已经在网上不止一次的看到有人说cos-html-cache这个插件会导致bluehost的CPU超标,这些朋友得出结论的来源在这里。现特写此日志,给予澄清。

在比较老的版本里面,cache的触发条件是:当有人留言,有人修改和发表post,插件会删除旧的缓存,同时生成新的缓存,这样就能保证缓存的及时更新。因此在旧的机制下,如果用户需要更新缓存就得需要两个步骤:1.删除旧的缓存;2.批量更新所有的日志,若不操作这步,该文章的缓存就只有在有用户留言或者博主重新编辑之后才能有cache生成。所以问题就出在这个第二步,如果日志过多,更新的时候会产生大量的数据库查询,从而导致CPU超标。

当cosbeta意识到这个问题的时候,就对这个插件进行了升级,升级之后的缓存机制发生了变化,而这个变化也是更加合理的。虽然我在一篇文章中详细的描述了cos-html-cache的缓存机制,这里我还是大体的提一下:插件将会在用户第一次访问的时候建立缓存文件,这个操作并不是有些朋友说的那样,会特别消耗CPU,实际情况是:插件只增加了一个文件建立的过程,所以对CPU的消耗几乎没有任何变化,就如同访问没有cos-html-cache插件的wordpress一样。因为如此,更新缓存的步骤就和老版本不一样了,直接删除所有cache便是更新了缓存,因为一旦有人访问某个没有cache的一面,cache便会自动生成。所以不会有任何大量的查询,也不会导致CPU超标。

当然,选用什么插件完全在于个人,cos-html-cache的效率到底有多高,对于post页面来说,应该是极限了。

不过,对于个人blog,用了缓存之后其实都差不多,速度这个东西,完全在于你的心,你认为它快,它便快了。

code-highlighter插件发布

类归于: PHP, Wordpress, 本站服务, 网站技术 — 江东 @ 2008-09-12 20:42:36 才(16)条评论

我用的代码高亮插件都是geshi,这个插件比较好,采用PEAR的formatter和coolcode相比,不用专门的标签,支持wp的原生态<code></code>格式的标签,所以一直以来都没有替换他。

但是这个插件有个缺点,那就是格式转换是在php端进行的,输入的代码非常的臃肿,并且也不方便复制,除非专门写javascript采用innerText来获取。所以很早就想对这个高亮重新处理。那么今天,我决定将我新处理的方式写成wp插件进行发布,这个插件的特点是对服务器的数据不做任何处理,仅仅在页面用javascript优化。所以在html源代码中甚至可以看到你的code原样。

插件下载地址:code-highlighter

特别鸣谢:http://code.google.com/p/samaxesjs/

本来是可以直接集成在模板中,但是考虑到某些朋友不愿意修改模板,所以弄成插件进行发布了!js的代码已经gzip压缩,文件大小由原来的42k降低到12k,希望不会影响到页面的载入速度。

补充,如果发现代码的半角标点被替换成全角标点,那么就是wordpress的formatting在作怪,修改wp-includes/formatting.php,把下面这一行给它注释掉:

// regular expressions
//$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

对了,顺祝大家中秋节愉快!
补充:测试样式表bug

补充(2008-09-16 11:30),看来仅仅特别感谢不够,有必要补充下面的内容:
此插件并非原创,它基于:

  1. http://code.google.com/p/samaxesjs/ or http://code.google.com/p/syntaxhighlighter/(看到留言,原来这个js高亮度代码还有另外一个主人。这两者之间什么关系啊,我彻底迷惑了,看样子好像是后者原创,但是我这个插件的JS来自前一个链接,高亮的JS版权,让他们自己去争吵吧,总之,感谢高亮JS的作者)
  2. php;
  3. wordpress;
  4. html;
  5. javascript;

另外,插件的原创和插件使用到脚本的原创没有必然关系吧,就如同1bloggerchache一样,人家使用了我的代码,但是他确实是原创。无所谓,是不是原创丝毫不影响我,你说不是便不是,我做的仅仅是让高亮的代码以插件的方式嵌入到WP的风格中,使之使用起来更加简单,然后在这个blog上分享而已。

真是搞笑,还分享过毛线啊!

wordpress2.6.2发布

类归于: Wordpress, 网站技术 — 江东 @ 2008-09-09 09:05:23 才(3)条评论

这个wordpress更新得也太频繁了吧,已经跟不上他的脚步了。按照官方的说法,如果你的blog开放了用户注册,请记得一定要更新到这个最新的2.6.2版本。原文部分如下:

If you allow open registration on your blog, you should definitely upgrade. With open registration enabled, it is possible in WordPress versions 2.6.1 and earlier to craft a username such that it will allow resetting another user’s password to a randomly generated password. The randomly generated password is not disclosed to the attacker, so this problem by itself is annoying but not a security exploit. However, this attack coupled with a weakness in the random number seeding in mt_rand() could be used to predict the randomly generated password.

如果你的blog开放了用户注册,在2.6.1以及之前的版本,新注册的用户可以想办法重新设置其他用户的密码,由于mt_random()函数本身的弱点,导致攻击者可能据此猜测出被攻击注册用户的密码。虽然这个问题并不是很容易的发生,但是还是建议开放注册用户的blog升级该程序,下载地址:Download WordPress 2.6.2

关于wordpress无法显示评论最多文章的解决办法

类归于: Wordpress, 网站技术 — 江东 @ 2008-09-04 11:10:28 才(3)条评论

最近突然发现sidebar的热门(即评论最多)文章的功能失效了,以为是插件和wp2.6不兼容,所以懒得去理,结果今天打开我的模板文件,发现了这样一行:$myposts = get_posts('numberposts=15&offset=0&orderby=comment_count&order=DESC');看来并不是插件的问题,于是进入wp的codex查看get_post标签是不是又有变化,结果发现orderby并不支持comment_count的排序方式:

$orderby
(string) (optional) Sort posts by one of various values, including:

* ‘author’ – Sort by the numeric author IDs.
* ‘category’ – Sort by the numeric category IDs.
* ‘content’ – Sort by content.
* ‘date’ – Sort by creation date.
* ‘ID’ – Sort by numeric post ID.
* ‘menu_order’ – Sort by the menu order. Only useful with pages.
* ‘mime_type’ – Sort by MIME type. Only useful with attachments.
* ‘modified’ – Sort by last modified date.
* ‘name’ – Sort by stub.
* ‘parent’ – Sort by parent ID.
* ‘password’ – Sort by password.
* ‘rand’ – Randomly sort results.
* ’status’ – Sort by status.
* ‘title’ – Sort by title.
* ‘type’ – Sort by type.

于是再次放google搜索,发现了wp论坛的这篇文章

comment_count does indeed increment when you add a comment, there’s no changes you should need to make for that.

But you cannot orderby comment_count, because nobody has ever wanted to do that ever before. So, in query.php on line 943, you’ll find this:
$allowed_keys = array(’author’, ‘date’, ‘category’, ‘title’, ‘modified’, ‘menu_order’);

Add comment_count to that array and then your orderby should work

终于找到原因了,但是2.6的修改却不一样,对于2.6,正确的修改应该是这样,找到/wp-includes/query.php,修改1254行如下:
$allowed_keys = array('author', 'date', 'category', 'title', 'modified', 'menu_order', 'parent', 'ID', 'comment_count', 'rand' );

comment_count一定要加到中间,然后再将1264行道1274行的代码替换如下:
switch ($orderby) {
case 'menu_order':
break;
case 'ID':
$orderby = "$wpdb->posts.ID";
break;
case 'comment_count':
$orderby = "$wpdb->posts.comment_count";
break;
case 'rand':
$orderby = 'RAND()';
break;
default:
$orderby = "$wpdb->posts.post_" . $orderby;

修改完成!
如果你是一个懒虫,请直接下载这个文件,覆盖/wp-includes/query.php即可,于是乎,评论最多文章的功能又出来了.
query.php下载地址:query

————————–end——————— (read on …)

cos-html-cache升级到2.6

类归于: Wordpress, 网站技术 — 江东 @ 2008-07-18 20:39:28 才(53)条评论

看来侥幸是没有用的,今天收到JackyChen的邮件,说我的blog出问题了,因为他看到的界面居然是已经登陆的界面(当然只是假登录,不是安全隐患),原来wp2.6居然又改变了cookie的相关东西

A number of proactive security enhancements, including cookies and database interactions.

所以cos-html-cache还得要升级跟上。既然要升级,索性把其他一些小问题给修改修改,2.6的修改如下:

  1. 解决了用户在登录的情况下生成缓存文件的问题,因为这种情况下访客看到的界面是admin当前看到的状态,会导致访客无法留言;
  2. 解决了非主流blog地址的静态化文件问题,某些用户反映如果手动修改了默认路径后将无法生成缓存,特别是在godaddy的主机上,多谢麦可.志的修改,于是经过检查和测试之后我直接拿来改进了;
  3. 解决了已登录用户在发表留言时看到admin-logged@fake.com的困惑,已用admin邮件地址替代,同时为了防止邮件抓取,源代码中已经将@符号给予替代;

下载地址:cos-html-cache1

或者去这里查看历史版本:http://www.storyday.com/html/y2007/1213_cos-html-cache-2.html

wordpress官方下载地址:http://wordpress.org/extend/plugins/cos-html-cache/

最新版本2.6.2,以wordpress官方为准

访客留言历史记录插件 发布

类归于: HTML客户端, PHP, Wordpress, 网站技术 — 江东 @ 2008-06-25 15:07:28 才(6)条评论

按照以前的习惯,该插件的名字叫做:cos_visitor_comment。

插件功能:根据cookie,显示当前访问blog访客的历史留言,方便访客查看、检查。

插件实现:基于ajax,所以即使页面全部静态化也可以正常使用

安装方法:上传插件-》激活插件-》修改模板。在需要的显示访客留言的地方,插入如下代码
< ?php show_visitor_comment(5,50,"我的评论");?>
5表示只显示最近5条,50表示字数从第50个开始切断,“我的评论”则是该部分的标题,还不清楚的朋友,改变上面几个参数看看就知道了。

css美化:html结构如下,熟悉css的自行美化

  • 我的评论
  • 评论
  • 评论
  • 评论


下面是CSS示例,修改成你需要的样式,添加到模板文件的css中(本人喜欢集中处理,所以这个插件没有另行增加css)
ul#visitor_cmt{
padding:3px;margin:3px;border:1px solid #ccc;width:100px;
/*整个ul的风格*/
}
ul#visitor_cmt li{
list-style:none;/*不显示list的默认黑点*/
}
li.li-1{color:red;/*交替颜色*/}
li.li-0{color:green;/*交替颜色*/}
ul#visitor_cmt li.vc_title{/*修饰标题*/
font-size:120%;
font-weight:bold;color:Red;list-style:none;
}

有朋友问过几次本站的“我的留言”是如何实现的,所以干脆花点时间整一个插件送给你们,喜欢的就下载用吧,有问题的就请留言哈。
对了,下载地址在这里cos_visitor_comment(一定得把下载地址放在最后,否则某些小弟弟又不看说明,然后问出一大堆重复的问题出来)