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。
Good,应该给MT的总部写信反映才行,不能老是让我们自己去修改。
太厉害了!一直等着官方升级导入导出格式,加上tags和basename,办法这么简单啊?
路杨帅气,那你刚改一个导入导出的,现在又改了。下次直接把后台打包送我吧,哈哈
我说兄弟啊,要我怎么说你呢?
看到你的留言没来得及回复赶紧跑过来看!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。
mt的二次开发潜力真是厉害。
路杨 你的 IM 是什么? Blog上似乎看不到
我的 Gtalk: dbanotes@gmail.com
热闹啊!
今天是很热闹:)
今天一天都在奔波,早上还在上海,下午留言时在桂林,现在我又在火车上往湖南赶。那些法国人都睡了,我悄悄拿出电脑再来你这里看看。