【问题标题】:Formatting a Semantic MediaWiki query resulttable template with cell newlines使用单元格换行符格式化 Semantic MediaWiki 查询结果表模板
【发布时间】:2014-08-30 09:47:43
【问题描述】:

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

如果我使用标准 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}}} 之后添加一些内容,例如换行符,它会添加到表格行的最后一个模型之后,而不是我想要的每个模型之后。

【问题讨论】:

    标签: templates mediawiki tablelayout semantic-mediawiki


    【解决方案1】:

    使用 Extension:Arrays 根据需要格式化逗号分隔的输出:

    <includeonly><!--
    
           store arrays
    
     -->{{#arraydefine:models|{{{3}}}}}<!--
     -->{{#arraydefine:addons|{{{4}}}}}<!--
    
           print row
    
     -->
     | {{{1}}} || {{{2}}} || {{#arrayprint:models|<br/>}} || {{#arrayprint:addons|, }}
     |-
    </includeonly>
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多