[随笔]MT 4.0 杂谈 - 模板篇

升级到 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 自动对页面进行了空格/空行压缩,但是发现速度明显变慢。。也算一郁闷事情吧:)