Template format/zh-hans | |
---|---|
利用某个所指定的模板对结果进行格式编排和显示 | |
更多信息 | |
提供者: | 语义MediaWiki |
添加版本: | 0.7 |
移除版本: | 依然支持 |
需求: | 无 |
格式名称: | template |
启用?表明安装相应扩展时是否默认启用该结果格式。 | 是"是" is not recognized as a Boolean (true/false) value. |
作者: | Markus Krötzsch |
分类: | misc |
目录 | |
模板格式template用来借助于模板对结果进行格式编排。
参数[edit]
参数 | 别名 | 类型 | 默认 | 说明 |
---|---|---|---|---|
propsep | - | 文本 | , | 结果记录的属性之间的分隔符 |
valuesep | - | 文本 | , | 用于结果属性值之间的分隔符 |
template | - | 文本 | 空白 | 输出显示模板的名称 |
named args | namedargs | 布尔值 | no | 请指定传递给该模板的变量 |
userparam | - | 文本 | 空白 | 使用模板时,向模板调用所传递的取值 |
class | - | 文本 | 空白 | 为列表设置的额外CSS类 |
introtemplate | - | 文本 | 空白 | 用于在查询结果前显示内容的模板的名称 |
outrotemplate | - | 文本 | 空白 | 用于在查询结果后显示内容的模板的名称 |
sep | - | 文本 | , | 结果之间的分隔符 |
利用模板进行自定义格式编排[edit]
一些结果格式支持利用维基模板来全面控制嵌入式查询的显示。 这种方式适用于Archive:Template format/zh-hans、列表格式、帮助:有序列表格式以及Help:Ul format/zh-hans。如果指定了某个模板,就会采用该模板对所有的结果«行»进行格式编排。
相应模板的名称(不带开头的前缀«Template:»)是在参数template当中提供的,因而这种查询具有的一般形式为:
{{#ask: … | format=template/list/ol/ul | template=''templatename'' }}
对于嵌入式查询之中的每个结果,SMW都会调用所指定的模板;其中,结果和打印输出取值作为经过编号的模板参数来使用,从而一个在被编排为一张表格时会显示三列的查询,将会设置三个模板参数。 继而,可采取通常的方式,写出{{{1}}}、{{{2}}}等等,从而在该模板当中使用这些取值。 每个参数分别指的是嵌入式查询将会为所选择的每个页面而显示的,结果之中的一个"字段"或者列。 通常,查询所显示的第一个字段是页面标题(参见这里), 因此,参数{{{1}}}就是页面标题,而{{{2}}}, {{{3}}}, ...则是查询所显示的其余属性。下文将列举许多示例。
这种模板功能为查询的显示提供了更大的灵活性,包括:
- 更改输出的显示顺序,或者省略或重复输出;
- 根据查询结果来显示图片;
- 为属性取值创建链接;
- 按表格当中的列,利用CSS样式来改变字体大小、对齐方式以及背景颜色等等。
如果真的采用某个模板来调整链接的外观,也许您会需要设置参数 | link=none | ,来禁用SMW对文章名称的自动链接功能。 如显示信息所述,通过为某些或全部的打印输出选择普通输出格式,亦可实现类似的效果。 这样,对于任何您希望其作为链接的内容,您的模板就必须将其括在[[ ]]当中。
要理解如何为某一查询的格式编排而创建模板,首先查看一下带有参数format=table的查询,会有所用处。 例如,那些指的是单独一个页面的查询(就像配合使用参数#show那样)将仅仅隐藏该结果页面的页面标题, 从而,参数{{{1}}}指的是第一个打印输出语句。利用打印输出语句?,或者为mainlabel指定任何取值,都将改变这种情况。
下列这些示例全都采用的是Template:Query output demo (zh-hans),其基本上含有如下维基文本:
{{{2}}} people squeeze into the {{{3}}} of {{{1}}}.
下列这些查询演示的就是该模板的效果:
{{#ask: [[Category:City]] [[Area::+]] [[Population::+]] | ?Population=居民数量 | ?Area#km²=面积(km²) | format=template | template=Query output demo (zh-hans) | limit=3 }}
实际运行结果: 783,364人拥挤在219.00 km²84.56 sqmi <br />的Amsterdam。
3,520,061人拥挤在891.85 km²344.34 sqmi <br />的Berlin。
1,080,394人拥挤在405.02 km²156.38 sqmi <br />的Cologne。
在上面这个例子中,可以看到模板如何忽略了查询之中所指定的«面积(km²)»之类任何标题标签。 然而,模板所显示的这些取值的确采用的是?Area#km²=面积(km²)当中所指定的计量单位, 并且将采取类似的方式遵循所提供的全部显示格式(参见显示信息)。
如下是一个按人口数量排序的类似查询,并且采用format=ol来生成编号列表。
{{#ask: [[Category:City]] [[Area::+]] [[Population::+]] | ?Population | ?Area#km² | format=ol | template=Query output demo (zh-hans) | limit=3 | sort=population | order=desc }}
实际运行结果:
- 7,825,200人拥挤在1,706.80 km²659.00 sqmi <br />的London。
- 4,575,532人拥挤在2,058.00 km²794.59 sqmi <br />的Sydney。
- 3,520,061人拥挤在891.85 km²344.34 sqmi <br />的Berlin。
如果我们直接指定单个页面的话,查询结果之中通常并不包括该页面,因此要在下列查询之中重复利用同一模板的话,我们必须通过添加|?来告诉该查询,将此页面的标题显示为第一列:
{{#ask: [[Berlin]] | ? | ?Population | ?Area#km² | format=template | template=Query output demo (zh-hans) }}
实际运行结果: 3,520,061人拥挤在891.85 km²344.34 sqmi <br />的Berlin。
利用#show亦可达到同样的效果,尽管这样的方式可能并不是这项功能最为典型的用法:
{{#show: Berlin | ? | ?Population | ?Area#km² | format=template | template=Query output demo (zh-hans) }}
实际运行结果: 3,520,061人拥挤在891.85 km²344.34 sqmi <br />的Berlin。
模板之中亦可包含其他的解析器函数,如条件,甚至是查询。 可在下列页面上找到关于复杂查询格式的例子(这些属于外部链接,可能会发生变更):
- semanticweb.org主页上所显示的即将发生的事件:该页面的事件一节当中显示的仅仅是某些重大事件(即将举办的活动)。每个此类事件均采用一个模板来进行格式编排,而该模板又利用另一个嵌入式查询来找出特定事件的子事件(如同地协作的研讨会、辅导课等等)。
- korrekt.org上的出版物列表:该页面上的所有列表都是利用模板化查询(templated queries)来创建的。根据一项结果相应的出版物类型以及所提供的数据,利用条件(#if和#ifeq)来改变该结果的格式(主要出版物的标题采用加粗字体)。
用户参数userparam的使用方法[edit]
可以向查询当中添加单独一个额外的参数。 为此,应当添加的是userparam=<value>。 在模板之中,在userparam=后面所提供的那个取值将作为变量{{{userparam}}}加以提供。 这为模板提供了额外的可复用性: 基于该参数,可以创建单独一个模板,并且可从不同的查询当中对其加以调用,而又产生出不同的结果。 在关于人口数量的示例当中,您可以决定采用不同的动词,而不仅仅是"拥挤",比如"适应"、"居住"、"位于"等等之类的动词:
{{#ask: [[Category:City]] [[Area::+]] [[Population::+]] | ?Population=Inhabitants | ?Area#km²=Size in km² | format=template | template=Query output demo (zh-hans) | limit=3 | userparam=将自己的家安置 }}
实际运行结果: 783,364人拥挤在219.00 km²84.56 sqmi <br />的Amsterdam。
3,520,061人拥挤在891.85 km²344.34 sqmi <br />的Berlin。
1,080,394人拥挤在405.02 km²156.38 sqmi <br />的Cologne。
显示指向进一步结果的链接[edit]
当使用模板参数'template'的时候,只有在'format=template'的情况下,才会看到指向更多结果的'further results...'链接。也就是说,比如,看来它并不兼容'format=ol'。
如果准备采用您的模板来创建表格式输出,可能需要利用专门的模板起始与结尾参数(introtemplate and outrotemplate parameters)来确保指向更多结果的链接'further results...'有效地发挥作用。
示例查询[edit]
{{#ask:[[Category:City]][[Has image::+]] |?Has image |format=template |headers=show |link=none |template=Demo/Template/City/Image |introtemplate=Demo/Template/City/Image/Intro |outrotemplate=Demo/Template/City/Image/Outro |offset=0 |limit=20 }}
上面这个查询将产生一张表格输出,其中含有所选城市的图片。