Rails导入Wordpress的xml备份

最近在用rails作一个blog系统,不要说我重复发明轮子什么的,就像学程序的人一开始都喜欢对世界说声hello一样,学rails的我就想开发个blog来练手。

话说开发个blog也是相当不容易的,之前虽然把《Agile Web Development With Rails》给看了将近两遍,还看完了《Programming Ruby》和《The Ruby Way》,可是真作起东西来就不是那么个事了。

我做个blog是打算自己拿来用的,所以也想要把在WP上这些文章给导入进去。RSS的内容不够全面,也考虑过直接从数据库来导入的,再就是解析WP后台export出的xml了。不知道一般的方法是怎么做的,我是选择的第三者。。。

解析xml可以用Ruby的标准库REXML,不过效率不是一般的低啊,当然解析我这种小博客的xml是没问题的。最后还是选择了最快的libxml2的ruby绑定(这些都是The Ruby Way上推荐的)。

def import(filename, &block)
  doc = Document.file(filename)
  doc.find("//item[count(content:encoded)=1]").each do |item|
    if (con = item.find_first("content:encoded").content).strip.size > 0
      yield item.find_first("title").content, con
    end
  end
end

READ MORE>>

ABitNo也会写WordPress插件了

这几天我是真的一直在研究WordPress,与用户有关的那些个代码都从头读了一遍,与插件有关的源码也都看了好几遍,最后发现PHP的代码读起来也还是很不错的。

最大的收获还是学会了自己写WordPress插件,这个其实很简单,官方codex上都有介绍,也有推荐的tutorial。我没有很详细的都看完,只是按照这一个教程Devlounge - How to Write a Wordpress Plugin中说的从头走了一遍。如果想学习写WordPress插件的话,看看那个教程还是很不错的。

按照Devlounge 说的,一个Plugin首先要有好的目录结构,然后还要有好的代码组织方式。下面就按照那个教程中给的方式写一个简单的毫无用处的插件,插件的效果就是在head中加一个注释

<!--ABitNo is here ! -->

Step 1:定义插件的信息

/*
 * Plugin Name: ABitNo IN Head
 * Plugin URI: http://abitno.linpie.com/abitno-wordpress-plugin.html
 * Version: 0.1
 * Author: Cedirc Fung
 * Description: Put annotation 'ABitNo is here' to the header
 */

READ MORE>>

做的一个WordPress企业主题

我发现自己最近所有的Blog都是关于Wordpress主题的。。。

虽然是为了钱去做的这些东西,但是在自己做的这几个WP主题中还是有喜欢的,现在这个我就相当喜欢,特别是首页。预览>>

wordpress theme

READ MORE>>

我这几天都在做WordPress主题了

我感觉自己似乎一直在浪费时间,一直都是在给别人做WP主题,当然也是为了赚点钱。每次一开电脑就要打开Netbeans,还有一个为了测试主题而安装的Windows虚拟机。。。

自己想学的都还没有学到,很多的事情都荒废了。不过也学到了点东西,至少更会做网页了,还会了点PHP,算是意外的收获。为了更好的写代码,还学习了一下使用Mercurial,之前我是从来没用过版本控制软件的,因为之前就没写过太多代码。

没有什么说的了,贴一点做主题时用到的简单的代码,说不定哪天有哪位与ABitNo一样菜的朋友会用到。不过想想也不知道哪些代码比较有用,就把我在sidebar里用的几个方法帖一下。

获取WordPress中评论最多的文章

function wp_get_most_commented_posts($limitclause="") {
    global $wpdb;
    $q = "SELECT ID, post_title, post_date,
COUNT($wpdb->comments.comment_post_ID) AS 'comment_count'
FROM $wpdb->posts, $wpdb->comments
WHERE comment_approved = '1' AND post_status = 'publish'
      AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID 
GROUP BY $wpdb->comments.comment_post_ID
ORDER BY comment_count DESC $limitclause";
    return $wpdb->get_results($q);
}

READ MORE>>

自己做的新主题上线

上一篇文章似乎还是9号发的,这样算起来有一周没来自己博客看看了,不过这一周还真的做了不少的事情,给人做了几个WP的主题,算是给自己赚生活费的,暂还能養活自己,这些先不说了,先说自己这个新的主题。

现在我博客正在使用的就是我刚刚自己做的一个主题,为了避免某些浏览器可能看到的效果不太好,还是先放个截图看看
newthemeabitno

可以看到相对于原来那个主题变化还是很大的,虽然在总体布局上还是之前的布局,不过在其他一些细节上还是有很多变化的。

READ MORE>>

WordPress与Discuz的简单整合

最近ABitNo帮人做了一个WordPress主题,要与Discuz整合,下面就简单说一下主要做了些什么以及怎么做的。

ABitNo用的是最新的WordPress 2.7.1 和Discuz 7.0 , 要完成的整合工作主要是用户整合,另外还有在WordPress上显示Discuz的论坛新帖。

先看一下相对简单的论坛新帖显示功能,这有两种实现方案,一种是通过WordPress的Feed函数,另一种就是用Discuz的Javascript代码。
用Feed很简单,在你要显示的地方加入下面的代码就可以了

<?php 
require_once(ABSPATH . WPINC . '/rss.php'); 
wp_widget_rss_output('http://abitno.linpie.com/feed', 'items=10');  
?>

如果想用Discuz的JS代码,要先到DZ中设置一下,在Discuz的后台通过工具->数据调用来添加一个主题列表调用模版,然后把生成的JS代码复制到需要的位置即可。

现在看看用户整合这方面。要求是用户在WP用Discuz的用户名来登录,也就是用户注册的号在论坛和WP之前都可以用,然后用户必须在WordPress登录后才能留言。

READ MORE>>

WordPress插件精选

WordPress就像我最喜欢的FireFox一样,有很多的扩展插件可以用,来说说ABitNo都用了哪些插件吧。看图说话,点击看大图:
wordpress-plugins-abitno

READ MORE>>