Drupal 4.7 升级准备笔记(2)
Submitted by kzeng on Tue, 2006-02-28 02:41
第一步,我们所需要做的就是把awtags彻底的转换为free tags。权衡再三,觉得还是使用drupal核心提供的tags比较安全,因为在将来我们不知道awtags还会不会更新。另外free tags因为使用了ajax技术,可以方便的给你书写提示,并支持tags中间的空格,还有就是可以自动ping Technorati。awtags好像也声称可以自动ping technorati,但是用了这么久,没见它ping过:)所以我们这里做的第一步就是将awtags彻底转化为free tags,然后我们再通过编辑drupa的主题,使得free tags的显示与awtags一摸一样(也就是说我们仍然保持原来的分类,但是在文章的末尾显示free tags)。
升级的思路其实很简单,我们需要做两件事情,首先是把awtags的tags导入free tags所在的term_data表中,然后再建立起 tags与node之间的关联。注意:建议你先将awtags导入term_data,然后在升级到drupal 4.7beta4,如果先升级再导入的话,牵扯到一个转化MySQL数据库 Char Set的问题,在MySQL中不能直接把lantin1的编码转化为utf-8,必须先转化为binary,所以这样的转化是极为复杂的,因此建议先完成导入导出,然后在升级。
- 建立一个新的分类,名字叫做 tags (或者什么别的名字都行),这个分类在升级后就起到free tags的作用。
- 我们需要知道一些基本数据:首先在你的数据库中(phpmyadmin或是命令行)运行:
select vid,name from vocabulary;
因为我们想知道这个新建的tags的vid,运行的结果是各个分类(vocabulary)的id number,我这里的tags的vid是12;然后我们需要知道现在tid的最大值是多少:
select max(term_data.tid) from term_data;
因为在drupal的taxonomy中,每个分类词(term)都会占有一个tid,我们在把awtags的tag导入为term的时候要避开已经在使用中的tid,否则就会因为重叠而出错。我这里tid的最大值是53; - 现在开始导入:
insert into term_data (tid,vid,name) select 55+awtags.tid, 12, awtags.tag from awtags;
这里导入的是tag的名称。注意我用红色标记的地方。因为我的tid已经排到53了,为了避免导入的tag与已有的term重复,所以我在前面加了55;12表示的是vid的数字,也就是你新建的tags分类的vid。 - 然后导入:
insert into term_node (tid,nid) select 55+awtags_node.tid,awtags_node.nid from awtags_node;
这里导入的是tag与node的关联。同样注意这个红色的55。至此转换完毕,你可以放心的升级drupal 4.7-beta4了。 - 升级之后,记得到 "管理->分类" 中去将编辑术语tags,勾选free tagging这个选项。OK,一切都搞定!
今天的笔记先到这里。明天我再写如何把free tags与分类分开显示。