Movable Type 的模版是把一些特殊的卷标嵌入标准的纯文字片段(在这种情况下也有可能是 HTML )。某些卷标是所谓的『容器』卷标,里面盛装著可以称之为子模版的东西,实际上就是在两个 MT 卷标间夹著其它的文字和 MT 卷标。基本上你可以把容器卷标想成是一种循环或者是一种条件区块。
其它非容器卷标其实就祇是变数卷标:她们是动态信息的路霸,先占住那个位置等著真正的数据出现。
所有的 Movable Type 卷标都被小于符号和大于符号给包起来,就跟 HTML 卷标一样。你可以选择性地在这些符号内再插入一个 $
符号,就像这样:
<$MTEntryBody$>
因此你可以很快地区别某个卷标到底是 HTML 卷标还是 Movable Type 卷标。
Movable Type 卷标会用属性来修改她们的作用。卷标属性就跟 HTML 卷标属性很像:她们是一连串的 名称="值"
配对,彼此之间再以空白隔开。例如说:
<MTEntries author="Foo" category="Bar">
(请查阅 MTEntries
文件来看看这样到底会做些甚么事。)
属性的值一定要用引号包起来,否则会没办法被正确解读。如果你要在某个插入 $
字符的卷标中加入属性,那么你也应该把属性放在两个 $
之间。例如:
<$MTEntryDate format="%B %e, %Y"$>
有一些卷标属性是全域性的,因此可以套用在所有的 Movable Type 变数代换卷标上。全域属性会在后面的全域卷标属性小节讨论到。至于其它的属性则具有卷标专一性,祇能套用在特定的卷标上;这些属性将会在后面随著那些卷标一起列出。
还有一些 Movable Type 卷标是对内容具有敏感性的。例如说,祇有在这样的文章项目里使用 MTComments
卷标才有意义:跟单篇
文章汇整并用的汇整模版或者是评论跳出
模版。
<$MTBlog*$>
卷标。
汇整网址
,也就是会显示在网志组态画面上的那一个。
站台网址
(在网志组态画面里的那一个)是 http://www.your-site.com/blog/ ,那么主机名称部分就会是 www.your-site.com
。
在预设的情况下,如果你的网志网址指定了连接埠号码的话,这个连接埠号码也会成为此卷标值的一部份。你可以把这个卷标的 exclude_port
属性设为 1
以移除此数值。
+|-hh:mm
的格式。例如说,领先 UTC 4
小时的时区,就会被显示成 +04:00
。
这个卷标的作用会依情境而异:如果你把它用于文章情境的话,这份 RDF 就会包含跟这篇文章有关的额外信息;否则它就祇会包含整体性的网志信息。
N
天的文章项目,这里的 N
就是你在这个网志的组态中所设定的天数。当你要改变这个作用的时候,你可以加上下列的属性:
N
篇文章项目;这里的 N
是某个大于 0 的数字。
lastn
(如前述)一起用的时候,就先从头数最新的 M
篇文章项目,然后才显示接在之后的 N
篇文章。举个例子来说,如果你用了下列的卷标:
<MTEntries lastn="5" offset="5"> ... </MTEntries>
那么就会显示第 6 到第 10 篇文章项目。
注意:祇有跟 lastn
一起用的时候才有效。
类别名称
这个类别中的所有文章。请注意这很有可能会是一长串文章,所以你应该会想要再加上 lastn
来限定显示文章的篇数。
如果你想要从多个类别里把文章项目抓出来,或者是祇限定那些被指定到多个类别的文章时, 类别名称
也可以包含 AND
和 OR
这两个布林逻辑算符。但是请注意,你祇能用其中的一个;也就是说,你没办法用 Foo AND Bar OR Baz
-- 这是行不通的!你祇能用 Foo AND Bar AND ...
或者 Foo OR Bar OR ...
。
再举一个例子说明,如果你想要列出所有同时被指定到 Foo
和 Bar
这两个类别的文章项目,你可以用:
<MTEntries category="Foo AND Bar"> ... </MTEntries>
作者姓名
显示所有的文章。请注意这很有可能会是一长串文章,所以你应该会想要再加上 lastn
来限定显示文章的篇数。
N
天年轻的文章。
N
篇有人发表评论的文章项目。每一则文章项目都祇会出现一次而已。所以如果文章甲有一篇评论,然后文章乙有一篇评论,接著又有人对文章甲发表评论,结果最后祇会显示两则文章项目:文章甲,然后显示的是文章乙。
<MTEntries>
卷标所要采用的排序方法。这里的设定将会覆写掉你在网志组态的文章项目排序的全域设定。有效的值分别是 ascend
和 descend
。
在这个情境下, ascend
和 descend
并不祇是依时间先后排序;事实上这个属性还可以跟稍后会提到的 sort_by
一起用来排序。举例来说,你可以把文章项目标题排成从 A 到 Z (ascend
) 或者是从 Z 到 A (descend
) 。
预设值是 descend
。
字段名称
值包含有 title
、 status
、 modified_on
、 author_id
或 excerpt
。
这个属性最常见的用法是拿来把文章项目按照字母顺序排列,而不是照他们的时间先后。举例来说,假设你拿 Movable Type 来显示某个字典站台,所以你会想拿字母来聚集部分的文章项目,所以你就建立 26 个不同的类别,也就是从 A 到 Z 。当你要显示站台上所有的文章项目,而又想以字母来分类,以字母顺序来排序(在此假设你拿字或词来当作每一则文章项目的标题);你可以这么做:
<MTCategories> <$MTCategoryLabel$><br /> <MTEntries sort_by="title" sort_order="descend"> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br /> </MTEntries><br /> </MTCategories>
请注意:你可以把 lastn
、 category
和 author
一起混用来筛选文章项目列示(其实还有 days
这个被此卷标自己用掉的属性;然而祇要你用了其它属性,那么这个属性就会被覆写掉)。举例来说,你可以把 lastn
和 category
一起用在 MTEntries
里,其结果就如你所预期的一般:显示该类别理最新得 N 则文章项目。如果你想要再用作者姓名加以筛选,你也可以把 lastn
、 category
和 author
三个都用上:
<MTEntries category="Fun" author="Me" lastn="10"> ... </MTEntries>
这样就会显示 Fun
这个分类中,作者是 Me
的最新 10 则文章项目。
草稿
或者是定稿
)。在大多数的情况下,这个卷标其实没有甚么用。因为在你的网志上,祇有状态为定稿
的文章才会被显示出来。不过在汇出机制里,或许你会用到这个卷标。
...
)来当作文摘。
如果你提供了文摘的话,请注意所有的换列或换段都不会被转换,除非你在这个卷标里用了 convert_breaks
属性:
有断行的文摘: <$MTEntryExcerpt convert_breaks="1"$>
如果你在这则文章项目中核选了转换换列
而自动转换换列和换段,那么段落 -- 用两个换列所分隔出来的文字区块 -- 就会被包在 <p> 和 </p> 卷标里,而所有单一的换列都会维持著,并且插入一个 <br /> 卷标。
请注意,祇要你在这个卷标中加上了 convert_breaks
属性,就会覆写掉针对该文章项目的文字格式
设定。所以假设你在文章项目中开启了这项设定,却想在特殊的情况下把它关闭,你可以这样做:
<$MTEntryBody convert_breaks="0"$>
同时也请注意,如果你祇想显示文章本体的前 N 个字,那么就可以用 words 属性。再举例来说,下列的例子就祇会显示文章本体的前 5 个字。
<$MTEntryBody words="5"$>
当寻找前 N 个字的时候,首先会从文章本体移去 HTML ,然后就祇会剩下字及字间空白了。
如果你在这则文章项目中核选了转换换列
而自动转换换列和换段,那么段落 -- 用两个换列所分隔出来的文字区块 -- 就会被包在 <p> 和 </p> 卷标里,而所有单一的换列都会维持著,并且插入一个 <br /> 卷标。
请注意,祇要你在这个卷标中加上了 convert_breaks
属性,就会覆写掉针对该文章项目的文字格式
设定。所以假设你在文章项目中开启了这项设定,却想在特殊的情况下把它关闭,你可以这样做:
<$MTEntryMore convert_breaks="0"$>
偏好汇整类别
而定。这也是预设的动作,你可以用 archive_type
属性来加以覆写成你想要连结的汇整类别。
举例来说,假设你已经选择了要用单篇
汇整来当作偏好汇整类别
,那么接下来这个卷标:
<$MTEntryLink$>
就会产生一个通往该文章项目所属的单篇汇整页面网址,文章的档名将会是该则文章项目的 ID ,不满六位数字的部分则补上零,最后再接上你的网志的汇整档案扩展名
(像是 html
)。
如果你在网志里同时也启用了分类
汇整,那么你也许会想改连到该则文章项目所属的分类汇整页面;这个时候你就可以用这个卷标:
<$MTEntryLink archive_type="Category"$>
这个卷标会被取代成一个到该文章项目的类别汇整页面的链接。
如果你想要真正的永久链接 -- 也就是某一个永远连到特定文章项目的链接,即使是跟许多其它文章项目一起被汇编到同一个页面亦然 -- 这时你应该用 <$MTEntryPermalink$>
卷标。
#
) 来(藉由 ID )指向该则文章项目。这跟 <$MTEntryLink$>
很像,但聪明得多,因为他在单篇汇整以外的汇整中都会包含这个锚(在单篇汇整中如果还加上这个定位锚,就会显得相当累赘)。
就跟 <$MTEntryLink$>
一样,这个卷标也有选用的 archive_type
属性来指定所要连结的汇整类别。
如果你加上了 spam_protect
属性,那么E-mail 地址就会被加以修改,以免某些垃圾信机器人蒐集到你的E-mail 地址;然而在这种情况下,网页浏览器却仍旧能够显示出正确的E-mail 地址。举例来说,如果有个E-mail 地址是 foo@bar.com
,然后你用了
<$MTEntryAuthorEmail spam_protect="1"$>
那么这个E-mail 地址就会被显示成 foo@bar.com
。
这个规则可以用 show_email 和 show_url 这两个卷标属性来加以覆写。举例来说,如过你用了
<$MTEntryAuthorLink show_email="0"$>
那么作者的E-mail 地址就永远不会被显示出来;于是整个规则就会变成:如果作者有输入网页网址,那么作者名字就会连到那个网址;如果作者没有填写网址,那么这里就祇会显示出作者名字,而不提供任何链接。
如果你加上了 spam_protect
属性,而又显示了电子邮件链接的话,这里的E-mail 地址也同样地会被加以修改,以免被某些垃圾信机器人蒐集到。然后在这种状况下,网页浏览器却还是可以显示出正确的E-mail 地址。举例来说,如果有个E-mail 地址是 foo@bar.com
,然后你用了
<$MTEntryAuthorLink spam_protect="1"$>
那么这个E-mail 地址就会被显示成 foo@bar.com
。
format
属性和 language
属性。关于这些属性的详细信息,请见日期卷标格式小节。
format
属性和 language
属性。关于这些属性的详细信息,请见日期卷标格式小节。
<MTEntryIfExtended> <a href="<$MTEntryLink$>#<$MTEntryID$>">尚有内容...</a> </MTEntryIfExtended>
编辑文章项目
画面里的允许评论
被设定成开启
或关闭
)的时候,才会被显示出来。你可以用这个卷标来让某个连到这则文章项目评论的链接,(当然)祇有在允许发表评论的时候才显示出来。
使用这个卷标的范例请见后面文章项目小节的评论区段。
开启
时才会被显示出来。举例来说,你就可以用这个卷标来适时地显示出『发表回响』表单。
编辑文章项目
画面里的允许通告
设定被开启)的时候,才会被显示出来。
使用这个卷标的范例请见引用功能文件。
8
的文章项目来说,这个卷标祇会产生 8
这个值。有的时候你会比较希望你的 ID 被补满零;在这种情况下,你可以在 MTEntryID
卷标里使用 pad属性:
<$MTEntryID pad="1"$>
这会用零把文章项目 ID 补满成六 (6) 位数字,像是 000008
。
<$MTCategory*$>
卷标(说明文件)来显示关于每一个类别的信息。
你也可以在这个卷标里用 glue 属性来指定类别间的分隔字符串。例如当你想要用逗号来隔开类别名称时就会很好用。请注意 glue 属性的值不可以是单引号或双引号。
举例来说:
这篇文章被归类到下列的类别中: <MTEntryCategories glue=", "> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> </MTEntryCategories>
convert_breaks
和 allow_comments
。如果旗标的值为真,那么就会显示 1
这个值;否则就会显示 0
这个值。至于旗标的名称则是以 flag
属性来递送。例如:
<$MTEntryFlag flag="allow_comments"$>
这个卷标用于以汇出机制来汇出文章项目数据的情况里。你应该不需要在你自己的模版里用到。
MTEntryPrevious
情境中,某个 <$MTEntryTitle$> 卷标就会变成前一则文章项目的标题。在你(用一个 </MTEntryPrevious> 卷标)结束这个情境后,所有的卷标又会恢复成参照当前的文章项目。
使用这卷标的范例请见后面的 MTEntryNext
文件。
MTEntryNext
情境中,某个 <$MTEntryTitle$> 卷标就会变成下一则文章项目的标题。在你(用一个 </MTEntryNext> 卷标)结束这个情境后,所有的卷标又会恢复成参照当前的文章项目。
接下来这个范例是个导览列,让你连结到前一则和下一则文章项目,还有一个链接连回你的网志主索引。
<MTEntryPrevious> <a href="<$MTEntryLink$>"><< <$MTEntryTitle$></a> | </MTEntryPrevious> <a href="<$MTBlogURL$>">Main</a> <MTEntryNext> | <a href="<$MTEntryLink$>"><$MTEntryTitle$> >></a> </MTEntryNext>
MTEntries
容器里的时候才会变得非常有用。举例来说:
<MTEntries> <MTDateHeader> <$MTEntryDate format="%B %e, %Y"$> </MTDateHeader> Title: <$MTEntryTitle$> </MTEntries>
MTDateHeader
卷标来把你特定日期里的所有文章排进某种结构(例如说 div
)里。这个卷标就跟 MTDateHeader
一样,祇有在 MTEntries
容器里的时候才会非常有用。举例来说:
<MTEntries> <MTDateHeader> <div class="day"> <$MTEntryDate format="%B %e, %Y"$> </MTDateHeader> Title: <$MTEntryTitle$> <MTDateFooter> </div> </MTDateFooter> </MTEntries>
<MTEntries>
容器里的第一篇的时候才会显示出来。
<MTEntries>
容器里的最后一篇的时候才会显示出来。举例来说,这可以用在你的索引页面上,连结到前一则文章项目的汇整页面。例如当你在使用逐日汇整时:
<MTEntries days="1"> ... <MTEntriesFooter> <MTEntryPrevious> <a href="<$MTEntryLink archive_type="Daily"$>">昨日汇整: <$MTEntryDate format="%A, %B %d, %Y"$></a> </MTEntryPrevious> </MTEntriesFooter> </MTEntries>
lastn
属性使用的情境而定,详见后述)所有回响清单的容器卷标。
如果你在这个卷标里加上了 lastn="N"
属性,这里的 N
是你想要显示的回响数量,那么就会显示当前文章项目 -- 如果用在文章项目情境中 -- 或网志 -- 如果用在其它地方 -- 里最新的 N
篇回响。
如果你使用这个卷标时没有加上任何属性,那么 <MTComments>
就会列出所有当前文章项目的回响。这表示当你使用这个卷标而不加上任何属性的时候,一定是用于文章项目情境:在单篇汇整模版
、回响预览模版
、回响清单模版
或回响出错模版
里,放进 <MTEntries>
中。
在预设的情况下,这些回响会按照你在网志组态里指定的回响显示顺序来排序并储存。不过你还是可以在这个卷标里用 sort_order
属性来覆写这个设定;这个属性的值可以是 ascend 或是 descend 。
举例来说,要显示你的网志上最近被发表的 6 篇回响,丝毫不考虑他们各自所属的文章项目,而以时间顺序倒序排列(把最新的放在最前面)的话,你可以把下列的卷标放到你的主索引模版里:
<MTComments lastn="6" sort_order="descend"> <p><$MTCommentAuthor$> 说道:<br /> <$MTCommentBody$></p> </MTComments>
对于回响清单里的每一篇来说,在容器内的文字及卷标都会被显示出来。下列每一个卷标都用于显示某篇回响的特定变数区块。
8
的文章项目来说,这个卷标祇会产生 8
这个值。有的时候你会比较希望你的 ID 被补满零;在这种情况下,你可以在这个卷标里使用 pad 属性:
<$MTCommentID pad="1"$>
这会用零把回响 ID 补满成六 (6) 位数字,像是 000008
。
<MTComments lastn="N">
的时候会相当有用,因为它会让你连到跟这篇回响所对应到的特定文章项目。
这个卷标也有一个选用的 pad
属性,其功能就跟前述的 <$MTCommentID$>
卷标中的 pad
属性一模一样。
这个规则可以用 show_email 和 show_url 这两个卷标属性来加以覆写。举例来说,如过你用了
<$MTCommentAuthorLink show_email="0"$>
那么作者的E-mail 地址就永远不会被显示出来;于是整个规则就会变成:如果作者有输入网页网址,那么作者名字就会连到那个网址;如果作者没有填写网址,那么这里就祇会显示出作者名字,而不提供任何链接。
如果你希望强迫发表回响的读者一定要留下E-mail 地址 -- 这意味著你不能够在网志组态里核选允许匿名回响核选框 -- 而又不想在网志上显示她们的E-mail 地址时会相当有用。
如果你加上了 spam_protect
属性,而又显示了电子邮件链接的话,这里的E-mail 地址也同样地会被加以修改,以免被某些垃圾信机器人蒐集到。然后在这种状况下,网页浏览器却还是可以显示出正确的E-mail 地址。举例来说,如果有个E-mail 地址是 foo@bar.com
,然后你用了
<$MTCommentAuthorLink spam_protect="1"$>
那么这个E-mail 地址就会被显示成 foo@bar.com
。
如果你加上了 spam_protect
属性,那么E-mail 地址就会被加以修改,以免某些垃圾信机器人蒐集到你的E-mail 地址;然而在这种情况下,网页浏览器却仍旧能够显示出正确的E-mail 地址。举例来说,如果有个E-mail 地址是 foo@bar.com
,然后你用了
<$MTCommentEmail spam_protect="1"$>
那么这个E-mail 地址就会被显示成 foo@bar.com
.
转换换列和换段
,那么段落 -- 用两个换列所分隔出来的文字区块 -- 就会被包在 <p> 和 </p> 卷标里,而所有单一的换列都会维持著,并且插入一个 <br /> 卷标。
请注意,祇要你在这个卷标中加上了 convert_breaks
属性,就会覆写掉针对全域的转换换列和换段
设定。所以假设你在全域设定中开启了这项设定,却想在特殊的情况下把它关闭,你可以这样做:
<$MTCommentBody convert_breaks="0"$>
format
属性和 language
属性。关于这些属性的详细信息,请见日期卷标格式小节。
1
开始。请注意这里的顺序是按照排序(递增或递减)而定的。
<$MTEntry*$>
卷标来参照该则文章项目。举例来说,你就可以这么用:
<MTComments lastn="5" sort_order="descend"> <MTCommentEntry> 这篇回响是针对 <$MTEntryTitle$> 这篇文章所发表的。 </MTCommentEntry> </MTComments>
当你做出回响预览模版
的时候,你应该要采用下列这些卷标。这些卷标全部都跟前述的回响
小节里名称相近的卷标作用相仿;唯一的不同是这些卷标祇能用于预览之用,而不是用在 <MTComments>
区块中。
回响
小节里名称相近的卷标意思相同。
回响预览
模版和回响出错
模版里,好让系统得知发表完回响后要把读者转送到哪里。使用这个卷标时,把下面这个隐藏输入字段贴进你的回响预览
模版和回响
出错模版里:
<input type="hidden" name="static" value="<$MTCommentPreviewIsStatic$>">
<$MTCommentPreviewState$>
卷标。
这是一个你需要在回响预览页面(回响预览模版
)里使用的神奇卷标。这个卷标会被取代成一切要发表回响所需的回响数据,以及回响是从嵌入式回响或弹出式回响所发表的消息。
下列的模版卷标和变数适用于你的汇整页面及汇整总索引。
MTEntries
卷标来显示该页面上每一则文章项目的信息。举例来说:
<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveDate$></a><br /> <MTEntries> [<$MTEntryTitle$>] </MTEntries> <br /><br /> </MTArchiveList>
这会显示一个连往汇整页面的链接,后面再跟著那一个页面上每一则文章项目的标题清单。
这个卷标有两个属性可用: archive_type
会指定汇整清单的类别,而 lastn
则会限制列出的汇整数量。
archive_type
这个属性是选用的;如果没有这个属性的时候,就会使用你的偏好汇整类别,或者你的汇整类别。不过这个属性在你选用了多于一种网志汇整类别的,而你又想要用不是你的偏好汇整类别列出的时候会很好用。举例来说,如果你打算要保持单篇
汇整和逐日
汇整,而你的偏好汇整类别是单篇
汇整时,你可以用这个卷标来列出你的逐日
汇整:
<MTArchiveList archive_type="Daily"> ... </MTArchiveList>
lastn
属性可以用来限制列出的汇整数量;举例来说,如果你的网志上有多于 10 个月份量的汇整,但是你祇想要列出最近的 5 个时,就用这个卷标:
<MTArchiveList archive_type="Monthly" lastn="5"> ... </MTArchiveList>
根据预设值,这个链接会连到目前正在建立的汇整类别的汇整页面;举例来说,建立一连串的逐月
汇整时,
<$MTArchiveLink>
会产生连到特定的逐月
汇整的链接。你可以指定 archive_type
属性来覆写这个作用;这个属性可以设成下列几个值之一: Individual
、 Daily
、 Weekly
、 Monthly
或 Category
。
Month Day, YYYY
格式表示的日期。
Month Day, YYYY - Month Day, YYYY
格式表示的该周日期范围。
Month YYYY
格式表示的月份。
把 MTArchiveTitle
跟 MTArchiveLink
放在一起用可以说是建立汇整总索引最简单的方法了。因为 MTArchiveTitle
的值会随著任何你选择的类别而改写。举例来说:
<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br /> </MTArchiveList>
不论你选择了哪一种汇整类别,都能够显示出有用的汇整页面清单。
<MTArchiveList>
容器时会很有用,就像这样:
<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> (<$MTArchiveCount$>)</a><br /> </MTArchiveList>
逐日
汇整、逐周
汇整或者是逐月
汇整时才有意义。这也是标准的日期卷标,所以请参照后面会提到的日期卷标格式来自订日期格式。
你可以在某个 MTArchiveList
容器里使用这个卷标,也可以用于某个和按时汇整类别相关联的汇整模版里、在 MTEntries
卷标以外的地方。你可以用来显示特定汇整页面的日期档头 -- 例如月份和年份:
<$MTBlogName$> Archives: <$MTArchiveDate format="%B %Y"$> <MTEntries> ... </MTEntries>
逐日
汇整、逐周
汇整或者是逐月
汇整时才有意义;除此以外的情况都会失效。请参照后面会提到的日期卷标格式来自订日期格式。
你可以在 <$MTArchiveDate>
卷标所适用的相同情境中使用这个卷标。
分类
汇整的时候才有意义。
你可以在某个 MTArchiveList
容器中使用这个卷标,也可以用于某个和你的分类
汇整相关联的汇整模版里、在 MTEntries
卷标以外的地方。你可以用来显示特定汇整页面的类别档头,像是:
<$MTBlogName$> Archives: <$MTArchiveCategory$> <MTEntries> ... </MTEntries>
MTArchivePrevious
情境中, <$MTArchiveTitle$> 卷标就会去参照前一个汇整的标题。当你(用 </MTArchivePrevious> 卷标)结束这个情境后,所有的卷标又会回来参照现用的汇整。
这个卷标可以用于你指定与逐日
、逐周
或逐月
汇整相关联的汇整模版中;如果你想要在单篇文章汇整中也有相似的功能,请参考 <MTEntryPrevious>
卷标。
在预设的情况下,『前一份』汇整是按照汇整类别而定的 -- 例如说,在逐日
汇整里,『前一份』汇整指的是前一天的文章汇整。如果你想要覆写这样的作用 -- 像是你更想要连结到前一个月份的汇整 -- 时你就可以用 archive_type
属性(范例见后)。
使用这个卷标的范例请见后面的 <MTArchiveNext>
文件。
MTArchiveNext
情境中, <$MTArchiveTitle$> 卷标就会去参照下一个汇整的标题。当你(用 </MTArchiveNext> 卷标)结束这个情境后,所有的卷标又会回来参照现用的汇整。
这个卷标可以用于你指定与逐日
、逐周
或逐月
汇整相关联的汇整模版中;如果你想要在单篇文章汇整中也有相似的功能,请参考 <MTEntryNext>
卷标。
在预设的情况下,『下一份』汇整是按照汇整类别而定的 -- 例如说,在逐日
汇整里,『下一份』汇整指的是前一天的文章汇整。如果你想要覆写这样的作用 -- 像是你更想要连结到前一个月份的汇整 -- 时你就可以用 archive_type
属性。
这个范例是一个导览列,提供连往前一份汇整和下一份汇整的链接,以及一个连回你的网志主索引的链接。
<MTArchivePrevious> <a href="<$MTArchiveLink$>"><< <$MTArchiveTitle$></a> | </MTArchivePrevious> <a href="<$MTBlogURL$>">Main</a> <MTArchiveNext> | <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> >></a> </MTArchiveNext>
接下来这个导览列的范例可以被用在逐日
汇整里,用来连到前一个月份的汇整以及下一个月份的汇整。如果你在你所有的逐日
汇整里都加上了月历,然后想要连到前一个月份和下一个月份的月历时,就会很有用。
<MTArchivePrevious archive_type="Monthly"> <a href="<$MTArchiveLink archive_type="Monthly"$>"><$MTArchiveDate format="%b"$></a> </MTArchivePrevious> <MTArchiveNext archive_type="Monthly"> <a href="<$MTArchiveLink archive_type="Monthly"$>"><$MTArchiveDate format="%b"$></a> </MTArchiveNext>
接下来这些卷标可以用来显示网志上的类别清单,以及每一个类别的信息( ID 、卷标等)。
<MTEntries>
卷标来显示这个类别中每一个文章项目的信息。例如:
<MTCategories> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a><br /> <MTEntries> <$MTEntryTitle$> </MTEntries> <br /><br /> </MTCategories>
这会显示连往每一个类别的链接,然后后面再个别跟著该类别的文章标题清单。
如果某个类别里没有包含任何文章项目的话,预设这个类别就不会包含在这个类别清单里。这个预设的作用之所以会是这样,主要因为它是从 <MTArchiveList>
的预设作用所复制而来的。请注意如果你包括了连到分类汇整页面的话,这样也是建议的作法;因为空的类别不会产生汇整页面。换而言之,连往空的类别的汇整链接会是一个坏掉的链接。
如果你想要覆写这个预设的作用,你可以在这个卷标里加进 show_empty
属性。例如这些卷标:
<MTCategories show_empty="1"> <$MTCategoryLabel$> </MTCategories>
就会显示所有的类别清单,即使是空的类别也会。
分类
汇整时才有效;否则你就会在重建页面的时候得到一个错误讯息。
<MTCategories>
里面)中,不然你也可以用 category 属性来指明引用通告网址所要对应到的类别。举例来说:
<$MTCategoryTrackbackLink category="Foo Bar"$>
祇要你指定了这个属性,就可以在任何你想要的地方使用这个卷标。
下列的卷标可以用来在你的文章项目里画出月历。事实上并没有任何限制说你一定得要用 HTML 的表格来画出月历;这些卷标完全是泛用型的,因此你可以利用她们来做出各种迥然不同样子的月历。
<MTCalendar>
卷标和 </MTCalendar>
卷标之间的组成组件都代表著月历里的一个『格子』(有可能是一个月里的某一天,或者是属于别的月份的空白格子)。
这个卷标还可以加上选用的 month
属性,用来指定要显示哪一个月份和年份的月历。如果这个属性的值是 this
这个字符串,就会建立起近期情境;这表示说,你可以在汇整模版里用
<MTCalendar month="this"> ... </MTCalendar>
来表示正被检视的汇整那个月份的月历。这个卷标在单篇
汇整、逐日
汇整、逐周
汇整和逐月
汇整里都可以用,但是你不能拿进分类
汇整用。
如果 month
属性的值被设定成 last
的话,就会建立出相对目前日期的前一个月份的月历。
如果你想要建立特定月份的月历,你可以在 month
属性中用 YYYYMM
格式(例如: 200112
)来指定确切的月份和年份。
如果你没有加上 month
属性的话,就会显示当月的月历。
如果你祇想要在月历里显示某个特定类别的文章,你可以指定 category
属性,并且指明该类别的名称。举例来说,下面这个卷标:
<MTCalendar month="200201" category="Foo"> ... </MTCalendar>
就祇会显示 2002 年一月份所有 Foo
这个类别里的文章项目。
1
)。你可以在 <MTCalendarIfEntries>
容器和 <MTCalendarIfNoEntries>
容器里用这个卷标。
1
,然后依序增加,往水平方向在月历上横跨。
这个卷标跟前述的 <$MTCalendarDay$>
不同,因为后者仅套用于非『空白』的格子(也就是代表著特定月份里某个日子的项目)。
format
属性。如果你祇想要显示数字型的日期,那么就祇需要用 <$MTCalendarDay$>
就可以了;祇有在你想要显示更多日期/时间信息的时候,才有必要使用这个卷标。
<MTCalendarWeekHeader>
卷标和 </MTCalendarWeekHeader>
卷标间的组成元素都祇会在每一周的开始时被显示出来。
<MTCalendarWeekFooter>
卷标和 </MTCalendarWeekFooter>
卷标间的组成元素都祇会在每一周的结束时被显示出来。
<MTCalendarIfBlank>
卷标和 </MTCalendarIfBlank>
卷标间的组成元素都祇会在该格子是一个『空』格子 -- 也就是不代表该月份任何一天的格子 -- 时被显示出来。
<MTCalendarIfEntries>
卷标和 </MTCalendarIfEntries>
卷标间的组成元素都祇会在该格子里的日期有任何文章项目时才显示出来。你还可以用 <MTEntries>
卷标来显示那一天里所有的文章项目。
举例来说:
<MTCalendarIfEntries> 这一天里的文章: <MTEntries> <a href="<$MTEntryLink$>"><$MTEntryTitle$></a><br /> </MTEntries> </MTCalendarIfEntries>
<MTCalendarIfNoEntries>
卷标和 </MTCalendarIfNoEntries>
卷标间的组成元素祇有在该格子里的日期没有任何文章项目的时候才显示出来。
<MTCalendarIfToday>
卷标和 </MTCalendarIfToday>
卷标间的组成元素祇有在该格子里的日期就是目前的日期时才显示出来。
这里是一个标准的月历显示组成,会显示出目前的月份。
<table border="0" cellspacing="4" cellpadding="0" summary="Monthly calendar"> <caption><$MTDate format="%B %Y"$></caption> <tr> <th abbr="星期日" align="center">Sun</th> <th abbr="星期一" align="center">Mon</th> <th abbr="星期二" align="center">Tue</th> <th abbr="星期三" align="center">Wed</th> <th abbr="星期四" align="center">Thu</th> <th abbr="星期五" align="center">Fri</th> <th abbr="星期六" align="center">Sat</th> </tr> <MTCalendar> <MTCalendarWeekHeader><tr></MTCalendarWeekHeader> <td <MTCalendarIfToday>bgcolor="#EEEEEE"</MTCalendarIfToday> align="center"> <MTCalendarIfEntries><MTEntries lastn="1"><a href="<$MTEntryLink$>"><$MTCalendarDay$> </a></MTEntries></MTCalendarIfEntries> <MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries> <MTCalendarIfBlank> </MTCalendarIfBlank></td> <MTCalendarWeekFooter></tr></MTCalendarWeekFooter> </MTCalendar> </table>
请注意:计算出月历显示的代价相当高昂,所以如果你想要在网站上的每一页都摆上同样的月历,比较好的作法是在索引模版里建立一个月历,然后用服务器端的囊括功能或者是 PHP (或者是任何动态的网页服务器工具)来把这个档案囊括到你的每一页里。
有一些卷标是和引用功能系统有关的。
如果你在文章项目情境里 -- 举例来说,像是在引用清单模版里 -- 使用这个卷标,那么它就会列出所有送到该文章项目的引用通告。
如果是用在某个跟分类汇整相关联的模版中,那么这个卷标就会列出所有送到这个类别的引用通告。
如果适用在任何其它的情境中,那么这个卷标就会列出所有(除非你在卷标里也用了 lastn 属性 -- 详见后述)送到你的系统的引用通告。
除此之外,如果你³³³想指定列出某一个特定类别的通告的话,你也可以在这个卷标里用 category 属性来提供该类别的名称,像这样:
<MTPings category="Foo"> ... </MTPings>
同时你也可以在这个卷标里面使用 sort_order 属性和 lastn 属性,他们作用的情况会跟在其它 Movable Type 卷标里的一样。 sort_order 属性的值可以是 ascend
或者是 descend
;而 lastn 属性的职责应该是正整数,表示要列出最近 N 个引用通告。
举例来说,要在头版页列出在 Foo Bar
这个类别中最新的 15 个通告的话,你可以把下列这段加入你的主索引模版之中:
<MTPings category="Foo Bar" lastn="15"> <a href="<$MTPingURL$>"><$MTPingTitle$></a><br /> </MTPings>
format
属性和 language
属性。更多信息请见日期卷标格式小节。
举例来说:
<MTPingsSent> 网址: <$MTPingsSentURL$><br /> </MTPingsSent>
<MTPingsSent>
卷标里面使用。
下列这些卷标祇能用于你的搜寻模版里。
<$MTEntry*$>
卷标,因为搜寻结果所代表的项目会进入情境之中。你也可以用任何的 <$MTBlog*$>
卷标来存取特定文章项目结果被找到的网志数据。
举例来说:
<MTSearchResults> <MTBlogResultHeader> <h2><$MTBlogName$>内的结果</h2> </MTBlogResultHeader> <h3><a href="<$MTEntryLink$>#<$MTEntryID pad="1"$>"><$MTEntryTitle$></a></h3> <$MTEntryExcerpt$> <$MTEntryEditLink$><br /> <div class="posted"><$MTEntryDate$> 时,被发表在 <$MTBlogName$></div> </div> </MTSearchResults>
举例来说:
<MTNoSearchResults> <h2>已搜寻 "<$MTSearchString$>"</h2> <p>没有找到任何包含有 "<$MTSearchString$>" 的页面。</p> </MTNoSearchResults>
http://YOURDOMAIN.COM/PATH-TO/mt-search.cgi
或者是在新回响搜寻的情况下,有读者直接到
http://YOURDOMAIN.COM/PATH-TO/mt-search.cgi?Type=newcomments&help=1
正确使用这个卷标的方法可能是显示搜寻指引,或者是提供更进阶的搜寻表单。
例如像这样:
<MTNoSearch> <h2>指引</h2> <p>... 这里是一些搜寻指引 ...</p> </MTNoSearch>
这个容器卷标里面的内容祇有当搜寻的结果位于网志分组里的第一笔时才显示。要显示网志名称、甚至是加上连往该网志的主索引链接时,都很好用。
这些卷标并不适合放在上述任何一类里。
<MTElse>
卷标来让任何条件卷标支持『否则』条件。也就是说,通常适用于任何名称里含有 If
的卷标(例如像 <MTEntryIfExtended>
)。 <MTElse>
这个容器卷标里面的内容祇有当条件不被符合时才显示。这个 <MTElse>
容器应该被放进能够提供『否则』条件的条件卷标容器里。
以下是一个用法的范例:
<MTEntryIfExtended> 这个文章项目具有延伸的内容。 <MTElse> 这个文章项目没有延伸的内容。 </MTElse> </MTEntryIfExtended>
MTIfNonEmpty
卷标来检查另一个卷标的值是否为空字符串。你得在这个卷标的 tag
属性里提供其它卷标的名称才行。这是一个条件卷标,因此其内的结构祇有当情境为真(也就是检验 tag
的结果为非空字符串值)时,才会被显示出来。
举例来说:
<MTIfNonEmpty tag="MTEntryAuthorURL"> 作者的首页网址是 <$MTEntryAuthorURL$>. </MTIfNonEmpty>
MTInclude
卷标来把一个模版模块(请见前面提过的模版模块区段,这个区段位于模版小节里)或外部档案囊括进另一个模版里。 <MTInclude>
会取用下列的属性:
Header
的模版模块,再用 <MTInclude>
来囊括之:
<$MTInclude module="Header"$>
本机站台路径
目录下或本机汇整路径
目录下的单纯档名。举例来说,如果你的本机站台路径目录里,有个叫 foo.html 的档案,那么你可以像这样将其囊括进某个模版里:
<$MTInclude file="foo.html"$>
这个档案将在页面被重建的时候被囊括进你的模版;请注意这个作用不该和服务器端囊括弄混,因为后者会在每次网页服务器收到该页的需求时就把外部档案囊括进去。所以每当你变更了透过 <MTInclude>
卷标被囊括的外部档案后,请别忘记得要重建这些页面才有办法囊括这些被修订过的部分。
<MTLink>
卷标来自动产生索引模版或系统中某篇文章的网址。 <MTLink>
可以使用下列的属性:
最近更新于
的地方,例如:
本页面最后更新时间: <$MTDate format="%B %d, %Y %I:%M %p"$>.
这个卷标可以加上下列的属性:
1
,在这个情况下传回的页面会跟你的页面(假设你在站台网址设定了你的主页网址)很像。范例请见后。
10
。
举例来说,如果你想要列出查询 movable type
的最前 5 笔搜寻结果:
<MTGoogleSearch query="movable type" results="5"> <a href="<$MTGoogleSearchResult property="URL"$>"><$MTGoogleSearchResult property="title"$></a><br /> </MTGoogleSearch>
或者是列出跟你的页面相似的其它页面清单:
<MTGoogleSearch related="1"> <a href="<$MTGoogleSearchResult property="URL"$>"><$MTGoogleSearchResult property="title"$></a><br /> </MTGoogleSearch>
请注意 query 、 related 、 title 以及 excerpt 这些属性通通具有完全的排他性。
同时也请注意,如果你在你的单篇汇整模版里使用 Google 搜寻卷标的话,搜寻结果清单也会在任何你储存文章项目的时候被产生;而这会拖慢重建的进度;甚至当你发表的速度较快、或者当你的站台总是有大量回响时,你可能很快就会用完 Google 所允许的每日查询次数上限。
注意:使用这个卷标前你得先取得一把 Google API 金钥,并且将之贴进你的网志组态里;同时你还得先安装 SOAP::Lite 模块和 LWP::UserAgent 模块(你可以执行 mt-check.cgi 来看看你是否已经安装过这些模块了)。
<MTGoogleSearch>
卷标)。
这个卷标祇有一个额外的 property 属性,用来指定要显示的搜寻结果字段(像是:标题、网址、摘要等等)。预设的 property 是 title
。
有效的 property 值包括了: summary
、 URL
、 snippet
和 title
。
name
属性来设定变数名称,然后用 value
属性来设定变数值。然后你就可以用 <MTGetVar>
卷标(如后述)来取得这个变数的值。
name
属性来指定。举例来说,你可以在外部模版中设定变数 foo
的值:
<MTSetVar name="foo" value="bar">
然后在某个被囊括的模版模块里,取得这个变数的值:
<MTGetVar name="foo">
CGIPath
列的值(在安装过程中所设定的;详见安装指引)代换掉。 MTCGIPath
可以让连往 Movable Type CGI 脚本 -- 像是 mt-comments.cgi 和 mt-add-notify.cgi -- 这件事变得相当简单;你不再需要老是在你的模版里使用这些 CGI 脚本的网址,而祇需要用这个卷标就可以了。举例来说,当你要建立发表回响的表单时:
<form method="post" action="<$MTCGIPath$><$MTCommentScript$>">
跳出已上传影像模版
。
跳出已上传影像模版
。
跳出已上传影像模版
。
回响出错模版
里,它会被取代成送出回响过程中所发生的错误讯息(例如像是无效或缺少了的E-mail 地址)。
2.0
。
iso-8859-1
(译注:而这将导致中文显示的不正确。所以请务必在 mt.cfg 里将 PublishCharset 设成 UTF-8
)。
全域卷标属性可以被用于任何变数代换卷标(会被代换成某个值的卷标 -- 这种卷标的对比就是会『容纳』其它组成元素和卷标的容器卷标)。然而这并不意味著当他们被使用于任何卷标里,都一定要有意义;实际上使用者得自己判断特定的卷标属性是否在实做上有意义。
全域属性的用法就跟卷标专一属性的用法一样:在卷标里使用 name="value"
配对。例如:
<$MTEntryExcerpt encode_html="1"$>
这个卷标会被取代成以 HTML 编码过的文摘。
以下是全域卷标属性的清单:
,
) 来分隔过滤器名称。如果你指定了多重过滤器的话,它们将会按照你所列出的顺序先后被执行。举例来说,如果你定义了一个短名称叫 wiki 、会执行 Text::WikiFormat 这个 CPAN 模块的过滤器的话,你就可以这么做:
<$MTEntryTitle filters="wiki"$>
来把 ''这是一个标题''
这样的标题转换成 <em>这是一个标题</em>
。
1
的时候,卷标的值就会编码成 HTML 。举例来说,如果没有这个属性的时候卷标的值为 Foo & Bar -> Baz
,那么编码成 HTML 的版本就会变成 Foo & Bar -> Baz
。
使用范例:
<$MTEntryExcerpt encode_html="1"$>
1
的时候,就把该项目中任何 XML 里需要加以编码的字符予以编码。这些字符包括有: &
、
、 <
和 >
。
举例来说,如果没有这个属性的时候卷标的值为 Foo & Bar -> Baz
,那么编码成 XML 的版本就会变成 Foo & Bar -> Baz
。
使用范例(于 RSS 模版中):
<item> <title><$MTEntryTitle encode_xml="1"$></title>
注意:这个属性跟 encode_html 间的差异在于后者会把更多特殊字符编码成 HTML 项目;如果你安装了 HTML::Entities 模块,那么你就不需要在 mt.cfg 里开启 NoHTMLEntities 选项。
1
的时候,就把卷标的值按照 Javascript 字符串值的用法编码成合适的格式。举例来说,如果没有这个属性的时候卷标的值为 Foo "Bar" Baz's 1/2 Quux
,那么编码后的版本就会变成 Foo \"Bar\" Baz\'s 1\/2 Quux
。
使用范例:
<script type="text/javascript"> var str = '<$MTEntryTitle encode_js="1"$>'; </script>
q
(single-quote) 、 qq
(double-quote) 或 heredoc
(here document -- 请注意此处的 here
对于一个 here document 来说仍然具有功效)。
q
的使用范例:
<?php $str = '<$MTEntryTitle encode_php="q"$>' ?>
heredoc
的使用范例:
<?php $str = <<<HERE <$MTEntryBody encode_php="heredoc"$> HERE; ?>
foo bar
这个字符串就会被转换成 foo%20bar
。
使用范例:
<a href="/search?q=<$MTEntryTitle encode_url="1"$>">搜寻</a>
(感谢 Scott Andrew LePera 提供了此范例的原始版本。)
1
的时候,把所有在这个卷标值里的 HTML 项目加以译码。举例来说,如果没有这个属性的时候卷标的值为 foo<br>
,那么 HTML 项目被译码后的版本就会变成 foo<br>
。
用法范例:
<$MTEntryTitle decode_html="1"$>
1
的时候,把所有在这个卷标值里的 XML 项目加以译码。举例来说,如果没有这个属性的时候卷标的值为 foo<br>
,那么 XML 项目被译码后的版本就会变成 foo<br />
。
用法范例:
<$MTEntryTitle decode_xml="1"$>
1
的时候,就从卷标值里删掉所有的 HTML 卷标。举例来说,如果没有这个属性的时候卷标的值为 Foo<br /> Bar
,那么没有 HTML 卷标的版本就会变成 Foo Bar
。
用法范例:
<$MTEntryTitle remove_html="1"$>
1
的时候,就把这个卷标值给『变成目录』。这表示这个卷标的值会按照档案或目录名称的用法,转换成适当的样子:首先这个值会全部被转换成小写,接著删去所有的 HTML 卷标及项目,奇怪的字符接著也被删去(所谓奇怪的字符指的就是那些不包含在:字母数字字符、底线 (_
) 和空白),然后再把空白转换成底线 (_
) 。
dirify 同时也会把一些高-ASCII 字符(像是重音标记字符)转换成相对应的低-ASCII 字符;这表示像 crudité
这样的东西将会被转换成 crudite
。
举例来说,如果没有这个属性的时候卷标的值为 Foo "Baz" is<br /> Bar!
,那么变成目录后的版本就会是 foo_baz_is_bar
。
用法范例:
<$MTArchiveCategory dirify="1"$>
用法范例:
<$MTEntryTitle upper_case="1"$>
用法范例:
<$MTArchiveDate format="%B" lower_case="1"$>
用法范例:
<$MTEntryTitle trim_to="15"$>
上面这个卷标将祇会显示出文章项目标题的前 15
个字符。
用法范例:
<$MTCalendarDay space_pad="3"$>
上面这个卷标会在 3
这个值前面插入空白,使其变成『 3
』。
用法范例:
<$MTCalendarDay zero_pad="5"$>
上面这个卷标会在 8
这个值前面插入零,使其变成 00008
。
<$MTCalendarDay sprintf="%05s"$>
1
的话,预设的消毒规格 -- 不论是该网志独有的或是整体设定里的 -- 就会被采行。如果这个属性的值被设定成 0
的话,这个卷标的消毒功能就会被关闭。如果这个属性的值是任何其它的东西的话,也会被当成是要采行消毒规格。
用法范例
<$MTEntryBody sanitize="a href"$>
这样将会把文章中所有的 HTML 卷标清乾净,祇留下 <a>
(而且祇会留著带有 href
属性的)。
Movable Type 用了标准的 strftime
格式字符串来描述日期和时间。(然而,请注意 strftime
本身并不真的是拿来施用格式的。)在任何的日期卷标里,你都应该可以用 format
属性来指定格式字符串,就像这样:
<$MTDate format="%B %e, %Y %I:%M %p"$>
上面这个格式正是英文日期的预设格式,会做出像是这样子的日期:
September 20, 2001 11:44 PM
你可以在网志组态的显示日期的语言
里面选取不同的语言,这个语言会被套用在周里的名称、月份的名称和上午/下午的说明。预设被使用的语言是英文
。
你也可以用 language
属性来指定语言,覆写掉预设的设定;这祇会套用在你正在制订格式的那个日期字符串上。以下是可用的语言卷标清单: cz
、 dk
、 nl
、 en
、 fr
、 de
、 is
、 jp
、 it
、 no
、 pl
、 pt
、 si
、 es
、 fi
、 se
。
以下则是格式说明清单。
Thu
。
Thursday
。
Sep
。
September
。
0
。例如: 09
。
9
。
0
。例如: 16
。
0
。例如: 04
。
0
。例如: 056
。
9
。
4
。
0
。例如: 09
。
0
。例如: 02
。
AM
或 PM
。
0
,例如: 04
。
September 6, 2002
。
4:31 PM
。
0
,例如: 01
。
2001
。
注意:自 Movable Type 2.0 版起,就不再提供 %Z
这个格式组件了;如果你需要用到时区的话,请参照 <$MTBlogTimezone$>
卷标。