[MT Hack]让MT的"导入/导出"功能包含blog的静态命名

| 17 Comments | 3 TrackBacks | WebBlog Articles

最近想把旧站的论坛数据导入到 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 才可以(上面的已经作了修改)。

引用通告|TrackBacks (3)

本日志的TrackBack URL: http://easun.org/cgi-bin/mtos/tb_mt_41.pl/62.

以下罗列的是网络上引用了本日志 [[MT Hack]让MT的"导入/导出"功能包含blog的静态命名] 的 Blog 连接。

MT 的"导入/导出"功能居然不含 Tags ? 也许是因为 Tag 功能是 MT 系列后加的功能? 这个小的疏忽让重装 MT 的 YangKang 兄弟 吃了一个小亏。 上次我在改写 MT 的"导入/导出"功能包含blog的静态命名的时候,就发现了这个问题,但是由于对 MT 系统的不太熟悉而且 MT::Tag 模块是个单独的模块而放弃了,而我的 MT 后台也让我折腾的乱78糟,到了快重新安装的地步了,所以鉴于自己的Perl还算熟悉,好好检查下代码,添加这个Hack吧,于人于己,都是方便。... [阅读更多...]

让导出文件包含blog的静态命名 [阅读更多...]

对前一阶段使用tags无法正常写tags非常恼怒....可能的原因好多...可能写的文章多了....文本数据库不行了...omg...文本的bbs程序还很多呢......管他呢.....今天转移文本到mysql中......当然为了把tags一起导出...我参考了路杨写的这篇文章..... 现在看看正常了没哦...尝试下..en..不过刚才确实rebuild site飞快...oyeah!!... [阅读更多...]

本文相关评论|Comments (17)

虽然我没有用使用自定义的URL地址, 但觉得你这个改动很不错也很实用.
谢谢!

别的看不懂就这句看懂了:
MT的静态HTML对象命名还是比较智能化的,会自动过滤blog的标题来生成HTML的名字。但是如果Title全部是中文的时候,就会变成 post_*方式的名字,这个时候大家一般都会自己定义输出HTML的名字,让它能反映Blog文章的内容。
是不是就因为这个原因,我那篇有关电脑病毒的blog“如今的病毒怎么都像HIV”的HTML名字就变成了“ourblog/2006/09/hiv.html”?——汗……真够有趣哎……

虽然我没有用使用自定义的URL地址, 但觉得你这个改动很不错也很实用.
欢迎 YangKang 兄光临,其实我Hack这个也是为了让导入/导出的路径不失效罢了。
我那篇有关电脑病毒的blog“如今的病毒怎么都像HIV”的HTML名字就变成了“ourblog/2006/09/hiv.html”?——汗……真够有趣哎……
是啊。你留意一下,就发现很多有趣的名字。

Yang和yang不是一个人么?为什么大家都这么喜欢杨羊阳yangYang?木有创意哎……

Yang和yang不是一个人么?为什么大家都这么喜欢杨羊阳yangYang?木有创意哎……
不是哦。yang是我的同事,而Yang是 YangKang 哦。 关于其他,巧合罢了:)

反正我滴感觉是我掉羊圈里了
路杨,yang大人,YangKang大人,羊皮纸奶奶……

反正我滴感觉是我掉羊圈里了 路杨,yang大人,YangKang大人,羊皮纸奶奶……
我昏迷一下,干脆你也叫yang什么吧。笑。 PS:最近你很悠闲啊。

一般悠闲一般悠闲……只是用电脑的时间多了……
我早就改名叫某圈了,不是某QUAN而是某JUAN~~

好多羊啊。。。
考虑明儿拉只德牧来……嘿嘿~~

看样子我要改名了。

才发现这里留言速度很慢

才发现这里留言速度很慢
DreamHost 近来很不正常的说。
看样子我要改名了。
玩笑了,呵呵,别介意。

PS: 上面的修改有个小疏忽,对MT3.3有错误,已经修改了。另外,导出导入包含 tags 也修改好了。晚上写出来:)

这个不错,收藏留着以后用。~

欢迎 Fengshuru 光临:)

最近想把BLOG从WORDPRESS转到MT,不知能否保留自定义命名.

最近想把BLOG从WORDPRESS转到MT,不知能否保留自定义命名.
关键是你从WP中导出的数据包含不包含自定义命名:)

发表该文评论|Leave a comment

最近发表|Recent Entries

[八卦]话说修路这件事

建国路貌似又在修。根本没有办法步行。这个让我想起来一个笑话:话说某A国人来北京,在东城区丢了一枚戒指,于是乎找警察,警察告诉他尽可能的帮他找。过了几天,此人发现整个东城的马路都挖开了,于是感叹曰:北京的警察真好。看来这个笑话的地点可以换在朝阳了?是不是某人的戒指又丢了?PS: 城市规划城市规划,年年挖年年修。。。生命不休,挖路不止…

[SiteLog]Blog升级到了 Movable Type Pro 4.25

Thisi is a SiteLog of Easun's WebBlog.今天终于升级到了 Movable Type Pro 4.25 ,貌似一切顺利,也没有发现什么特别大的改动?只是 Community Pack 变成了 1.62, Professional Pack 升级成了1.3 。其他的一切顺利,模版也没有修改,我甚至连重建前台HTML的事情都没有做。。。就这样吧,继续用这个风格,等有时间了再慢慢研究吧。如果非要说有什么修改的话,就是评论的登陆方式又丰富了很多,包括…

IE脚本错误,可以尝试以下办法

IE 脚本错误是个很麻烦的问题,一般定位都是 JS 引擎 和 VB 引擎出错。但是有时间反复注册 jscript.dll 和 vbscript.dll 也不能解决问题。具体表现 部分 js 解析正常,而部分就不行,尤其是基于 Web2.0的网站。不说别的,就连 ie7/ie8 本身第一次运行向导的"保存设置"也出错。其实研究下,貌似都出现在 XML 解释上? 重新注册…