[笔记]巧用Plugin管理模板导航条

| 0 Comments | 0 TrackBacks | WebBlog Articles

This is a SiteLog of Easun's WebBlog.

其实就是说本站上面的无序行表导航条:)
但是有个 加重 的选择。根据不同页面加重的部分不一样,比如主页加重的就是 "Home" ,而 BookMarks 选种的就是 "Bookmarks";
我的 Blog 采用的模块化设计,整个头部都是一样的,原来的加重是用一段 JS 来实现的,但是自己觉得不太满意,既然是静态化设计,何不彻底静态化?既然后台是 MT ,那就 MT plugin实现吧。
分析了一下,最简单采用add_global_filter来过滤:)
我的顶部模块名字为 Blog:header 模块,原来加载的办法是 MT 的 MTinclude 办法,如下:

<$MTInclude module="Blog:header"$>

修改后的代码如下

<$MTInclude module="Blog:header" do_notice_id="top_blog_home"$>

添加的 global_filter 名字为 do_notice_id ,其中"top_blog_home" 是我导航菜单中需要加重的部分,可以根据不同页面来换成你加重的id。

实现代码如下:

# Copyright 2007 EasunLee Easun.org # http://easun.org/

package MTPlugins::QiukNav;

use strict;
use warnings;
use MT;
use MT::Template::Context;

if (MT->version_number >= 3) {
use MT::Plugin;
my $plugin;
$plugin = new MT::Plugin(
{
name => 'QiukNav',
version =>'0.1',
description => 'QiukNav',
author_name => 'EasunLee',
author_link => 'http://easun.org/blog/',
}
);
MT->add_plugin($plugin);
}

MT::Template::Context->add_global_filter(do_notice_id => \&_hdlr_easun_do_notice_id);

sub _hdlr_easun_do_notice_id {
my ($str, $param, $ctx) = @_;
$str =~ s/class="notice"//ig;
$str =~ s/(id\="$param")/$1 class="notice"/ig;
$str;
}
1;

保存以上代码。存成 qnav.pl ,放在 MT 的 plugins目录下面,即可生效。
希望对大家有所有帮助:)

引用通告|TrackBacks (0)

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

以下罗列的是网络上引用了本日志 [[笔记]巧用Plugin管理模板导航条] 的 Blog 连接。

升级到 MT 4.0 好几天了,模板依然用的 3.3x系列的。不是不升级模板,而是在 MT 4.0 默认模板基础上测试和重新设计风格而已:) MT 4.0 模板设计的很优秀,在测试中发现了一些不同和技巧,特和大家共享之。 一: 强大的 MTIf 和 MTSetVar。 因为有了SetVar 和 if ,模板也有了简单的判断和设定功能。所以MT4.0模板才变的更加简单和模块化。通过在主模板顶部设定不同变量的数值,可以方便而简单让模板生成的页面任意在 3栏,2栏变化,也可以方便让侧边栏显示或不显示某个模... [阅读更多...]

发表该文评论|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 ? 真是好玩的 归档方式。从后台看,给每个用户(作者)都建立了按月的归档页面,估计是为了便于各用户归档自己的文章吧? 后台抓图如下:…