Tag: fbo
FBO wordpress plugin 0.3
by Robin Lu on Apr.09, 2006, under Uncategorized
因为本职工作太忙,搁置了一端时间,最近抽空把它搞出来了。
花了一些时间重构,把opml的解析和生成彻底分成独立模块,把view的部分也独立出来,从目前结构上讲,不但可以很容易加入新的provider,新的view也可以以插件形式加入了。目前支持的view有两个,一个是可以放在sidebar里的fbo_list_show(),我的sidebar就是一个例子,还有就是可以放在page template里的fbo_show(),就象这里。
这次最大的改变是采用了异步触发FBO的生成和搜集过程。在无需后台cron的支持下,FBO的生成和搜集仍然由用户浏览页面触发,但触发通过XMLHttpRequest转化成一个不阻塞的后台异步过程,用户不会感到任何的延迟。也因为这个原因,在刚安装完这个版本后,最好在Option中先强制搜集一次朋友的FBO信息。
另外就是改善了缓存机制。
下载在这里:
fbo.0.3.tar.gz
安装方式仍然是在wp-content/plugins下解开,在plugin页面中enable,然后在Option下的FBO里配制。
五分钟为FBO wordpress插件制作一个365key的provider
by Robin Lu on Feb.03, 2006, under Uncategorized
Friends By Outline wordpress插件从v0.2起开始支持自定义内容扩展。缺省情况下,只能按照你的wordpress blog、del.icio.us和flickr的内容来生成一个outline。通过自定义内容扩展,可以很容易的导入其他内容。我把这种内容扩展叫做 provider。现在就以365key为例,看看怎么制作一个provider让你的FBO支持365key网摘。
首先,创建一个名字叫365key.php的文件。在这个文件里需要实现两个函数,一个提供一个配制信息,一个通过配制信息提取365key的内容,导入FBO。
配制信息函数类似wordpress中的配制页面函数,需要提供配制页面的内容和处理提交的信息。在这里,我们只需要得到用户的365key ID,那么这个函数就是这样的:
function b365key_option()
{
if (!empty($_POST['doSubmit'])) {
update_option(’fbo_365key_id’, $_POST['fbo_365key_id']);
}
?>
<p>
<label> My 365key ID:<br/>
<input type=”text” name=”fbo_365key_id”
value=”<?php echo get_option(’fbo_365key_id’); ?>” />
</label>
</p>
<?php
}
我 们有了365key的id,就可以通过”http://www.365key.com/rss/<id>”来访问网摘,并通 过wordpress自带的MagpieRSS函数提取这个内容,再创建一个OPMLItem对象,用一个attribute array来初始化这个对象(也可以使用这个对象的AddAttribute方法添加属性),最后把这个对象插入以函数参数形式传入的OPML对象中,并 返回这个对象就可以了。这个函数如下:
function b365key_provider($obj)
{
$b365key_id = get_option(’fbo_365key_id’);
if(!empty($b365key_id)) {
$rss = fetch_rss(’http://www.365key.com/rss/’.$b365key_id);
foreach($rss->items as $item)
{
$item_date=date(’Y-m-d H:i’,
strtotime($item['pubdate']));
$node = new OPMLItem(array(
‘title’=>htmlspecialchars($item['title'], ENT_COMPAT, ‘UTF-8′),
‘type’=>’link’,
‘dateCreate’=>$item_date,
’subject’=>$item['category'],
‘htmlURL’=>htmlspecialchars($item['link'], ENT_COMPAT, ‘UTF-8′)));
$obj->AddChild($node);
}
}
return $obj;
}
然后,我们需要分别注册这两个函数:
fbo_add_provider(’bookmark’, ‘b365key_provider’);
fbo_add_option(’bookmark’, ‘Bookmarks’, ‘b365key_option’);
fbo_add_provider 是用来注册内容提供函数的。第一个参数是内容的类别,这里是”bookmark”。第二个是函数名,这里是b365key_provider。 fbo_add_option是用来注册配制函数的。第一个也是内容的类别,第二个是在配制页面中显示出的title,第三个是函数名。
这样,就得到一个365key.php,也可以点击这里直接下载,将它另存为365key.php就可以了。
最后,只需要将这个php文件拷贝到FBO插件安装目录下的fbo/providers目录下就可以了(那个目录下应该已经至少有四个文件了)。
现在回到wordpress管理页面Option下的FBO页面,就可以看到:

添上365key ID,点击Update Options,你的outline中就会包含365key网摘了。是不是很容易啊。
我会抽时间写一个FBO spec的草稿,这样大家就知道填写outline内容时需要添那些属性了。目前可以参考已有的providers。
Friends By Outline - 一个开放式社会化网络的尝试
by Robin Lu on Jan.14, 2006, under Uncategorized
开放式社会化网络的尝试有不少,比如XFN和FOAF,这两种技术都着眼于建立网络,我以前分析过,一个社会化网络应用,只有网络是不够的,至少不够有趣。
blog天然具备一些社会化网络的要素,个人提供内容,blogroll提供网络框架。个人作为互联网中的节点,除了blog,大多还会提供图片、网摘等等内容。为什么不能将这些元素组合起来,建立一个完整的开放式社会化网络呢?
第一个能想到的是把RSS作为切入点。但RSS倾向于“内容”,缺乏把节点连接成网络所需的信息。另一方面,RSS提供的语义也不够丰富。RDF也是一个 可能的选择,很容易提供资源到url的联系,语义也非常丰富,唯一的问题是结构相对复杂,当年在xml sync这一功能上RDF远早于RSS,最后RSS胜出,就败在复杂上。
再来看一下OPML。目前OPML在互联网上被广泛应用于表示RSS聚合集。其实OPML定义了语法,但并没有限制语义,用它来outline的东西几乎可以是无限的。mac上的OmniOutline就可以以opml作为文件格式之一。
以outline的方式来组织互联网中的个人节点是一个很自然的过程:

写成OPML就是这样:
<outline title=”me”>
<outline title=”blog” type=”blog”>
<outline title=”test” type=”link” htmlURL=”http://…” dateCreate=”2005-12-29 13:51″/>
<outline title=”Hello world!” type=”link” htmlURL=”http://…” dateCreate=”2005-12-29 13:48″/>
…
</outline>
<outline title=”bookmark” type=”bookmark”>
<outline title=”Max Design” type=”link” dateCreate=”2006-01-14 03:15″ subject=”css reference webdesign” htmlURL=”http://www….”/>
…
</outline>
<outline title=”photo” type=”photo”>
…
每个互联网上的个人节点都可以生成这样一个outline文件,在网页的head里加入一个rel是outline的<link>:

通过这个outline文件,很容易得到关于这个个人节点的内容信息,更重要的是,outline中提供了延伸的可能性,通过friend部分的链接,可 以探测朋友的outline文件,再到朋友的朋友。保证了可延伸,可被探知,并提供内容,一个Friends By Outline的开放式社会化网络就自然形成了。
outline中的内容可以不限于blog、图片和网摘。加入图书、电影和唱片,就可能产生一个开放式的豆瓣。加入To Do List,就可能产生一个开放式的43things。加入你要卖的二手货,就可能产生一个开放式的ebay。
为了实践这个这个想法,我做了一个wordpress插件,这个插件可以帮我做下面几件事:
- 根据我提供的内容生成一个outline文件。
- 在页面的head里加入outline文件的link。
- 探测我的朋友的outline文件。
安装了这个插件以后,在Option中可以做如下设置:

插件可以通过这些信息和blog的内容生成一个fbo.opml文件,我的fbo.opml在这里。通常情况下,这个文件是自动生成的,不需要Force rebuild。
如果你的朋友也有这样的outline文件,你可以去Dashboard下的Friends里查看插件自动帮你搜集来的内容:

也可以通过template做一个这样的页面。这些页面也都是自动更新的。
如果你也想加入实践Friends By Outline的行列,并且在使用wordpress1.5.2以上的版本,可以在这里下载这个插件。 在plugin目录下展开。这个插件会在blog根目录下写outline文件,在plugin/fbo目录下写入搜集来的outline文件,所以你需 要赋予这两个目录的写权限。通常不需要做额外设置。同时,如果你愿意,可以要我把你加入我的Friends By Outline的Link List中,你的outline就会被包含在我的Friends页面中了。