Tutorials: October 2006 Archives

在Movable Type中创建页面(2)

| | Comments (3) | TrackBacks (0)

昨天的在Movable Type中创建页面可以帮助我们很好的理解MT页面的概念。那种方法对于建立几个不多也不复杂的页面来说是很实用的。

但在现实当中,有时候它又会显示出不足或不便于管理。

还是拿About关于页面来举例。如果你只是在你的个人blog上介绍你自己,那么用前面的那种方法就够了。加上你还做几个联系页面,资源页面什么的,就那么几个页面在Indexes模板区也不怎么碍事不妨碍管理。

但是如果情况是:

要介绍的不是一个人而是一个团队(有10个人或者20个人?),每个人都要有个单独的介绍页面。对了对了,还有一个所有团队成员的名单页面,就像类似于这个页面一样。如果用前面那办法在Indexes模板区创建,当然可以做到,但岂不是会在Indexes区域有几十个各种各样的模板了,容易和其他模板相混淆也不好管理,也一定很麻烦。头都会大的。

也许你想把自己曾经的作品,象论文,翻译文章,网站项目,Flash作品,摄影作品,成功案例等等,也放在你的网站上,问题是这些都不能象发表文章一样来发表到你的blog中去,因为他们都是非blog的内容。这些应该是你的blog的扩展,或者是你的网站的一部分,或者你的网站根本就没有blog,全部都是由若干个这样那样的部分所组成的(别急,慢慢来)。如果你有100篇论文,200幅摄影作品,总不能也放到Indexes区域去吧?头会更大,还不如扔掉MT。

我们以Digital Web的这个About页面来做范例,看看用MT怎么来实现这个板块。

先来分析一下。这个页面是用几段文字(或者说是一篇文章)介绍Digital Web在线杂志的基本情况,左边是4个栏目的导航(the stuff, the contributors, the site, advertising)。我们要注意看浏览器中这个页面的地址(url)是 site.com/about/。

再打开左边导航中的stuff栏目。页面正文部分是stuff的所有成员的名单,它的页面地址是 site.com/about/stuff/ 。其中每个stuff成员的链接都分别连到其单独的介绍页面,现在进去一个成员的页面,就到Garrett Dimon那里吧。现在你需要非常细心的看清楚了:正文部分最上面是成员名字Garrett Dimon,下面是他的相关资料和作品。再看页面地址,是 site.com/about/staff/garrett_dimon/ ,这个地址的最后面部分即是这个成员的名字。

打开左边导航的contributors栏目,你会看到和上面stuff栏同样的情况。

到现在为止,还没找到感觉?没关系,接着往下读。^_^

你用过一段时间的Movable Type了,我们一起来感受一下。如果我把site.com/about/ 当作一个MT,把site.com/about/stuff/ 看作是这个MT的一个类别(category),把这个成员的介绍页面site.com/about/staff/garrett_dimon/ 看作是这个类别中的一篇文章,把这个成员页面顶部的成员名字看作是这篇文章的标题,把左边导航中的4个栏目看作是这个MT中4个不同的分类... ...

到现在为止,你有感觉了。

把site.com/about/ 当作一个MT,那这个页面就是首页了。尽管这个首页和你看过的普通MT的首页不同,但是你通过更改首页模板就非常容易的可以实现,把所有的成员列表放到首页不就可以了吗?

因为每个介绍成员的页面是一个单篇文章,不需要月份存档和类别存档,也不需要所有文章存档和各类xml文件。而且所有的页面都是静态页面是不要常更新的,每个页面中都不需要任何的MT标签(你已经知道怎么做了)。

所以我们开始行动:


新建一个MT blog,设置好地址和路径。存档类型(Preferred Archive Type)选择“单篇”(Individual),存档文件后缀选html(你可以做别的选择)。

在Settings - Publishing 下的“Archive Mapping”,将Individual 模板的存档路径选为下图设置或
primary-category/entry_basename.html 。

在Indexes模板区,保留Main Index模板和Stylesheet(其实你也可以删掉,在首页模板和单篇模板中调用其它样式),其余的全部删掉。然后到存档模板区(Archives),留下Individual Entry Archive模板,其余全部删掉(大胆删吧,别怕)。此时重建所有文件。

这个时候About的blog就建好了。设立4个类别分别是stuff, contributors, site, advertising。把单篇文章的模板Individual Entry Archive改成你需要的设计(和首页一致,只要把首页模板复制过来就好了)。开始写的第一篇文章我觉得应该是site.com/about/staff/ 这个页面,文章标题叫“stuff”,归类到类别“stuff”中去,并把所有成员的名单列到这篇文章中,这时你看到编辑框下面的Basename是“stuff”了吗?这个“stuff”是文章的标题。发表,这个site.com/about/staff/ 的页面就出来了。到浏览器中看看这篇文章的地址是不是site.com/about/staff/ ?接下来再写篇新文章,是关于Garrett Dimon的介绍的,这篇文章的标题就叫“Garrett Dimon”,并归到类别“stuff”中,再看看这篇文章的地址是不是site.com/about/staff/garrett_dimon/ ?

