如果不是正在使用 Movable Type ,看这篇文章就很无趣而且有可能根本看不懂了。而且标题本身就说的有点晕,我其实想表达的意思短话长说就是:在页面的菜单条里,用特殊标记来指示当前页面所属的栏目。
如果还是没说明白……好吧,直接以本站为例贴图说明一下。当你浏览站点说明页面时,菜单的样式是这样子滴:

菜单里的 about 栏目被加重显示了,这样就有利于访客明白自己所处在网站的什么位置。所以虽然在 Movable Type 里实现起来有些麻烦还是有必要折腾一下的。下面就开始。
第一种方法是MT默认模板里使用的方法。这种方法的原理是利用声明变量来查询当前正在重建的页面是菜单中的哪个栏目,然后加上相应标记。
1、在页面归档模板的最顶端加入:
<mt:SetVarBlock name="nav_on"><$mt:PageID$></mt:SetVarBlock>
这样就在发布页面时动态声明一个名为nav_on的变量,变量的值等于正在生成的页面的ID号码。
2、在模板里的菜单栏目部分同样设置一个变量:
<mt:SetVarBlock name="this_page_id"><$mt:PageID$></mt:SetVarBlock>
如果这个this_page_id和页面顶端设置的变量nav_on相等,就给该栏目加上一个CSS类:
<li class="<mt:If name="nav_on" eq="$this_page_id"> on</mt:If>">
第二种方法是本站以前用的方法。这个比较简单,但是比较不智能,需要手动匹配栏目名称,而且需要你的栏目是单独建立了文件夹路径的。比如about栏目的模板:
<li class="<MTIf tag="FolderBasename" eq="about"> on</mt:If>"><a href=”/about/”>about</a></li>
解释一下就是,如果正在建立的页面所处在about文件夹下,那么该条就添加一个css类。
第三种方法本站现在正在用。给菜单单独建立一个模板,每个栏目分配一个固定的ID(比如#nav_about和#nav_contact)。而在菜单外层,通过判断(类似第一种方法)给每个页面的菜单分配一个相应class的div包裹(比如.page_about和.page_contact)。然后通过CSS样式表给特定组合的菜单栏目定义特殊样式。
.page_about #nav_about {color:red;}
这样就可以把菜单模板cache起来,从而提升页面重建的效率。
好了,如果不用 Movable Type ,这篇文章根本看不明白,所以我也不再多说了,就到这里把。
~~~~~~~~~~~~~~~~~~~~~~~分~~割~~~~~~~~~~~~~~~~~~~~~~~~~~·
在使用MT的“分类文章月度归档”功能的时候有可能会碰到:Can't call method "date_based" on an undefined value. 的错误提示,经一番折腾,我在一个日本人的blog里发现了问题的原因,他说要解决这个应该“MTArchiveCountをMTCategoriesにしたら直った”据 wayne 同学帮我翻译是“把MTArchiveCount改成MTCategories”但是根据我的理解,应该是用MTCategoryCount来替换MTArchiveCount才对。果然,替换之后问题解决了。特此记录。
本站不欢迎全文转载,如需转载请阅读本站版权声明。http://kaix.in/cgi-bin/mt-tb.cgi/946. Tips:在自己blog里发表针对本文的评论文章时复制上述地址到引用通告栏,你的文章链接就会显示在本页引用列表里。
dimlau.com
wayne
2009-03-18,01:05
呃...括号后面大概就这个意思吧, 没怎么用过mt, 也搞不清楚状况...
“回复之...”