[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

[MT Tips]如何让某个日志在Blog首页固顶?

貌似最简单的办法就是修改日期到一个很遥远的日期,比如 AnySQL 那样:) 但是带来的问题的很多,比如导致Feed阅读器犯糊涂或者影响搜索引擎的收录等等,更糟糕的是对于 日志来说,最主要的就是发布日期。也许大家都已经发现了,我的主页模仿 MT Forum 搞了一个固顶日志(也是为了风格统一)出来,这个固顶日志是后台通过自己设置实现的。是怎么设置的。答案是利用 <mt:Entries> 的tags 功能。 具体概念代码如下:<mt:Entries tag="@top" sort_by="authored_on" sort_order="descend" limit="1" blog_ids="1,5"> dosthing.....</mt:Entries> 这样我们只要要在固定的主题 加上…

北京 Perl Workshop 2008 网站开张 - 接受大会注册,演讲报名

网站开张了, 地址是 http://conference.perlchina.org/bjpw2008/ 由 PerlChina 和 Postgresql China 合办,2008 年 11 月 8 号举行的 Beijing Perl Workshop 是一个免费的 Perl 交流会,向所有对…

好玩的 MT Forum 的按作者归档

Perl Forum 用 MT4 的 MT Forum 的功能搭建起来了好几天了,一直没有发现什么意外,今天突然发现 按作者按月归档 貌似找完了整个发布完的 Perl Forum 也没有找到 link ,查看作者个人信息貌似也没有 link ? 真是好玩的 归档方式。从后台看,给每个用户(作者)都建立了按月的归档页面,估计是为了便于各用户归档自己的文章吧? 后台抓图如下:…