Archive:Template format/zh-hans

From semantic-mediawiki.org
< Archive:Template format(Redirected from Archive:Template format/zh-hans)
Template formatArchive:Template format/zh-hans
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

... further results

在上面这个例子中,可以看到模板如何忽略了查询之中所指定的«面积(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
}}

实际运行结果:

  1. 7,825,200人拥挤在1,706.80 km²659.00 sqmi <br />London
  2. 4,575,532人拥挤在2,058.00 km²794.59 sqmi <br />Sydney
  3. 3,520,061人拥挤在891.85 km²344.34 sqmi <br />Berlin

... further results

如果我们直接指定单个页面的话,查询结果之中通常并不包括该页面,因此要在下列查询之中重复利用同一模板的话,我们必须通过添加|?来告诉该查询,将此页面的标题显示为第一列:

{{#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

... further results

显示指向进一步结果的链接[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
}}

上面这个查询将产生一张表格输出,其中含有所选城市的图片。


本文档页面适用于SMW从0.7版到最新版本的所有版本。
      其他语言: defr