暂时还没有空切,过两天吧。。
SimpleLife是一款为WP设计的LifeStream插件,你可以用它将自己在其他网站的一举一动(last.fm、del.icio.us…或者其他feed)以时间轴的形式显示在你的blog页面或侧边栏。这里有更多介绍。这里是我的成果。
几乎花了两天的时间搞定这个东西,期间波折不断,对于我这个coding盲来说,几乎是历经万难哇。
曾经试图从各种Search engine上找说明,但都未遂,so 我要将整个过程记录下来,供想要尝试的人参考。
首先需要说明的是,我对代码知之甚少,很多时候也许有更好的、更妥善的代码改良方法,但我只能从逻辑角度找到临时解决方案,所以如果你是牛人,就不用看了,这篇只给跟我一样的抠腚盲用。
详细安装说明如下:
- 1.下载SimpleLife包
这个包里的文件和代码是我改过的,基本上解决了以下我将提及的问题,不过你也可以从官网下原代码版本:SimpleLife 1.1b。 - 2.解压缩后,将其中的simplelife文件夹考到WP的plugins文件夹((your domain)/public_html/wp-content/plugins/)
- 3.登录WP管理后台,进入plugin管理,找到SimpleLife,将它激活(Activate)
- 4.配置SimpleLife options(WP后台setting/SimpleLife)
General Settings 设置时间显示格式什么的,具体可以参考它给出的php函数表链接;其中的“Cache Feeds For (Min):”指单个feed每次最大更新数,比如last.fm这种可能item更新比较快的feed,用这个设置可以避免满屏都是同一个feed的item。
Hover Styles 鼠标悬浮时的效果
其他都是对不同stream源样式的修改和添加。你可以在默认给出的last.fm、flickr等服务里直接填写用户名;
也可以在Extra Feed 中加入其他feed,如果要在这些feed之前显示icon,可以将icon的图片(16*16,格式不限)上传到plugins的simplelife文件夹中((your domain)/public_html/wp-content/plugins/SimpleLife/)。 - 5.创建LifeStream Page
(1)把压缩包里的simplelife.php(是simplelife文件夹外的那个)上传到当前你所使用的theme文件夹((your domain)/public_html/wp-content/Themes/(Your theme)/)
原代码包里有一个Example_Page_Template_Upload_To_Current_Theme_Directory.php,这个是作者给出的模板,多了一些没有用的东西,我后来给去掉了,结构重新调了下,各别class需要你根据自己现在的theme来做更改。
(2)登录WP后台,write a page,选择Page Template下拉中的simplelife。填写title(在各页面header里的入口文链),内容空着就行了。
现在基本上已经完成了整个安装过程。
下面的问题是使用官方代码的同学需要注意的:
- 1.使用原代码版本可能会遇到页面上出现大量乱码,原因可能是:
(1)SimpleLife.php文件中代码断行格式需要转换成UNIX格式(官方FAQ有提到):
用dreamwaver打开该文件,选择“Edit”->“Preferences”命令。然后在Category栏中选择“HTMLFormat”,然后再从 “LineBreaks”列表中选择“LF(Unix)”,单击“OK”按钮以使配置生效果,保存该.php文件。
(2)SimpleLife.php文件中将add menu语句放置在最后,导致WP无法读取之前的代码:
需要将这句从末尾调到最前面(//code for stripos for php4 installations 的前面,版本介绍后面):
//add menu
add_action(‘admin_menu’, ‘simplelifeOptions’);
add_action(‘plugins_loaded’, ‘doSimpleWidget’);
ms老版本的WP不会出现这个问题,可能原作者没有考虑到兼容性问题,在我提供的压缩包里这个问题已经改好了。 - 2.对于Extra Feed,如果你添加的feed是类似于del.icio.us、google reader、feed提供商(feedsky、feedburner等)item的hyperlink指向与feed的源域名(比如del.icio.us…)不同网站的,那么在SimpleLife options设定的样式将会默认为del.icio.us的样式。
我翻了它的代码没有找到问题所在,在官网上有人提出解决方案:
db0 wrote:
$feedurl = $item->get_feed()->subscribe_url();
if ($feedurl == $ff) {$class = ‘flickr’;}
if ($feedurl == $df) {$class = ‘delicious’;}
if ($feedurl == $bf) {$class = ‘blog’;}
if ($feedurl == $tf) {$class = ‘twitter’;}
if ($feedurl == $lf) {$class = ‘last.fm’;}
if ($feedurl == $fbf) {$class = ‘facebook’;}
if ($feedurl == $f1) {$class = ‘simple_feed1′;}
if ($feedurl == $f2) {$class = ‘simple_feed2′;}
if ($feedurl == $f3) {$class = ‘simple_feed3′;}
if ($feedurl == $f4) {$class = ‘simple_feed4′;}
但我试着用这个替换原先的代码,发现Extra Feed好了,但是last.fm等等默认给出的服务class又丢失了,所以我用了非常恶心的招数,将两者结合,各自屏蔽掉有问题的部分:
/* Kieran’s */
$url = $item->get_permalink();
if (stripos($url, ‘flickr’) !== false) {$class = ‘flickr’;}
if (stripos($url, ‘facebook’) !== false) {$class = ‘facebook’;}
if (stripos($url, ‘last’) !== false) {$class = ‘lastfm’;}
if (stripos($url, substr(get_option(’s_blog’), 5,9)) !== false) {$class = ‘blog’;}
/*if (stripos($url, substr(get_option(’simple_feed1′), 5,9)) !== false) {$class = ’simple_feed1′;}
if (stripos($url, substr(get_option(’simple_feed2′), 5,9)) !== false) {$class = ’simple_feed2′;}
if (stripos($url, substr(get_option(’simple_feed3′), 5,9)) !== false) {$class = ’simple_feed3′;}
if (stripos($url, substr(get_option(’simple_feed4′), 5,9)) !== false) {$class = ’simple_feed4′;}
*/
/* Your */
$feedurl = $item->get_feed()->subscribe_url();
/*if ($feedurl == $ff) {$class = ‘flickr’;}
if ($feedurl == $df) {$class = ‘delicious’;}
if ($feedurl == $bf) {$class = ‘blog’;}
if ($feedurl == $tf) {$class = ‘twitter’;}
if ($feedurl == $lf) {$class = ‘last.fm’;}
if ($feedurl == $fbf) {$class = ‘facebook’;}*/
if ($feedurl == $f1) {$class = ’simple_feed1′;}
if ($feedurl == $f2) {$class = ’simple_feed2′;}
if ($feedurl == $f3) {$class = ’simple_feed3′;}
if ($feedurl == $f4) {$class = ’simple_feed4′;}
在我给出的下载包里代码就是这个样子,如果你使用的是原代码包请尝试其他方法。我已将这条发布到作者的讨论区,等待其他人给出更好的解决方案。 - 3.页面出现:
Warning: /home/public_html/wp-content/themes/cache/*.spc
is not writeable in /home/public_html/wp-content/plugins/simplelife/simplepie.inc on line 1623
此问题是指simplelife需要在你的wp-content目录下创建缓存文件,但你的wp-content没有给“所有”写入权限,所以你可以:在(your domain)/public_html/wp-content/下创建一个cache目录,并右键属性中权限将“写入”全部勾选上就可以了。
也许你还会遇到其它问题,你可以到SimpleLife的官网发表回复,也许会得到答案,或者发邮件给我(hexybb [at] gmail),我们一起研究下。
UPDATE:
db0 MS已经修改了他的代码,并且给出了新的代码包:hacked version here 晚上回家测试下…















