这是我在半个月以前写的一个关于Widgets使用的草稿,一直没有发出来,本来想把Widgets和modules连到一起来写,因为二者是有关联的。现在把标题改了还是单独写widgets吧。
Movable Type的Widgets使得页面模块的管理变得非常方便,在使用上也没有什么难度。
进入“Manage my Widgets”后就看到了“First Widget Manager”。在安装好的Widgets(Installed Widgets)一边已经有一排的widgets,这是MT默认的已经预安装好的widgets。如果你觉得哪个widget是你不想要的,那就把不需要的用鼠标提出来放到可用的Widgets(Available Widgets)那边,再保存重建,那么这个名称为“First Widget Manager”的Widget管理器就建好了。
当你什么时候觉得想要增加某个widget时,从可用的那边提到装好的那边。除了增减,你还可以调整widget的上下顺序,也是用鼠标提上提下的,编辑好widgets后再保存重建。
接下来你需要回到相应的模板将Widget的代码 <$MTWidgetManager name="Name of the Widget Manager"$> 应用到模板中,Widgets才能生效。
怎么应用呢?假设我要把刚才建立的“First Widget Manager”应用到Main Index 模板的侧边栏,比方是beta板块。那么你找到beta区域的代码:
<div id="beta-inner" class="pkg">
<div class="module-search module">
...... ......
</div>
</div>
</div>
搞清楚里面的每个module的结构,把要用widget代替的module部分删除。一定要看清楚模板里面的每个html标签。
<h2 class="module-header">Recent Posts</h2>
<div class="module-content">
<ul class="module-list">
<MTEntries lastn="10">
<li class="module-list-item">
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
</MTEntries>
</ul>
</div>
</div>
这就是一个完整的module,是最新发表文章的那部分。如果你的widget中选择安装了这个,那就要在模板中把上面的代码完全删掉。刚才你在“First Widget Manager”中选择了几个要装的widgets,那你就在现在这个模板中删除几个。好,现在你的模板中空了一大截。千万注意删除这些module时,搞清那些<div>和</div>的关系。
因为你建立的Widget管理器的名字是“First Widget Manager”,所以要把
<$MTWidgetManager name="First Widget Manager"$>
这行代码放在删掉的那些modules的位置上,也就是用这一行代码来代替刚才删掉的大段代码。
重建这个模板,你可以看到他们全部在页面上显示出来了。同样的做法,你可以把这个“First Widget Manager”运用到其他的模板上去,象Category Archive,Individual Entry Archive等。
使用widgets来管理后,当你需要对某个模块作修改或增删时,要比以前容易方便些。你不用再象以前那样每次到不同的模板中去改动那些modules了,更不用在每个模板中去检查烦人的HTML和MT标签了,因为你已经把他们都单独提取出来放到Widget管理器中来了,现在你只需要到Widget管理器里面来操作就行了。
如果你要在不同的页面模板中用不同的Widgets,那也好办。比方说只在首页用日历,分类存档页面不要。
那么,你再到“Manage my Widgets ”点击“新建Widget管理器”(Create Widget Manager ),然后给它取个名字,就叫“Second Widget Manager”吧。再把你要的Widgets提出来,当然你现在就不要选那个日历了。和上面的步骤一样,只是到分类存档模板中添加Widgets代码,用
<$MTWidgetManager name="Second Widget Manager"$>
来代替删除的那些modules。这个分类存档页面中就没有日历模块了。另外,你也只需要重建存档模板而不需要重建所有页面。只对相应的模板重建。
如果你觉得“First Widget Manager”和“Second Widget Manager”这样的名字不便于记忆,你也可以用任何其他的命名方法,象“Index Widget Manager”和“Category Widget Manager”也不错。当然你还可以用更简单的命名。
我们已经看到了,在Widget管理器中,MT默认的有12个widget,也就是说给你准备好了12个已经编辑好了的widget。MT的这个widget管理器能不能增加自定义的widget呢?就说那个Blogroll吧,如果可以把Blogroll这个插件也加到widget管理器中来一起管理,那才方便呢。
好,我们来看看吧。真的不难。
首先,我们需要把Blogroll这个模块的结构写出来,放在页面模板中试试看是否能正常显示,下面这段就是个完整的Blogroll模块:
<div class="module-content">
<MTBlogrollCategories">
<h2 class="module-header"><MTBlogrollCategoryLabel></h2>
<ul class="module-list">
<MTBlogrollEntries">
<li class="module-list-item">
<a href="<MTBlogrollEntryURI>">
<MTBlogrollEntryIfRel> rel="<MTBlogrollEntryRel>"
</MTBlogrollEntryIfRel><MTBlogrollEntryName></a><br />
<MTBlogrollEntryDesc>
</li>
</MTBlogrollEntries>
</ul>
</MTBlogrollCategories>
</div>
</div>

确认你的模块代码没有问题。
到Templates - Modules,创建一个新的模板模块,并命名为“Widget: Blogroll”(切记名称前面部分一定是“Widget: ”),接着把上面那段代码完整的放到这个模块的文本框中,保存。

这就建好了这个模块(module),因为名称前面用了“Widget: ”,这个模块也就成了一个widget。你到widget管理器里就可以看到它的存在。
我们就可以使用它了。
通过这样的办法,你可以创建任意多个自定义的widget。
从前面的说明或者通过你自己的实践,你可以知道,MT的widget管理器如同MT一样,具有高度的自定义能力。
默认的那些widgets,并不一定都会适合你的需求,包括里面的html标签,MT标签你都可以随时进行修改(在Templates - Modules区域),直到符合你的要求。

一直都没用过这个功能,都是手工修改module部分和模版,感觉也不是很麻烦。