使用单元格换行格式化Semantic MediaWiki查询结果表模板

时间:2014-08-30 09:47:43

标签: templates mediawiki tablelayout semantic-mediawiki

我需要一个语义查询结果表模板,我可以在同一个表中为某些列和逗号分隔的列提供换行符分隔的单元格结果。

例如,如果我使用标准 format = broadtable ,则所有列的表格单元格中的换行符将分隔结果:

{{#ask:[[Category:Items]]
|?Description
|?Models
|?Addons
|format=broadtable
}}

如果我创建了一个模板,我能够完成的只是一个以逗号分隔的结果:

<includeonly>
{| class="wikitable sortable"
 ! style="width: 30%;" | Page
 !! style="width: 30%;" | Description
 !! style="width: 20%;" | Models
 !! style="width: 20%;" | Addons
 |-
</includeonly>

{{#ask:[[Category:Items]]
|?Description
|?Models
|?Addons
|format=template
|template=QResTemplate
}}

<includeonly>
|}
</includeonly>

这是QResTemplate:

<includeonly>
 | {{{1}}} || {{{2}}} || {{{3}}} || {{{4}}}
 |-
</includeonly>

每个项目都有多个模型和插件,因此表格中的第3列和第4列我需要其中一个以逗号分隔,而另一个是新行分隔的。

如果我在{{{3}}}之后添加一些内容,就像换行符一样,它会在表格行的最后一个模型之后添加,而不是在我想要的每个模型之后添加。

1 个答案:

答案 0 :(得分:2)

使用Extension:Arrays格式化逗号分隔输出:

<includeonly><!--

       store arrays

 -->{{#arraydefine:models|{{{3}}}}}<!--
 -->{{#arraydefine:addons|{{{4}}}}}<!--

       print row

 -->
 | {arraydefine} || {{{2}}} || {{#arrayprint:models|<br/>}} || {{#arrayprint:addons|, }}
 |-
</includeonly>

首先将两个列表存储为数组。 #arrayprint假设您的列表以逗号分隔,除非您指定其他内容。然后使用sep=¤再次打印数组,但这次您可以决定如何分离这些值。

如果您不能使用逗号(例如,因为某些值包含逗号,您可以在问询查询中添加例如{{#arraydefine:models|{{{3}}}|¤}},然后执行{{1}}告诉arraydefine您正在使用不同的分离器。