最近想把旧站的论坛数据导入到 MT 的 MySQL 中来,就顺便看看了 MT 的 "导入/导出"功能。
MT 的"导入/导出"功能相当完善,可以从其它 MT 或者其它 Blog 工具向 MT 中导入Blog文章,或者将创建备份。
简单分析了一下是纯文本,格式相当简单。
本地测试了一下, 导入、导出了几次,发现有点遗憾,就是blog发表的时候,如果你选择了自定义发布静态HTML文件的名字后,导入、导出功能并不能记录这个。
大家知道,MT的静态HTML对象命名还是比较智能化的,会自动过滤blog的标题来生成HTML的名字。但是如果Title全部是中文的时候,就会变成 post_*方式的名字,这个时候大家一般都会自己定义输出HTML的名字,让它能反映Blog文章的内容。
这个名字在MySQL数据库是存在的,只是 "导入/导出"忽略了而已。既然我们需要,就加回来吧。
说改就改, 打开lib/MT/ImportExport.pm 模块。
先改导出: 定位函数sub export{}
在
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
CONVERT BREAKS: <$MTEntryFlag flag="convert_breaks"$>
ALLOW PINGS: <$MTEntryFlag flag="allow_pings"$>
下面添加:
BASENAME: <$MTEntryBasename strip_linefeeds="1"$>
再改 导入;定位函数sub do_import { }
找到
elsif ($key eq 'TITLE') { $entry->title($val); }
下面添加
elsif ($key eq 'BASENAME') { $entry->basename($val) if $val; }
大功完成。
修改完成后,测试了几次导入、导出,程序工作正常。
注意 : 函数 $entry->basename ,标签 EntryBasename 什么的相关资料你可以从 lib/MT/Entry.pm ,lib/MT/Template.pm ,lib/MT/Template/ContextHandlers.pm 等模块中获取映射函数。
By Easun 2006/09/20
更新 By 2006/10/22:
升级到了MT3.3,上面的修改有了一点小变化,需要使用 $MTEntryBasename 才可以(上面的已经作了修改)。
虽然我没有用使用自定义的URL地址, 但觉得你这个改动很不错也很实用.
谢谢!
别的看不懂就这句看懂了:
MT的静态HTML对象命名还是比较智能化的,会自动过滤blog的标题来生成HTML的名字。但是如果Title全部是中文的时候,就会变成 post_*方式的名字,这个时候大家一般都会自己定义输出HTML的名字,让它能反映Blog文章的内容。
是不是就因为这个原因,我那篇有关电脑病毒的blog“如今的病毒怎么都像HIV”的HTML名字就变成了“ourblog/2006/09/hiv.html”?——汗……真够有趣哎……
Yang和yang不是一个人么?为什么大家都这么喜欢杨羊阳yangYang?木有创意哎……
反正我滴感觉是我掉羊圈里了
路杨,yang大人,YangKang大人,羊皮纸奶奶……
一般悠闲一般悠闲……只是用电脑的时间多了……
我早就改名叫某圈了,不是某QUAN而是某JUAN~~
好多羊啊。。。
考虑明儿拉只德牧来……嘿嘿~~
看样子我要改名了。
才发现这里留言速度很慢
PS: 上面的修改有个小疏忽,对MT3.3有错误,已经修改了。另外,导出导入包含 tags 也修改好了。晚上写出来:)
这个不错,收藏留着以后用。~
欢迎 Fengshuru 光临:)
最近想把BLOG从WORDPRESS转到MT,不知能否保留自定义命名.