WordPress OPMLtoHTML

昨天在抓虾看feed时突发奇想,觉得可以用导出的OPML文件生成一个链接列表,这样就不用每次都很麻烦地到RSS阅读器里添加了feed再到WordPress后台添加link了。

上网查OPML转HTML的程序,发现williamlong在9月2日写了一个抓虾的OPML频道转换到Z-Blog友情链接插件。Z-Blog的插件,唉,不懂ASP,硬着头皮看了一下,好像只是把其中的链接提取了出来,没有处理目录。

又想起WordPress后台的链接部分有一个“从OPML文件导入链接”的功能,去查看了一下具体的实现代码,好像也是直接抽取链接,并没有处理目录。这可真是奇怪,WordPress的链接是可以分目录的呀。

处理XML文件有一个好办法:XSL。这个办法在Java里用不错,不过PHP里需要支持XSL的函数库才行。找到两个用XSL转换OPML到XHTML的程序:OPML to HTML/XHTML,Optimal。第二个程序是非常好的,生成的树状链接列表用Javascript控制,点击目录名可以显示活隐藏目录内容。不过这个插件太大了,又要在页首输出js和CSS,而且对服务器的环境也有要求,需要PHP5或者PHP4.3加domxml和libxslt函数库。

找到一个PHP写的OPML转HTML的程序,这里是他的示例页面。根据他的提示找到ipodder.opml.class.php这个程序,粗略的看了一下,他用了table,不如第一个程序用ul简洁。不过第一个程序已经不提供下载了,只好在第二个程序的基础上改。

今天开始写这个插件。ipodder.opml.class.php这个程序是为转换一个podcast而专门写的,里面做了很多特殊的处理。大概看了一遍整个程序,又去了解了一下xml_parse_into_struct这个函数。原程序对中文不支持,还有很多小问题。大刀阔斧地修改了整个文件,照着原来用ul的样式输出HTML。我用Bloglines导出的OPML文件进行测试,显示没什么问题。再用抓虾导出的OPML测试,发现抓虾的OPML文件用了一个根目录"base"。为抓虾专门写了几行代码,解决了。

OPML文件里带有标题、类型、Blog地址和feed地址等信息。程序本来会输出feed地址,不过我觉得可能用不着,就给加了一个参数,true就显示,false就不显示。给各个地方的html标签加上class,这样就可以通过CSS控制显示的效果了。

抓虾的OPML必须登陆进去才能导出,Bloglines则可以通过访问类似"http://www.bloglines.com/export?id=Yskin"这样的地址得到。如果只用Bloglines做RSS阅读器,那么利用WP-Cron插件定时读取Bloglines的OPML文件,存到服务器上,这个程序就很完美了。不过我两个都用,唉,只能手工导出抓虾的OPML,再保存到服务器上,伤脑筋啊。

先写到这儿吧,功能基本上已经齐全了。用页面模版建了Blogroll页面,看看效果吧。

WordPress OPMLtoHTMLWordPress OPMLtoHTML
下载地址

本文共有 4 条评论WordPress OPMLtoHTML


  1. 1 skyreal

    好,加油!!

  2. 2 kevin

    没搞明白怎么用

  3. 3 kevin

    没搞明白起什么作用

  4. 4 yskin

    在我的Blogroll页面里就可以看到效果呀,作用就是把订阅了feed的Blog地址显示出来,这样就不用自己一个一个加链接了。

    副作用就是让你养成定时备份OPML文件的好习惯,嘻嘻。

请留下您的评论: