http://www.gengbing.com/aboutme/?p=1315
经过一番努力,终于将sablog的所有文章及评论,转换到了wordpress平台之下,当然,转化后仍存在一定的问题,但是,这和800多篇日志相比,已经不是什么大问题了。
在这里,详细说明下转化过程,方便以后的兄弟们使用。
本来打算用utom那里的转换过程,也就是使用rss转换,不过,sablog的rss输出不是特别的标准,而utom那里提供的1.6的rss文件不能用,最新的rss文件要求sablog必须转换至2.0才可以进行,升级到2.0是不现实的,毕竟2.0还只是泄漏版,不是4ngel搞出来的成熟的版本,中间或许出这样那样的问题,对于我来说,很难个人解决,并且我的博客文章在上次转换的过程中,还有很多的历史遗留问题,如长标题最后的字符乱码,rss输出的时候也是有问题的,所以,最终放弃了rss转换这一条号称最简单的方法。
第二,就是通过采集的办法。通过工具,火车头采集。以前在玩cms的时候曾经开火车头采集过文章玩,虽然最后并没有做垃圾站,但是火车头的基本使用方式还是了解的。但是2008版本的我下载后,搞得晕晕乎乎的,最后也没有采集成,主要是wp的模块我不知道哪里做错了,能采集但是一直发不到wp上,郁闷郁闷。采集的这条路,死了。
第三,通过百度,搜索到有人做过sablog到wordpress的转换程序,也是通过采集的方式,不过是集成的到一个文件中了,试用了下,还是很好用的,也存在采集不到日志标题的问题,经过我自己的小小修改,最终采集成功。具体的采集方法,这里写的很详细,可以去看看。
下载提供的文件,经过一系列的设置,上传至wp的文件夹,就可以运行了。无法采集日志标题的问题,在文件的49-49行可以修改,不过,如果用的是sablog的默认设置没有经过修改,或许不存在这个问题,但是,我的网页的title自己修改过,所以不能采集标题,只需要把48行的 preg_match("/<title>(.*?) - (.*?)<\/title>/is",$contents,$title);
修改成 preg_match("/<title>(.*?)<\/title>/is",$contents,$title);
就可以运行了。
日志转换成功后,依然存在几个问题,第一,都在一类,需要自己再次调整,将所有日志重新归类;第二,没有采集评论时间,所有评论的发表时间均为1970年1月1日,其实可以在采集的时候修改的,因为我在开始没有注意,所以没有修改,其他人可以尝试修改下。
sablog到wordpress转换程序0.1
测试版本:sablog 1.6 wordpress2.5.1
转换说明:
转换数据:日志,评论
此转换程序采用的是采集方式,而不是数据库到数据库的转换.
转换不修改sablog的数据库,所以无须备份sablog数据库..
因为是昨天突然心血来潮想换成wordpress,找了一下只找到一个通过rss转换的,可能是我环境的问题.试了之后没有成功.便打算自己写一个.因为以前没用过wordpress,对结构和数据库都不熟悉,大概分析了下sablog和wordpress的数据库,个人觉得通过数据库转换的话附件会很麻烦..只好通过采集转换了.分析和写代码大概花了3个小时,时间比较紧,而且本人也是新学php的,再加上没用过wordpress(就是现在我还有点晕)所以有错误的地方还请大家指正.
下面有时间可能会增加转换tag.
——————————俺是分隔线———————————-
转换要求:
因为采用的是采集方式,所以要保证以下几点:
1.sablog要做了静态的
即sablog日志的地址格式是:http://www.netxlong.cn/show-2-1.html 这样的,其中的2为日志id,可变.
2.模板最好使用sablog默认的模板
因为本人转换的时候是使用的自己以前写的一套模板,具体跟有没有改动过sablog默认模板结构不太记得了,转换的时候最好在后台把sablog默认模板设为模板.
3.编码为utf8(sablog和wordpress默认都是utf8).
4.必须保证wordpress是没有日志和评论的.(否则日志的ID会冲突,导致跳过去.)
5.建立一个分类(例如旧档)用来放转换后的日志(转换后的日志只能存在一个分类里.),记录下这个分类的ID.(我真不想解释怎么查看id了.)
——————————俺是分隔线———————————-
转换步骤:
1.修改一条语句.
在sablog后台->模板管理->模板编辑->default(这个是sablog默认模板)->show模板里
找到<div class=”content”>$article[content]</div>这句
改成<div class=”content”><!–startcontent–>$article[content]<!–endcontent–></div>
保存(加这句是因为俺很懒.)
2.修改显示评论数
在sablog后台->系统设置->评论设置
将单篇文章显示评论数设置为0
(这个是为了保证能采集到所有评论)
——————————俺是分隔线———————————-
好了.上面的都完成后,请打开附件里的index.php来配置一下.
(注意请不要使用记事本打开,防止编码出错.)
找到下面的一段.按后面的说明修改
/** 配置部分开始 **/
date_default_timezone_Set(’Asia/Shanghai’);//这个是设置时区的,一般不用改动
$maxi = 742;
/**
* 这里的数字742是sablog最后一篇日志的ID,请查看您的最新一篇日志ID,修改此值
* 查看方法:
* 打开你最新更新的一篇日志,查看url
* http://www.netxlong.cn/show-405-1.html
* 其中的405就是ID
*/
$sablogurl = ‘http://www.netxlong.cn/sablog’; //这里填写你sablog的地址,注意最后不要加 / 号
$wpblogurl = ‘http://www.netxlong.cn/wordpress’; //这里填写wordpress的地址,注意最后不要加 / 号
$cateid = 1; //这里改成前面记录下来的那个分类ID
$db_host = ‘localhost’; //wordpress数据库的地址,一般是localhost不需要改变
$db_name = ‘wordpress’; //wordpress数据库名
$db_user = ‘netxlong’; //wordpress数据库用户名
$db_pwd = ‘123456′; //wordpress数据库密码
/** 配置部分结束 **/
都配置好后,上传satowp文件夹到wordpress所在的服务器.
打开地址:
http://www.netxlong.cn/wordpress/satowp/index.php
前面的url按实际情况修改.
每篇日志转换都会有状态提示,如果一直提示失败,请先检查一下是否符合上述要求,并修改了相应的文件和配置.
如果还不行,请在下面留言给我..
谢谢.
14 条评论
SA阵营又少了个主将啊
谢谢谢谢,算不上主将……
老鬼啊老鬼..没义气啊没义气!!!
其实你们要是不搞什么2.0的话说不定我还会继续等的……
我倒 那你是不信任我们的技术了!
哈哈,其实早就想换wp了,只不过sablog一直很好用就没有换,直到你们搞2.0。当然并不是不相信你们。
这个界面好看多了
by the way,难不成你还打算给我写邮件?
没办法,wp要求必须写邮箱的,不是我能控制的。
那个转换的介绍链接失效了
附到这里了。
厄..谢谢.
哦,原作者来了,欢迎欢迎,感谢感谢,我转载你的文章没啥意见吧?
呵呵..受宠若惊.
咋能这么说呢……受宠若惊的是我啦。