代码之家  ›  专栏  ›  技术社区  ›  Reinstate Monica - Goodbye SE

是否可以创建一个mediawiki表,其中的列由多个模板填充?

  •  1
  • Reinstate Monica - Goodbye SE  · 技术社区  · 14 年前

    Wikimedia explains how you can create a table 基于多个模板,其中每一行由单个模板构成。

    下面是一些代码:
    行页面

    {|class="wikitable sortable" style="font-size:85%"
    |+ table name
    ! Title 1
    ! Title 2
    ! Title 3
    |-
    {{R1}}
    {{R2}}
    {{R3}}
    |}
    

    | Row 1, Column 1
    | Row 1, Column 2
    | Row 1, Column 3
    |-
    

    列页

    {{C1}}{{C2}}{{C3}}
    

    3 回复  |  直到 7 年前
        1
  •  1
  •   Adrian Archer    14 年前

    可能是某种嵌套模板,可以重新排列列和行的顺序。似乎很难,而且我不确定理论上是否可行。

        2
  •  3
  •   Michael Chidester    11 年前

    <div> s、 正在使用 Labeled Section Transclusion (或其等效物) {{#dpl}} 如果你有 Extension:DynamicPageList <section/>

    {|class="wikitable sortable" style="font-size:85%"
    |+ table name
    ! Title 1
    ! Title 2
    ! Title 3
    
    |- valign="top
    | {{#lst:col1|row1}}
    | {{#lst:col2|row1}}
    | {{#lst:col3|row1}}
    
    |- valign="top
    | {{#lst:col1|row2}}
    | {{#lst:col2|row2}}
    | {{#lst:col3|row2}}
    
    |- valign="top
    | {{#lst:col1|row3}}
    | {{#lst:col2|row3}}
    | {{#lst:col3|row3}}
    ...
    |}
    

    这种解决方案缺乏像抛出行那样抛出列的简单性,但遗憾的是,HTML并不是为创建真正的基于列的表而设计的。但是,使用此布局,至少每个列中的所有信息都存储在同一页上,您可以更轻松地对其进行编辑( {{col1}} , {{col2}}

    如果您计划经常这样做,您可以通过创建一个填充每一行的模板来进一步简化这一点,这样您只需要指定行号,如下所示:(假设您的列总是作为文章的子页放置在它们将出现的位置)

    template:col-based table row
    {{!}}- valign="top"
    {{!}} {{#lst: {{PAGENAME}}/col1 | row{{{1|}}} }}
    {{!}} {{#lst: {{PAGENAME}}/col2 | row{{{1|}}} }}
    {{!}} {{#lst: {{PAGENAME}}/col3 | row{{{1|}}} }}
    

    {{col-based table row|1}}
    {{col-based table row|2}}
    {{col-based table row|3}}
    ...
    

    现在,如果您想自动生成这些行,直到耗尽模板(或者换句话说,让表决定要创建多少行,而不需要手动设置它们),我认为我无法帮助您。也许您可以使用DPL扩展的表生成函数做一些聪明的事情,或者安装一个允许您创建循环的扩展,但是我认为您可能会像上面所描述的那样手动创建每一行。

    最后,由于这是内容而不是格式,我建议您将列页面放在mainspace中,而不是模板名称空间中。事实上,这是子页面非常适合做的事情。

        3
  •  -1
  •   Jason Coyne    12 年前