May5
WP LifeStream Plugin—SimpleLife安装说明
By hexybaby

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 晚上回家测试下…

15 comments here

  1. “Web 3.0” - 嘿!嘻嘻… Says:
    MyAvatars 0.2

    […] (用这个标题,我想起曾经被某人提出的BBR(bbs+rss)=Web3.0,当初被视为笑谈。So…请在读我的标题前举起双手,帮忙打上引号…) 写这篇源自于一个陌生外国小朋友的Blog–db0,我和这位小朋友的认识过程很简单就不多说了(见这里),接着,我在他的blog看到一个类似widget的东东… […]

  2. WordPress Plugins: SimpleLife at WordPress Today Says:
    MyAvatars 0.2

    […]   SimpleLife,是一款为WP设计的LifeStream插件,你可以用它将自己在其他网站的一举一动(last.fm、del.icio.us…或者其他feed)以时间轴的形式显示在你的blog页面或侧边栏。   个人来说非常喜欢这款插件,对于我这样现在拿Microblog当主食,懒得写Blog的人真的极其有用。这里有HexyBaby同学给出针对一些问题的解决方法:WP LifeStream Plugin—SimpleLife安装说明,推荐阅读。 […]

  3. Sparanoid Says:
    MyAvatars 0.2

    我推荐你一个吧
    http://rick.jinlabs.com/code/rss-stream

    和这个差不多,但功能比这个稍微好些,这些插件好像都没缓存机制,配合 wp-cache 用会好些,下面的链接是我的 liftstream,基于上面的那个插件做的,你可以试试

    http://sparanoid.com/lifestream/

  4. db0 Says:
    MyAvatars 0.2

    Hey, I thought I’d let you know that I’ve forked Simplelife to my own version with all my improvements :)

  5. hexybaby Says:
    MyAvatars 0.2

    @db0 So sweat~~ I’ll try your version right soon

  6. db0 Says:
    MyAvatars 0.2

    let me know how ti works out for you 😉

  7. hexybaby Says:
    MyAvatars 0.2

    @db0 ok.^-^

  8. Lifestream | Canapé Says:
    MyAvatars 0.2

    […] 我是按照这个说明安装的(步骤写的很详细),结果发现附加的那个simplelife.php和我的insense主题的css有些不搭,所以就用了插件主页上面给的那个文件,替换了一下名字,发现这回是sidebar又跑偏了,所以索性去掉了sidebar,现在就是这个结果啦,我挺满意的。成果就是在这里啦。大家也可以点击上面的Sean’s LifeStream查看这个页面。 […]

  9. 老陈 Says:
    MyAvatars 0.2

    Cache Feeds For (Min)设置0在页面上才能即时更新最新的Feeds

  10. 老陈 Says:
    MyAvatars 0.2

    现在最新版本是1.3,没有LZ说得那些问题了。

    http://ad1981.net/

  11. KiD Says:
    MyAvatars 0.2

    为什么我装上去后一直都是等待,等待的结果是没有东西 麻烦帮看一下 http://lolog.cn/blog/index.php/simplelife/

  12. hexybaby Says:
    MyAvatars 0.2

    @KiD 我压根看不到你的那个页面,打开头部之后就不开了,要不你把你的lifestream的page template发我邮箱我帮你看下?

  13. KiD Says:
    MyAvatars 0.2

    我用的就是您提供的包啊~就是在头部以下的开不了了……要不要给你密码上去瞧瞧?

  14. hexybaby Says:
    MyAvatars 0.2

    不用,你只要把你那个page template发我邮箱就可以了,顺便发一个single/page页给我

  15. KiD Says:
    MyAvatars 0.2

    兴奋啊~终于显示了~太谢谢你了~

    不过……还有点小问题~我自己添加的饭否和QZONE的图标和形式都边成了delicious的了……

    插件傻了?!呵呵