Можно ли создать таблицу mediawiki, в которой столбцы заполнены несколькими шаблонами? - PullRequest
1 голос
/ 02 июля 2010

Викимедиа объясняет, как можно создать таблицу на основе нескольких шаблонов, где каждая строка формируется из одного шаблона.

Есть ли в любом случае сделать то же самое для столбцов? Звучит просто, но я не мог заставить его работать. Вместо этого на моей странице отображалось несколько таблиц вместо нескольких столбцов.

Вот код:
Строка страницы

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

3 голосов
/ 20 февраля 2013

Единственный известный мне способ, кроме создания виртуальной таблицы с плавающими <div> s, - это использование 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 голос
/ 06 июля 2010

Я думаю, что это невозможно. Я немного подумал об этом и понятия не имею, как это сделать.

Может быть, это своего рода вложенные шаблоны, которые меняют порядок столбцов и строк. Кажется очень сложным, и я не уверен, что это теоретически возможно.

0 голосов
/ 17 апреля 2012

вы можете получить столбцы, заполненные шаблонами, используя DIV, но вам придется пересоздать и изменить размер каждой ячейки внутри каждого элемента div вручную

...