WikiDer > Справка: Условные таблицы - Википедия

Help:Conditional tables - Wikipedia

ПарсерФункции позволяют условное отображение строк, столбцов или ячеек таблицы (и вообще всего остального). Но у функций Parser есть некоторые ограничения.

Основное использование

В следующем примере показано базовое использование #если который доступен из расширения ПарсерФункции:

 {{#если:{{{variable_foo |}}} | foo имеет значение '''{{{variable_foo}}}''' | foo - это ''пустой''}}

Здесь, {{{variable_foo}}} проверяется, определено ли оно с непустым значением. В таблице ниже показан результат вызова шаблона (мы будем называть шаблон {{Условные таблицы / пример 1}}) с разными значениями для {{{variable_foo}}}:

Вызов шаблонаРезультат
{{Условные таблицы / пример 1}}foo это пустой
{{Условные таблицы / пример 1| variable_foo =}}foo это пустой
{{Условные таблицы / пример 1| переменная_фу = значение}}foo установлен на ценить

Позиционные параметры {{{1}}} и т.д. работают как именованные параметры:

 {{#если:{{{1|}}} | 1-й параметр '''{{{1}}}''' | 1-й параметр ''пустой''}}
Вызов шаблонаРезультат
{{Условные таблицы / пример 1б|| бар}}1-й параметр пустой
{{Условные таблицы / пример 1б| foo | bar}}1-й параметр фу
{{Условные таблицы / пример 1б| [[m: | не пусто]]}}1-й параметр не пустой
{{Условные таблицы / пример 1б| bad = idea}}1-й параметр пустой
{{Условные таблицы / пример 1б| 1 = нормально = да}}1-й параметр ок = да

Обратите внимание, как символ трубы (вертикальная полоса) в ссылке работает как есть, в таблицах Wiki это не так просто, см. ниже.

Полное скрытие строк

Также можно скрыть строки данных в таблице, однако есть проблемы, о которых вам следует знать.

Неправильное использование

к несчастью #если и синтаксис таблиц MediaWiki не работают вместе. Например, следующее, {{Условные таблицы / пример 2}} является инвалид и работать не будет:

{| class = "infobox" {{# if: {{{variable_foo |}}} || -! Фу | {{{variable_foo}}}}} | -! Бар | {{{variable_bar}}} |}

В таблице ниже показан эффект, когда {{Условные таблицы / пример 2}} используется:

Вызов шаблонаРезультат
{{Условные таблицы / пример 2}}
Фу
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2| variable_foo =}}
Фу
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2| variable_foo = | variable_bar = bar}}
Фу
Барбар
{{Условные таблицы / пример 2| переменная_фу = значение}}
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2| variable_foo = значение | variable_bar = bar}}
Барбар

Проблема заключается в использовании символа вертикальной черты (|). Этот символ в вызовах шаблонов используется для разделения параметров и поэтому недопустим.

Правильное использование

План А

Один из методов скрытия строк в таблицах (или других структур в таблицах) напрямую использует HTML.[1] HTML более сложен, чем синтаксис таблиц MediaWiki, но не намного. В общем, есть лишь несколько HTML-тегов, о которых вам нужно знать.

  • <tr> - этот тег создает новую строку (аналогично |- в синтаксисе таблицы MediaWiki)
  • <th> - этот тег создает новую ячейку заголовка в строке (аналогично ! в синтаксисе таблицы MediaWiki)
  • <td> - этот тег создает новую ячейку в строке (аналогично | в синтаксисе таблицы MediaWiki)
  • <caption> - этот тег создает заголовок (аналогично |+ в синтаксисе таблицы MediaWiki)

Работая с приведенным выше примером недопустимого шаблона, переключившись на HTML, мы получим следующий код:

{| class = "infobox" {{# if: {{{variable_foo |}}} |<tr><th>Фу</th><тд>{{{variable_foo}}}</тд></tr>}} | -! Бар | {{{variable_bar}}} |}

Код выше находится в {{Условные таблицы / пример 2а}}. Как и прежде, в таблице ниже показан эффект при его использовании:

Вызов шаблонаРезультат
{{Условные таблицы / пример 2а}}
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2а| variable_foo =}}
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2а| variable_foo = | variable_bar = bar}}
Барбар
{{Условные таблицы / пример 2а| переменная_фу = значение}}
Фуценить
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2а| variable_foo = значение | variable_bar = bar}}
Фуценить
Барбар

