相关主题
五分钟为FBO wordpress插件制作一个365key的provider
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。







[...] 为FBO wordpress插件制作一个365key的provider 石锅拌饭的技术文章,以365key为例,介绍怎么制作一个provider让你的FBO支持365key网摘 (tags: add-on wordpress 365key provider) [...]
Good work, robin, add oil!
[...] 因为本职工作太忙,搁置了一端时间,最近抽空把它搞出来了。 花了一些时间重构,把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里配制。 Tags:fbo, plugin, sns, wordpress [...]