WebBlog:路杨中标签为“模板”的文章

MT 4 模板功能强大,从代码分析来看,加了一系列小的功能,并没有从默认的模板(Template)中体现出来:)
这些功能,有些来自MT4程序本身,有些来自自带的插件(plugin),还是挺实用的,如果再结合 MTIF ,MTElse, MTUnless 等模板自身的选择流程,肯定让设计界面的朋友心动:)
我简单的说两个自己偶然发现的,抛砖引玉。

1. MTIfCommenterIsEntryAuthor
这个标签目的是判断回复评论的人是否就是这个主题的发布者:) 我偶然发现这个标签,然后Blog中我回复别人评论的回复就可以自己定义不同的样式了:)简单用法如下:

<MTIfCommenterIsEntryAuthor>Show sth.</MTIfCommenterIsEntryAuthor>
,当然,需要注意的这个标签应该在 MTComments 嵌套之中使用:)实例可以参考本站的评论处我自己的评论样式.

2. 在 MTOtherBlog 中使用 加 include_blogs 参数的 MTInclude
这个功能是由插件 MultiBlog 2.0带来的,不可否认,MultiBlog是个很优秀的插件(plugin),但是,也不能不说MultiBlog使用文档实在写的太含糊。她的文档貌似仅仅为了 写而写。大家一般都用他来做多个Blog文章的输出,但是其实他的功能还很多,比如:在一个MT Blog 中调用另外一个同系统的Blog的模块,这个就是 MTInclude 的include_blogs 参数了,但是使用这个参数必须在 MTOtherBlog 或者 MTMultiBlog 的 嵌套中使用,不然系统会找不到模块,另外,这个模块如果有 IF,Else 或者 SetVar 的设置,将会调用本来属于的那个Blog的设置。
简单例子如下(本Blog的id为2,要调用id=1的Blog的模块 Nav_Main):

<MTOtherBlog include_blogs="1">
<$MTInclude include_blogs="1" module="Nav_Main"$>
</MTOtherBlog>

OK,我目前发现的就这两个,你呢?不妨共享之。

升级到 MT 4.0 好几天了,模板依然用的 3.3x系列的。不是不升级模板,而是在 MT 4.0 默认模板基础上测试和重新设计风格而已:)

MT 4.0 模板设计的很优秀,在测试中发现了一些不同和技巧,特和大家共享之。

一: 强大的 MTIf 和 MTSetVar。
因为有了SetVar 和 if ,模板也有了简单的判断和设定功能。所以MT4.0模板才变的更加简单和模块化。通过在主模板顶部设定不同变量的数值,可以方便而简单让模板生成的页面任意在 3栏,2栏变化,也可以方便让侧边栏显示或不显示某个模块。实在是节省了设计人员的工作量。仔细研究每个主模板顶部变量(SetVar)的设定,会让你受益非浅。
我的页面上面的导航条自动加重原来靠自己写的插件实现的,在现在MT 模板中完全可以利用 MTSetVar 和 MTif 实现,简单介绍如下:
修改头部模块(导航条),假设名字为 "Header" 为:

<div id="header">
<h1><a href="/" accesskey="1" title="Return to HomePage of easun.org" >Easun.org(路杨)</a></h1><h3><$MTBlogName encode_html="1"$></h3>
<h2><$MTBlogDescription$><a href="/links.html" title="Some Good Sites">链接</a></h2>
<ul>
<li id="top_ossu"><a href="/ossu/" title="Go to Easun OS Switch Utility HomePage">软件站</a></li>
<li id="top_perl"><a href="/perl/" title="Perl Site">Perl Site</a></li>
<li id="top_blog_bookmarks" <MTIf name="blog_bookmarks">class="notice"</MTIf>><a href="/Bookmarks/" title="Easun's Bookmarks,朋友的Blog RSS聚合">Bookmarks</a></li>
<li id="top_blog_tags" <MTIf name="blog_tags">class="notice"</MTIf>><a href="/blog/tag/" title="Tag cloud of Easun's WebBlog">Tags</a></li>
<li id="top_blog_archives" <MTIf name="archive_index">class="notice"</MTIf>><a href="<$MTLink template="archive_index"$>" title="Easun's All Articles Archives">Articles</a></li>
<li id="top_blog_index" <MTUnless name="is_not_blog">class="notice"</MTUnless>><a href="<$MTLink template="main_index"$>" title="Easun's Blog">WebBlog</a></li>
<li id="top_blog_home" <MTIf name="site_home">class="notice"</MTIf>><a href="/" title="Easun's HomePage">Home</a></li>
</ul>
</div>

在一般情况下,WebBlog 都是粗的,如果要加粗其他页面,比如Site Home 页面,只需要在此模板顶部写入:

<MTSetVar name="site_home" value="1">
<MTSetVar name="is_not_blog" value="1">
。。。
<$MTInclude module="Header"$>

就可以了:) 是不是被专门写插件处理方便多了? 呵呵。

二。 按分类归档有所变化。
这次MT4.0的重建速度要比以前版本快了很多,但是我怀疑和 "按分类归档" 有所变化。 以前"按分类归档" 是个大问题,严重拖慢速度,因为要重写的数据太多了。
这次, MT 默认模板对 "按分类归档" 只输出最近的几篇文章(就像Blog首页那样),所以节省了大量时间。但是作为补偿, MT4 推出了新的归档类型: Category Monthly Archives(分类的按月归档),这个主意的确不错,既方便了读者,也节约了重建速度。

三。大量的 SetVar 和 if 让生成的最终页面空行空格大量增多。
这个也许是模板化的代价,也许是 官方 的疏忽?虽然不影响什么。但是给人感觉很不舒服,我自己修改了下程序,让 MT 自动对页面进行了空格/空行压缩,但是发现速度明显变慢。。也算一郁闷事情吧:)


升级到 MT 4,模板模块化了,但是大量的 SetVar 和 if 让生成的最终页面空行空格大量增多,让人看到实在不爽,小修改了代码,让 MT 程序在发布/重建页面的时候对最终代码进行空格/行的压缩。
办法如下,找到并打开 lib/MT/Template.pm文件,找到 sub build {...},在此函数下面添加以下 Perl 代码

sub easun_html_reduce
{
my ($tmpl ,$res)= @_;
$$res =~ s!\s*\n\s*!\n!isg;
$$res =~ s!(\r|\t|\f| )+! !isg;
return 1;
}

然后转到sub build {...}代码的最后一行
return $res;

在这个之前添加
$tmpl->easun_html_reduce(\$res);

到此完成Hack,保存后重建整个Blog吧:) 相信看见空格和空行明显减少了 :P

MT 后台的一点瑕疵

| WebBlog Articles

也许不算瑕疵,只是作者没有考虑到的一点吧?不够人性化。
相信有很多人和我一样,在后台的索引模板自己建立一些来生成自己定义的页面。

1  
模板