План B

Как отмечалось выше, единственная проблема - это вертикальная полоса илисимвол трубы в шаблоне. Часто бывает достаточно заменить проблемные символы числовыми ссылками, например "{" к &#123;, "|" к &#124;, и "}" пользователем &#125;.Но для таблиц Wiki настоящий "|" требуется разделитель - использование &#124; не работает как разделитель.

Простая уловка позволяет защитить "|" в значениях параметров шаблона, все еще поступая как реальные "|" разделитель в таблице Wiki, см. Волшебное слово {{!}}. Обратите внимание, что"!" (восклицательный знак) не имеет проблем с шаблонами, это другой разделитель, используемый в таблицах Wiki. Вот код для плана B:

{| class = "infobox" {{# if: {{{foo |}}} | {{!}} -! Фу {{!}} {{{Foo}}}}} | -! Бар | {{{bar}}} |}

Приведенный выше код находится в {{Условные таблицы / пример 2б}}. Как и прежде, в таблице ниже показан эффект при его использовании:

Вызов шаблонаРезультат
{{Условные таблицы / пример 2б| bar = nobar}}
Барnobar
{{Условные таблицы / пример 2б| foo = | bar = vbar}}
Барvbar
{{Условные таблицы / пример 2б| foo = значение}}
Фуценить
Бар{{{бар}}}
{{Условные таблицы / пример 2б| foo = значение | bar = vbar}}
Фуценить
Барvbar

План C

Возможно, самый простой вариант - использовать условное выражение со свойством CSS "display: none" следующим образом:

{| class = "infobox" | - {{#if: {{{variable_foo |}}} | | style = "display: none;" }}! Фу | {{{variable_foo}}} | -! Бар | {{{variable_bar}}} |}

Таким образом, нет необходимости, чтобы вертикальный символ wikitables появлялся в условном выражении #if. Однако источники и примечания, упомянутые в отключенных ячейках, не будут подавлены другим содержимым, в результате чего они по-прежнему будут перечислены в конце статьи без каких-либо ссылок на них в тексте статьи. Кроме того, этот метод работает только с браузерами, поддерживающими CSS.

Приведенный выше код находится в {{Условные таблицы / пример 2c}}. Как и прежде, в таблице ниже показан эффект при его использовании:

Вызов шаблонаРезультат
{{Условные таблицы / пример 2c| variable_bar = bar}}
Фу{{{variable_foo}}}
Барбар
{{Условные таблицы / пример 2c| variable_foo = | variable_bar = bar}}
Фу
Барбар
{{Условные таблицы / пример 2c| variable_foo = foo}}
Фуфу
Бар{{{variable_bar}}}
{{Условные таблицы / пример 2c| variable_foo = foo | variable_bar = bar}}
Фуфу
Барбар

Получать помощь

Если вы не можете заставить шаблон вести себя так, как вам нравится, вы можете попробовать спросить Деревенский насос, разместив запрос на Запрошенные шаблоны, или связавшись с редактором через IRC.

Смотрите также

Чтобы избежать пустых строк в случае следующих друг за другом необязательных строк, см. m: Справка: Таблица № Строка условной таблицы.

Для получения дополнительной информации о #если (и другие # функции), см .:

Следующие разделы справки относятся к шаблонам:

В этом разделе справки рассматривается дизайн таблиц (поскольку в большинстве шаблонов используются таблицы, это может быть полезно):

И наконец:

Примечания и ссылки

  1. ^ Использование кода таблицы HTML в шаблонах может сделать их непереносимыми для других MediaWiki вики. Это связано с тем, что Википедия и другие вики-сайты Фонда Викимедиа обрабатывают вики-текст через HTML Tidy; большинство других вики не имеют такой же настройки, и теги таблиц HTML не отображаются. Видеть Википедия: WikiProject Transwiki # Специальные шаблоны.