[MT Hack]让MT的"导入/导出"功能包含tags

| 19 Comments | 2 TrackBacks | WebBlog Articles

MT 的"导入/导出"功能居然不含 Tags ?
也许是因为 Tag 功能是 MT 系列后加的功能?
这个小的疏忽让重装 MT 的 YangKang 兄弟 吃了一个小亏

上次我在改写 MT 的"导入/导出"功能包含blog的静态命名的时候,就发现了这个问题,但是由于对 MT 系统的不太熟悉而且 MT::Tag 模块是个单独的模块而放弃了,而我的 MT 后台也让我折腾的乱78糟,到了快重新安装的地步了,所以鉴于自己的Perl还算熟悉,好好检查下代码,添加这个Hack吧,于人于己,都是方便。

MT 的帖子发布,修改是基于 MT::Entry 模块,而tag功能由 MT::Tag 模块实现,这两个模块,MT::Tag是作为MT::Entry 模块的基类存在,这个也是为什么上次修改“BaseName”时候没有顺手添加 Tag 功能的原因,搞清楚 Perl 模块中函数的继承关系真的是件头疼的事情,尤其是 MT 的 完全的 OOP 风格的代码:)

言归正转,说说怎么修改吧:)
1。先修改导出:
打开lib/MT/ImportExport.pm 模块,找到

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"$>

在其下添加:
<MTEntryIfTagged>
Tags: <MTEntryTags><$MTTagName$>,</MTEntryTags>
</MTEntryIfTagged>

这样导出的时候就会有Tags导出了,其中分割符号是","。
2。修改导出,
同样是lib/MT/ImportExport.pm 模块,找到
elsif ($key eq 'TITLE') {    $entry->title($val);  }

在其下添加:
elsif ($key eq 'Tags') {
    if ($val)
            {
              $cb->(MT->translate("Find tags ('[_1]')...\n", $val));
               my @tagnames = split(',',$val);
               $entry->add_tags(@tagnames);
               }
}

大功完成。
说明:$cb->(MT->translate("Find tags ('[_1]')...\n", $val)); 这句是输出的提示,可以删除之,如果你是完美主义者,你还应该在MT::L10N::zh_cn模块(语言包)中添加

"Find tags ('[_1]')...\n" => "在导入文件中发现Tags ( '[_1]')...\n",

修改完成后,测试了几次导入、导出,程序工作正常。
我的测试地址是 http://easun.org/temp/test/ ,大家可以 去看看:)

注意 : 同样,函数 $entry->add_tags ,标签 MTEntryIfTagged,MTEntryTags,MTTagName,什么的相关资料你可以从 lib/MT/Tag.pm ,lib/MT/Template.pm ,lib/MT/Template/ContextHandlers.pm 等模块中获取映射函数。


By Easun 2006/10/22

PS:随手给 YangKang 发个TrackBack ,不知道他看了偶这个事后动作会怎么样?-_-bbb
PPS:上篇“[MT Hack]让MT的"导入/导出"功能包含blog的静态命名”在MT3.3下有小的疏忽,已经做了Fix。

引用通告|TrackBacks (2)

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

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

昨天因为重装Mobavle Type,导致所有Tags丢失。我发出那篇后就向MT的客服询问情况,他们告诉我说目前的3.33版本暂时还不能支持Tags导出,但这个功能已经排在后续版本的计划中了。 好在我的文章不多,不到100篇,如果是好几百上千篇的话,那就惨了。 就在半个小时以前,我看到了路杨的留言,说是弄了个Hack出来,可以让MT导出Tags,这是个大好的消息。对我来说虽然现在来不及了,因为我的数据库已经清空,但对使用了Tags的朋友来说,就帮到大忙了。也许还有好多人根本就不知道MT本身没有这个功... [阅读更多...]

» 再见,Keywords 来自 [无标题博客] @ 2006年11月 5日 19:54