你很快就可以写完所有成员的页面。然后把site.com/about/staff/ 页面的每个成员的名字链接连到各自的介绍页面不就完了?

其余三个栏目也是用一样的方法来完成。

象这样的情况,在设计页面模板的时候要注意,正文部分不需要任何MT的标签,侧边的导航也是固定的不需要MT的标签产生。你只需要在首页模板和单篇模板做成4个导航链接就可以了,和你平常做网页是一样的。简言之,整个About部分就是一个网站的一部分,就像做普通的网站一样,只不过是在MT中完成的。

当你需要增加一个类别时,在MT中太简单了,写文章的时候加个新的类别并在导航中补上导航链接。当有新的成员加入时,在site.com/about/staff/ 页面添加一个名字和链接并新发表一篇文章就是。当某个成员又有了新作品需要在他的介绍中及时加上去,到他的介绍页面补充上去一个链接指向他的新作品就是。

一切都是那么简单,那么方便。

等你看完上面的内容,等你做完类似的练习,等你真正理解了MT,你会想到更多,你也会有层出不穷的办法来用MT做出符合你的设计要求的网站;为了达到同一个效果,你也会有多种解决方案。上面举出的这个例子也只是众多解决方案中的一种。

今天你知道通过建立独立的MT来组建About部分,所以我现在再把前面那篇在Movable Type中创建页面中提到的那些页面再作一个变通,用本篇提到的方法来建立那些页面。

假设那些about页面,contact页面,links页面,resource页面,tags页面等等,我不在Indexes区域来创建他们各自的模板,而是可能重新建一个新的MT来安置他们,或者我把他们合并到上面那个About的MT中去也未尝不可,无非是新建一个类别嘛。

先说把他们合并到About的MT中去。假设把要建的所有的这些页面都归类到pages类别中。那么发表在这个类别中的标题为contact的文章地址就应该为:
site.com/about/pages/contact.html
Tags页面的地址就是:
site.com/about/pages/tags.html
... ... ...

只不过你不要把这个类别列入到那4个类别下作导航,而应该另做导航来连接这几个页面。

他们都是就着About这个MT的单篇存档路径来的。

如果我不把他们并到那里而是单独再建个新MT,除了上面那样的路径设置 primary-category/entry_basename.html 外,我也可以不分类别,直接就把单篇存档路径设为 entry_basename.html。因为都是独立的基本不和其它页面有关联的页面,所以我又不需要首页模板了(删除它!),只要一个单篇模板就满足我的需求。

你会觉得奇怪,没有首页的blog?是。

虽然是新设立的MT,按道理好像要首页才象那么回事,那它的首页是不是site.com/pages 呢? 我告诉你,不是。它的首页就是site.com! (奇怪!明明是新的MT怎么会用“别人”的首页?) 所以在设立这个MT的地址和路径时,你要把他们设置为
http://www.site.com/ 和
home/yourname/public_html
而不是:
http://www.site.com/pages/ 和
home/yourname/public_html/pages

总之,你想怎么办就怎么办。怎么办都可以办到。是吗?

到现在为止,你又作何感想呢?

相关阅读

在Movable Type中创建页面
Movable Type 不只是blog发布程序

在Movable Type中创建页面

| | Comments (9) | TrackBacks (0)

对已经使用Movable Type有段时间的朋友来说,可能这是件很简单的事,但对刚开始或接触不久的朋友来说应该还有点帮助。

我们用MT建立起来的blog,每次发表的文章不就是创建了页面吗,怎么还要谈创建页面呢?当然是,但这里要谈的不是指在blog中发表文章时创建的页面,而是独立于这些文章之外的页面。

举几个例子:我要做一个自我介绍的"about"页面;我要做个资源页面,上面是我收集的有关的某个行业的资源;我要做个友情链接的页面,因为首页的链接已经多得放不下了;我还要做个联系方式的页面,上面有联系表单;我还要做个象论坛那样置顶的简短说明,说明下面的“Read More”链接指向另一个页面,那个页面上才有更详尽的说明。这个简短说明总是置顶;也许做一个Tags Cloude的独立页面会比方在首页更好点?... ...还有很多我没想到的。

这些页面都不是blog中的文章。如果你用发表文章的方式来做这些页面,那就是今天发表一个“关于”,明天发表一个“联系我”。当然我们从来没有看过谁的blog是这样的。但我们确实看过很多朋友的这些页面是用发表文章的办法作的,因为他们把时间改动到最早或最新,就可以把这篇“文章”摆在最后面或最前面。这不失为一种办法,也最容易。

我们还可以用另外的办法来做。

