Archive

Archive for November, 2005

搞定WordPress的Permalinks

November 7th, 2005 Fwolf 5 comments

WordPress的Permalinks还是比较好用的,只需要在Options->Permalinks里设置一个/post/%post_id%,基本就可以了,但它的Permalinks样式偶不喜欢,偶喜欢的样式是:

单篇文章

  • domain.tld/post/post_id

存档

  • domain.tld/archive/year
  • domain.tld/archive/year/month
  • domain.tld/archive/year/month/day (这个其实根本用不着)

分类

  • domain.tld/category/category_name

分页

  • domain.tld/page/page_number
  • domain.tld/archive/year/month/page/page_number
  • domain.tld/category/category_name/page/pagenumber

作者 其实也没啥用

  • domain.tld/author/author_name

feeds

  • domain.tld/feed
  • domain.tld/feed/rss

Permalink的样式固定以后,即使以后再更换其它的Blog系统,也按照这个样式来设定,加上把数据也导过去,基本上能够保证用户使用以前的链接也能正常访问新系统的内容。

WordPress生成Permalink的程序主要在wp-includes\classes.php里,有一个WP_Rewrite类。

如果要修改存档的Permalink,只要找到function get_date_permastruct()部分,在靠后的位置有一句

$this->date_structure = $front . $date_endian;

在它前面加上一句

$front = '/archive/';

就可以了,其余的也类似:

$this->front = '/author/';
$this->author_structure = $this->front . $this->author_base . '/%author%';
$this->category_structure .= '%category%';
//下面这一句是增加的
$this->category_structure = '/category/%category%';

然后再修改.htaccess文件,修改相应的规则就可以了,由于只是简单的替换了一下前面的固定单词,所以很好修改的。如果没有.htaccess文件,在Options里设置一下Permalinks就会自动生成了。

Related posts

Categories: Blog Tags: , ,

移植plog数据到WordPress

November 6th, 2005 Fwolf No comments

由于两种Blog使用的字符集不一样,所以移植的重心是unicode字符到utf8字符的转换,剩下才是数据表之间的对应。

首先用phpMyAdmin把plog的数据导出来,要知道导出来以后的sql文件中,中文都是这种乱码形式的:

INSERT INTO `plog_mylinks` (`id`, `category_id`, `url`, `name`, `description`, `blog_id`, `rss_feed`, `date`, `properties`) VALUES (1, 1, ‘http://blog.plogworld.org.tw/’, ‘pLog 中文開發日誌’, ”, 1, ‘http://blog.plogworld.org.tw/rss/rss20/1′, ’2005-05-17 21:59:37′, ‘a:0:{}’);

配合网上找到的unicode2gb函数,可以把这些乱码转换为utf8字符,不过在转换前,有两个东西需要注意,第一个: \是\,plog不认的,需要先手工替换过来,否则转换有错误提示:

Notice: Undefined offset: 92 in E:\web\20051106\unicode.php on line 68。

而WordPress对\不感冒,所以直接在sql文件中替换就可以了。 第二个:“”—这几个字符总是会引起附近出现乱码(第三个好像还不是中文的破折号),手工替换成自己命名的符号,比如< –left quote–>,在中文转换完毕之后再替换回来就可以了。

网上有unicode2gb函数,不过不是太好找,并且需要的gb2312.txt也不好找,所以我打包放在了这里,需要的同志可以去下载。

现在最麻烦的事情来了,由于sql文件中有简体中文,也有繁体中文,所以unicode2gb函数需要略微调整一下,把:

        $code=0x8080|$_global_codetable2[$code];
        $gb.=chr((($code & 0xFF00)>>8) & 0xFF);
        $gb.=chr($code & 0xFF);
改为
    if (isset($_global_codetable2[$code]))
    {
        $code=0x8080|$_global_codetable2[$code];
        $gb.=chr((($code & 0xFF00)>>8) & 0xFF);
        $gb.=chr($code & 0xFF);
    }
    else
    {
        $gb .= '&#' . strval($code) . ';';
    }
使用码表文件gb2312处理完毕之后,本来想着用繁体中文的码表处理一遍就可以了的,但转换出来的中文有乱码,所以经过半天的琢磨,终于发现了解决方法--先换用码表gb12345.txt转换一遍,还剩下一些没有转换的字符,然后再用big5.txt这个码表转换,在最后使用这个big5.txt码表文件的时候,还需要增加把繁体中文字符串转换为简体中文字符串的处理,所以上面的编码又要改动为:
    if (isset($_global_codetable2[$code]))
    {
        $code=0x8080|$_global_codetable2[$code];
        $strbig5 = '';
        $strbig5.=chr((($code & 0xFF00)>>8) & 0xFF);
        $strbig5.=chr($code & 0xFF);
        $gb .= mb_convert_encoding($strbig5, 'GBK', 'BIG5') ;
    }
    else
    {
        $gb .= '&#' . strval($code) . ';';
    }
这样,这个sql文件终于成了全中文,基本无乱码,下面在本机建一个utf8_general_ci的mysql数据库,把sql导入进去。

然后的事情就简单了,通过本地mysql查询和对sql文件进行正则表达式替换,先后生成往wp_categories、wp_posts、wp_post2cat表中添加数据的sql,还有修改wp_posts表中post_date、post_date_gmt、post_category等字段的sql,在本地测试后,一一导入WordPress,就大功告成了!

在生成sql语句的时候还要注意,除了VALUES里面能够使用单引号’来标识字符串之外,其余标识数据库表名和字段名的引号一定要是键盘左上角的`,使用单引号mysql会提示错误。

Related posts

Categories: Blog, Develop Tags:

WordPress开张~

November 5th, 2005 Fwolf 2 comments

plog怎么开了这么多数据库连接?

虽然plog是一个很好的多用户blog系统,但我在使用它的时候,总觉得速度很慢,另外它把所有中文都转换成诸如其这样的编码,让我很是不爽,几乎都失去了Blog下去的兴趣。

今天无意中又看到了WordPress,不知怎么的有了一种想把plog换掉的想法。可能是因为在使用plog的这些时间里的不好的感觉积累过多,或许是因为对其这样的编码的痛恨,或许是因为我的plog的糟糕的速度,不管怎么马上就动手了。WordPress很小巧,现在的1.5.2版压缩包才357k大小,架设也很方便,在仔细得对照它那比兔子尾巴还短的安装说明之后,5分钟看来是绰绰有余了。

唯一的一点问题是中文,对,又是mysql 4.1版的中文问题,不过幸好在桑林志上早就有了解决方案,所以也没有造成太大的阻碍。

為著解決這個問題必須去修改wp-includes/wp-db.php內的資料連線設定。詳細的修改方式是這樣的: $this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword); //加上下面這行 $this->query(“SET NAMES ‘utf8′”);

总体来说,WordPress让你很轻松,不过我现在还没搞定几个问题,比如中文化、模板修改、TAG支持、编辑插件等,但那是以后的事情了。

另外一个大的问题是如何把plog的数据转过来,以前见过一个iso-8859-1编码转gb2312编码的程序,还研究了一阵子,我的想法是把plog的数据导出来,然后转换成sql语句导入到WordPress里面来。

plog现在改名叫LifeType了?感觉改了之后很不讨人喜欢,并且繁体中文网站发布的是1.0.2版,而英文网站发布的是1.0.1版,难道是台湾同胞接手了?

Related posts

Categories: General Tags: