用于布局的窗口小部件标记
创建窗口小部件的基本
<b:widget>标记在用于布局的页面元素标记中介绍。如果您只想使用"页面元素"标签完成所有工作,那么了解这里的内容就已经足够了。不过,如果您想要更加精细的控制,并且在"编辑 HTML"页的"扩展窗口小部件模板"模式下工作,本文会告诉您可在窗口小部件中放入哪些元素。首先要添加结束标记。因此:
<b:widget [...属性...]/>
就变成:<b:widget [...属性...]>
</b:widget>现在,让我们来讨论可以在标记之间放置哪些元素。
包含
窗口小部件的内容包含在"includable"段中,其格式如下:
<b:includable id='main' var='thiswidget'>
[在此插入您想要的任何内容]
</b:includable>属性如下:
- ID:(必需)由字母和数字组成且独一无二的标识符。
- var:(可选)由字母和数字组成的标识符,用于引用此段内的数据。(请参阅下面的"数据"部分。)
每个窗口小部件都应有一个
id='main'的可包含内容。这样通常会包含此窗口小部件可显示的大多数或全部内容,而这些内容大多是您所需要的。如果您有多个具有不同 ID 的可包含项,则系统无法自动显示这些可包含项。不过,如果让其中一个可包含项包含
id='new',则可在主包含项中以<b:include name='new' />格式引用该项,而该项也会如此显示。
b:include标记的属性如下:
- name:(必需)由字母和数字组成的标识符。应与同一窗口小部件中现有
b:includable的 ID 匹配。- data:(可选)要传递到 includable 段的表达式或数据片断。在 includable 段中,这也是
var属性的值。下例演示如何使用
b:includable和b:include。"循环"和"数据"将在本文的稍后部分介绍。此处需要了解的主要内容是"main"段如何将"post"段包含在内。它将自己命名为"i"的帖子传递下去,而包含在内的段则引用它作为变量"p"的值,然后输出标题。
<b:includable id='main'>
<b:loop var='i' values='posts'>
<b:include name='post' data='i'/>
</b:loop>
</b:includable>
<b:includable id='post' var='p'>
Title: <data:p.title/>
</b:includable>如果想在不同的位置重复使用一段代码,"包含"是最有用的方法。您可以只写这些代码一次,将其置入
b:includable中,然后在需要时使用b:include。如果您不需要这样做,那么可以只使用单个主包含项,而忽略其他部分。(请注意,系统会自动包含 main includable 段,因此没有必要添加<b:include name='main'/>。)数据
事实证明,
data:标记是最重要的标记之一,因为它才是呈现所有实际内容的途径。此标记的示例如下:<data:title/>
or<data:photo.url/>第一个示例最简单,且适用于大多数的窗口小部件,因为大多数窗口小部件都有标题。此属性只需要输出窗口小部件的标题即可。第二个示例显示较复杂的变量,我们从中选取了一个特殊组件。对个人资料窗口小部件来说,
photo可包含url、height和width等组件。使用符号 (".") 表示我们需要此照片的网址,而不是其他内容的网址。使用
data:标记,您可以访问很多数据,且此标记会因您所使用的窗口小部件不同而异。我们提供了一份完整的列表帮助您查找需要的数据。循环
b:loop标记可让您多次重复一段内容。如果要输出指定页面帖子列表中的每个帖子、评论列表中的每条评论或标签列表中的每个标签等项目,这是最常用的标记。使用循环的一般格式为:
<b:loop var='identifier' values='set-of-data'>
[此处为重复的内容]
</b:loop>"identifier"部分可以是任意选择的名称,每次执行循环时,都会使用列表中每个新项目的标识符。常见的做法就是将其简称为"i"。您为值指定的一组数据可以是 数据标记文章项目列表中的任何一段数据。例如,在博客帖子窗口小部件中,
posts就是一个列表。下列代码循环执行到每个帖子,输出每个帖子的标题,标题两侧为标题标记。
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>请注意"i"如何依次取用每个帖子的值,使您能从每个帖子中取得标题。
条件循环
您可以使用
b:if和b:else在某些位置显示特定内容,而在其他位置不显示。一般格式如下:
<b:if cond='condition'>
[条件为"真"时显示的内容]
<b:else/>
[条件为"假"时显示的内容]
</b:if>
b:else标记为可选。如果没有此标记,输出结果可以是b:if段列出的内容或空白。但是,无论哪种情况,都需要添加结束标记</b:if>。关于"条件",您可以置入任何为真或假的内容。某些数据标记本身就是真或假值,如帖子上的
allowComments。对于其他数据段,您可以通过与特定的值进行比较来得出真或假结果。请见下例:
<b:if cond='data:post.showBacklinks'>如果当前帖子设置为显示反向链接则为真。<b:if cond='data:blog.pageType == "item"'>如果当前页为项目页(帖子页)则为真。<b:if cond='data:displayname != "Fred"'>如果不是张三的显示名称则为真。<b:if cond='data:post.numComments > 1'>如果当前帖子有多条评论则为真。
0 评论:
发表评论