一直不太敢用插件,但是当目睹路杨轻松几行小代码就把困惑我多日的Tag和Basename导入导出难题解决以后,开始喜欢并尝试插件。 首先尝试的是相关帖子的功能,以前刚装MT的时候用过几个,但装上后由于不熟悉系统也懒得调试都没有成功。这回有了点经验,成功地试验了mt-relatedentries,但是,这个插件是根据关键字,MT的关键字系统无法管理,而且,对于中文的关键字这个插件根本无法匹配出来,仍然难以产生满意的相关帖子。 于是开始寻找根据Tag的插件,找到了TagSupplementals,而且神奇... [阅读更多...]

本文相关评论|Comments (19)

Good,应该给MT的总部写信反映才行,不能老是让我们自己去修改。

太厉害了!一直等着官方升级导入导出格式,加上tags和basename,办法这么简单啊?

Good,应该给MT的总部写信反映才行,不能老是让我们自己去修改。
去了MT网站,到Contact Six Apart只能找到报告 1。Download or Purchase Problem 2。Personal Support Access Problem 3。Security or Vulnerability Report 的联结,连个email也找不到,勉强按照3留言了,但是显示出来没有了格式。 也就算了了心事了。
太厉害了!一直等着官方升级导入导出格式,加上tags和basename,办法这么简单啊?
过奖了。我是才接触MT时间不长的新手,对程序了解还很有限:) 之所以看起来改的很简单是 MT 的框架写的太好了,所以片言就起作用了,要是框架不好,估计几百句code也改不完:)

路杨帅气,那你刚改一个导入导出的,现在又改了。下次直接把后台打包送我吧,哈哈

路杨帅气,那你刚改一个导入导出的,现在又改了。下次直接把后台打包送我吧,哈哈
打包也只需要打包一个文件,那就是lib/MT/ImportExport.pm :)

我说兄弟啊,要我怎么说你呢?
看到你的留言没来得及回复赶紧跑过来看!bb说的路杨帅气,不够啊,起码都是帅呆了!!

使用你这个hack的mt用户都会感谢你!我写了丢掉tags的那篇后,向mt客服询问,他们说,目前确实不支持导出,但这个功能已经排在后续版本的计划中了。所以,你走在了最前面!

你发的tackback我查过了没有收到,再发一个吧。

再次感谢!!并敲锣打鼓祝贺!!

咚咚呛!!

Ikias说得对,要向mt反映。

NB!

我正好在更换主机的时候,如果稍晚些看到这篇文章,估计blog已经被删除了,tag也就都over了。

确实要隆重致谢,我还是加入到tag的“怀抱”吧。

太伟大了!
不过还是有小缺陷,不能支持私有tag导出,就是前面带个@的tag。但这样已经解决大问题了,等了好久这两个功能了。

哈,Vick不做非tag一族了。
路杨,我也发了trackback给你,但愿你能收到。你发给我的没收到,估计被垃圾冲走了。

YangKang兄弟: 真是夜猫子啊。半夜3点还在:)
我一会儿补发一个TrackBack 。
按照ikias的建议。我给6A留言了,今天早上收到回复说在下个版本会考虑添加。:)
Vick兄和张西西兄弟: 有用就好,其实我主要也是为自己将来方便而已:)

还是有小缺陷,不能支持私有tag导出,就是前面带个@的tag
这个我还真没有研究,等到周末我在检查吧:)

比较懒,不用tag。
mt的二次开发潜力真是厉害。

路杨 你的 IM 是什么? Blog上似乎看不到

我的 Gtalk: dbanotes@gmail.com

路杨 你的 IM 是什么? Blog上似乎看不到 我的 Gtalk: dbanotes@gmail.com
我停用IM快2年了。 几乎各种IM都有,但是就是没有使用:) 原因1是单位网络有限制2是自己懒。 现在的IM都让我当做mail用了。 我的MSN: easunlee(at)hotmail.com Gtalk没有:)

今天是很热闹:)

今天一天都在奔波,早上还在上海,下午留言时在桂林,现在我又在火车上往湖南赶。那些法国人都睡了,我悄悄拿出电脑再来你这里看看。

今天一天都在奔波,早上还在上海,下午留言时在桂林,现在我又在火车上往湖南赶。那些法国人都睡了,我悄悄拿出电脑再来你这里看看。
辛苦啊。另外,在外面奔波,要保证睡眠哦 :P

发表该文评论|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 解释上? 重新注册…