首先你需要在“Templates”- “Indexes”模板区,创建一个新的模板(Create New Index Template)。如果是用来“About Me”的,那就把这个模板命名为“about”吧,然后在“Output File ”框中填上你要放置这个页面的路径。如果你要把这个页面放在blog的根目录下,那就填上“about.html”就是了。不过,如果将来哪天类似的页面多了,就会在根目录下排成一长串,所以还是归到一个文件夹里面比较好,用一个“pages”的文件夹好象不错,所有的这些独立页面都放在这里面。这样想好后我就在“Output File ”中填上“pages/about.html”。记住了,这个文件夹的路径你不需要到服务器端去创建,只要在这里填上后MT会自动为你创建好的,就象上传图片时一样填上你要的路径MT就创建好了路径并把图片传到了你设置的路径下。

另开一个浏览器窗口,把Main Index模板中的代码全部复制,粘贴到这个about模板的编辑框中。如果你此时保存重建,这个页面一定和你的首页是一样的。假设你只要把正文区域改成自我介绍,并且正文部分是在alpha板块内,那就在about模板中找到从下面开始:
<div id="alpha">
<div id="alpha-inner" class="pkg">
至下面结尾前的部分(不包括下面的):
<div id="beta">
<div id="beta-inner" class="pkg">

这是完整的alpha板块部分。在这板块里,文章部分是从这行开始的:
<div class="entry" id="entry-<$MTEntryID$>">
从这行往上至:
<div id="alpha-inner" class="pkg">
之间的那几行都可以删除不要。接下来是文章标题H3,正文部分就从
<div class="entry-body">开始。将<div class="entry-body">内的所有代码全部删掉(别怕!)。

现在alpha板块变成大概下面这个样子了:


<div id="alpha">

<div id="alpha-inner" class="pkg">

<div class="entry">

<h3 class="entry-header">关于我</h3>

<div class="entry-content">

<div class="entry-body">

... ... ... ...

</div>

</div>

</div>

</div>

</div>

现在你就可以在上面的“... ... ...”区域写上你的丰功伟绩和宏伟蓝图了。

基本上完成了。但在保存重建之前,不要钩选“Build Options”因为没有必要在每次重建那些Index模板时也来重建这个页面,节约点资源。

如果你对(X)HTML熟悉,你当然并不一定要拘泥于上面的标签。

这种办法来创建的页面虽然删除了部分MT标签但也保留了部分MT标签。保存下来的基本上在侧边栏,因为你可能还想要一些由MT标签产生的各类归档,最新文章等等内容。

但这并不意味着用MT来创建页面就一定要用到MT标签才行。一个没有任何MT标签的模板一样可以建立起页面来。那怎么办呢?

在你的blog网站上打开一个单篇文章(在浏览器而不是在MT)。查看源文件,完整复制粘贴到你要创建的模板中。完全没有MT标签吧?修改文字内容,保存重建,还是别钩选上面那个选项(你会发现用FireFox查看源文件要比IE方便直接得多)。

页面算是建好了,最后就是你要在相关的模板中建好这个页面的链接使其他页面能连接到这个页面来,否则这个页面就真的成了“独立”的页面而“游离”于网站之外了。

以后什么时候你觉得这个或这些页面要修改,你只要到Indexes模板区打开某个你建立的页面进行修改,就象你平常修改已经发表过的文章一样。

到这里,你应该发现了:创建一个页面就是创建一个模板,修改这个页面就象修改文章一样的方便。

再回想一下,以前你做网站的页面时是怎么做的呢?你需要和服务器打交道。你先要在页面编辑器中做好这个页面再传到服务器端。现在你不需要这么干,都在MT中完成,不要做额外的上传。是吗?

另外,在MT中不光是可以创建HTML文件,它可以创建任何后缀的文件,如.php,.xml,.inc等等。

我的“与我联系”的页面就是用这种方法建的。可以参考一下。

就说这么多吧,这是最基本的在MT中创建独立页面的方法。


相关阅读

在Movable Type中创建页面(2)
Movable Type 不只是blog发布程序

使用Movable Type的Widgets

| | Comments (1) | TrackBacks (0)

这是我在半个月以前写的一个关于Widgets使用的草稿,一直没有发出来,本来想把Widgets和modules连到一起来写,因为二者是有关联的。现在把标题改了还是单独写widgets吧。

Movable Type的Widgets使得页面模块的管理变得非常方便,在使用上也没有什么难度。

manage_my_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">
<div id="beta-inner" class="pkg">
<div class="module-search module">
...... ......
</div>
</div>
</div>

搞清楚里面的每个module的结构,把要用widget代替的module部分删除。一定要看清楚模板里面的每个html标签。

<div class="module-archives module">
<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-blogroll module">
<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区域),直到符合你的要求。

About this Archive

This page is a archive of entries in the Tutorials category from October 2006.

Tutorials: July 2006 is the previous archive.

Find recent content on the main index or look in the archives to find all content.