首页 > 网络技术 > sablog到wordpress转化过程详解

sablog到wordpress转化过程详解

2008年9月17日

  经过一番努力,终于将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按实际情况修改.

每篇日志转换都会有状态提示,如果一直提示失败,请先检查一下是否符合上述要求,并修改了相应的文件和配置.

如果还不行,请在下面留言给我..

谢谢.

网络技术 ,

  1. 2008年9月17日13:17 | #1

    SA阵营又少了个主将啊

  2. 2008年9月17日13:22 | #2

    谢谢谢谢,算不上主将……

  3. 2008年9月17日13:23 | #3

    老鬼啊老鬼..没义气啊没义气!!!

  4. 2008年9月17日13:27 | #4

    其实你们要是不搞什么2.0的话说不定我还会继续等的……

  5. 2008年9月17日14:06 | #5

    我倒 那你是不信任我们的技术了!

  6. 2008年9月17日14:16 | #6

    哈哈,其实早就想换wp了,只不过sablog一直很好用就没有换,直到你们搞2.0。当然并不是不相信你们。

  7. lisa
    2008年9月18日09:11 | #7

    这个界面好看多了
    by the way,难不成你还打算给我写邮件?

  8. 2008年9月18日09:28 | #8

    没办法,wp要求必须写邮箱的,不是我能控制的。

  9. 2008年9月23日10:52 | #9

    那个转换的介绍链接失效了

  10. 2008年9月23日11:09 | #10

    附到这里了。

  11. 2008年9月25日09:41 | #11

    厄..谢谢.

  12. 2008年9月25日09:47 | #12

    哦,原作者来了,欢迎欢迎,感谢感谢,我转载你的文章没啥意见吧?

  13. 2008年9月25日10:17 | #13

    呵呵..受宠若惊.

  14. 2008年9月25日10:18 | #14

    咋能这么说呢……受宠若惊的是我啦。

  1. 目前还没有任何 trackbacks 和 pingbacks.