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}}
列模板: 不知道这应该如何运作。
答案 0 :(得分:3)
除了创建具有浮动<div>
的虚拟表格之外,我知道的唯一方法是使用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扩展的表生成功能做一些聪明的事情,或者安装一个允许您创建循环的扩展,但我认为您可能会被卡住,如上所述手动创建每一行。
作为最后一点,因为这是内容而不是格式化,我建议您将列页放在主空间而不是模板命名空间中。事实上,这是子页面非常适合的事情。
答案 1 :(得分:1)
我认为这是不可能的。我想了一下,我不知道该怎么做。
可能是某种嵌套模板重新排列列和行的顺序。看起来非常困难,我不确定它在理论上是否可行。
答案 2 :(得分:-1)
您可以使用DIV获取由模板填充的列,但您必须手动创建并重新调整每个div中的每个单元格