[MT Hack]让MT 系统发布的文章告别长绝对路径

| 0 Comments | 0 TrackBacks | WebBlog Articles

This is a SiteLog for Easun's Blog.
MT 很优秀的静态页面发布,但是在每个页面中每个路径都是带域名的长路径,比如http://easun.org/archives/mt_hackmt_331_1.html之类。

这样的路径虽然完整而且保证了路径跨域名的实效性。但是实在太长了。虽然现在每个人几乎都是宽带上网,但是能节省点流量也是好事,而且对于流量很大的服务器,积少成多,也是对流量的很好的节约。另外,也适合自己迁移主机什么的:0

彻底的相对路径判断起来太麻烦,最好的样式就是去掉域名的以“/”开头的短绝对路径。

说改就改,虽然据说 MT 有这样的插件,但是我并不希望对所有的绝对路径都去掉域名,还是自己改程序的方便,反正,这个MT系统我是不准备轻易升级的。

MT 的标签映射 Perl 模块是 lib/MT/Template/ContextHandlers。标准的 Perl OOP 模块,打开就看见了各种 MT 标签的映射函数。
在其后添加自写 Perl 函数。


sub _easun_remove_bloghost_url
{
my($ctx, $url) = @_;
my $blog = $ctx->stash('blog');
my ($blog_domain) = $blog->archive_url =~ m|(.+://[^/]+)|;
$url=~s|^$blog_domain/|/|is;
$url;

}

这个函数的作用就是把带域名的长绝对路径换成去掉域名的以“/”开头的短绝对路径。
有了这个函数,就可以根据自己的喜欢把任意标签代表的路径处理。
处理的格式是:
$link = $ctx->_easun_remove_bloghost_url($link);

我自己替换了函数 sub _hdlr_entry_link {} sub _hdlr_entry_permalink { } 中的url ,觉得足够了:)

最后,重建Blog,大功告成。效果参见本站blog.

引用通告|TrackBacks (0)

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

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