Модульные инфобоксы

## Модульный инфобокс

### Описание

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

### Стадия

Общий релиз

Использование модульных инфобоксов является важным этапом в переходе Викия на мультиплатформенный контент, который будет отображаться на всех электронных устройствах. Модульные инфобоксы — это новое поколение шаблонов. И хотя они продолжают развиваться и дополняться, многие сообщества уже полностью на них перешли.

**Данная страница предназначена, в первую очередь, для участников, непосредственно занимающимися созданием шаблонов,** и является альтернативным вариантом официальной документации по модульным инфобоксам.

Ответы на часто задаваемые вопросы вы можете найти в разделе *FAQ*.

## Общие сведения

Модульные инфобоксы, как и обычные создаются в пространстве имён «шаблон» (например, Шаблон:Инфобокс персонаж), но в отличие от обычных, модульные инфобоксы написаны с помощью XML-разметки вместо викитекста или языка шаблонов Lua. Такая разметка более распространена в HTML и расширениях внутри викитекста, а синтаксис модульных инфобоксов на самом деле и представляет собой разметку для расширений, что позволяет таким инфобоксах автоматически настраиваться для отображения на разных устройствах.

В случае, если на вики уже используются обычные инфобоксы, и участники решили поменять их на модульные, то им достаточно будет изменить лишь сами шаблоны типа Шаблон:Пример, а не все статьи, где он используются.

Инструмент конвертации инфобоксов был создан с целью облегчить переход на модульные инфобоксы. В результате конвертации на отдельной странице появляется черновая версия шаблона, которую вы можете подправить и уже после этого вручную заменить основной шаблон. Стоит отметить, что на всех проектах классические инфобоксах реализованы по-разному, поэтому конвертер очень плохо работает с со сложными и оригинальными шаблонам (например, с использованием Lua или запутанных функций парсера).

## Основные сведения

*Главная страница:* Справка: Инфобоксы
На странице статьи вы можете использовать модульный инфобокс так же, как и классический:

```
{{Инфобокс персонаж
}}

```

Запрашиваемый шаблон (в нашем случае Шаблон:Инфобокс персонаж) использует модульную разметку, которая выглядит так:

```
<infobox>
 <title source="название" />
 <image source="изображение">
 <caption source="подпись" />
 </image>
 <data source="класс" />
 <data source="возраст" />
 <data source="статус" />
 <data source="рост" />
 <data source="вес" />
</infobox>

```

Подобный код может получиться при использовании инструмента конвертации. Проверка и добавления пользователей сделают этот инфобокс ещё лучше. В следующем примере показано использование тегов `<default>` (который может быть использован как дочерний тег в любом элементе, который обращается к тегу `<source>`), `<labels>` и `<format>`. Последний тег нужен для работы непосредственно со значениями строк. Этот тег также может быть использован в других случаях, о которых мы расскажем позже.

```
<infobox>
 <title source="название">
 <default>{{PAGENAME}}</default>
 </title>
 <image source="изображение">
 <caption source="подпись" />
 </image>
 <data source="Класс">
 <label>Класс</label>
 </data>
 <data source="возраст">
 <label>Возраст</label>
 </data>
 <data source="статус">
 <label>Статус</label>
 </data>
 <data source="рост">
 <label>Рост</label>
 <format>{{{рост}}} дюймов</format>
 </data>
 <data source="вес">
 <label>Вес</label>
 <format>{{{вес}}} граммов</format>
 </data>
</infobox>

```

## Черновики, созданные инструментом конвертации

*Главная страница:* Справка: Инфобоксы/конвертация
Инструмент конвертации используется для превращения классических инфобоксов в модульные, но его эффективность варьируется в зависимости от исходных инфобоксов. При конвертации сложных инфобоксов вам всегда потребуется вручную отредактировать получившийся черновик.

## Вставка инфобоксов в визуальном редакторе

При использовании визуального редактора — самого распространённого инструмента редактирования среди новичков — процесс добавления инфобокса довольно прост. Выпадающее меню в панели редактирования имеет опцию «инфобокс», которая вызывает список модульных инфобоксов на вики. Однако, настроить инфобокс в визуальном редакторе не так просто. На данный момент параметры инфобокса показаны без объяснений, а для вставки изображений и видео приходится прибегать к обходным решениям.

Для вставки изображений (или видео) в инфобокс используйте инструмент вставки в визуальном редакторе. Выбранное изображение нужно сначала вставить в текст статьи, а потом скопировать его данные и внести их в инфобокс в режиме исходного кода. Внимательно следите за тем, куда вы копируете адрес изображения, так как он должен находиться точно в поле инфобокса «изображение». Размер, подпись, или миниатюру изображения указывать не нужно, потому-что они не будут учтены инфобоксом. Размеры изображения настраиваются с помощью CSS, а создание подписи осуществляется с помощью отдельного тега `<caption>`.

Процесс копирования данных изображений из текста статьи в инфобокс также необходим в классическом редакторе.

## Теги

*Главная страница:* Справка: Инфобоксы/теги
Если вы ещё помните классические инфобоксы, то слово, вставленное в три фигурные скобки (например, **`{{{слово}}}`**) называется параметром. Параметры представляют собой вводные данные для шаблона, где значение «слова» — это то, что присвоено параметру в статье. Такие вводные данные также будут понятны модульному инфобоксу, если вы напишите **`source="слово"`**. Эти параметры используются отображения значений параметров, и их вид в опубликованной статье можно настроить с помощью тега `<format>`.

Вложение тегов необходимо для их отслеживания, так как определённые теги могут быть вложены только в другие теги. В XML-разметке важно всегда закрывать теги. Если же они не требуют закрывающих тегов, закрывайте их с помощью слеша в конце:  **`/>`** .

Чтобы сгруппировать элементы в раздел, используйте тег `<group>`.

Теги `<navigation>` дают возможность использовать викитекст в модульных инфобоксах, так как иначе его использование может быть ограничено или просто проигнорировано инфобоксом. Эти теги обычно занимают целую секцию (как теги `<data>`) и могут быть использованы для размещения ссылок и другой информации (чаще всего их используют для сносок).

### Изображения

Табуляция изображений поддерживается в модульных инфобоксах. Для этого вам потребуется разместить набор изображений внутри тега `<gallery>` или `<tabber>` (см. раздел табберы и галереи).

Пример модульного инфобокса

```
<!-- Инфобокс персонаж -->
<infobox layout="stacked">
  <title source="название"><default>{{PAGENAME}}</default></title>
  <image source="изображение" />
  <data source="сезон"><label>Сезон(ы)</label></data>
  <data source="первое"><label>Первое появление</label></data>
</infobox>

```

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

```
{{Инфобокс персонаж
    Мария в Лондоне.jpg|Мария в Лондоне
    Мария в Париже.jpg|Мария в Париже
    Мария в Милане.jpg|Мария в Милане
  </gallery>
           [[Сезон 1952| 1952]], [[Сезон 1953| 1953]]
}}

```

Пример использования таббера

```
{{Инфобокс персонаж
    Милан  = [[Файл:Мария в Милане.jpg]]
  </tabber>
           [[Сезон 1952| 1952]], [[Сезон 1953| 1953]]
}}

```

## Оформление с помощью CSS

*Главная страница:* Справка: Инфобоксы/CSS
Модульные инфобоксы оформляются автоматически с использованием настроек из конструктора тем. Если у переменной нет значения, то соответствующая строка в инфобоксе показана не будет (кроме тех случаев, когда используется тег `<default>`).

Инлайновый CSS не поддерживается. Уникальные классы также не поддерживаются, но можно использовать ограниченный набор классов для оформления элементов через атрибуты `theme` and `theme-source`.

### Макет

Табличный макет устанавливается по умолчанию. В нём название строки располагается слева, а значение — справа.
На данный момент макеты инфобоксов довольно просты и затрагивают лишь названия и значения строк.

Название строки
Значение строки
 * Другой макет инфобокса называется `infobox layout="stacked"`.

Название строки
Значение строки

Макеты можно применить и к группам (см. ниже).

### Группы

Группы можно назвать инфобоксами внутри инфобоксов, и поэтому вы можете создать для них уникальный макет и дополнительные операторы отдельно от общего инфобокса.

Группы отлично подходят для разделов инфобокса, которые вы хотите сделать сворачиваемыми. Для этого требуется добавить следующие атрибуты:

* `collapse="closed"` — сделает группу свёрнутой по умолчанию
* `collapse="open"` — сделает группу развёрнутой по умолчанию

### Темы

Темы — это наборы стилей CSS, которые используются для оформления инфобоксов (с помощью атрибута `theme="*themename*"` инфобокса). Когда вы указываете нужную тему, вы можете также указать стили для класса `.portable-infobox.pi-theme-*themename*` в вашем MediaWiki:Wikia.css. Они могут отличаться от стиля, настроенного по умолчанию, но неопределённые стили в вашей теме унаследуют атрибуты стиля по умолчанию.

Примеры
* На странице Оформление портативных инфобоксов *(англ.)* можно рассмотреть отличия между разными темами.
* Список готовых тем.

## Усовершенствование выходных данных

Самый простой способ использовать данные — это выводить значения точно в таком же виде, в каком они были введены. Однако, второстепенной задачей модульных инфобоксов является планомерное упорядочивание данных. В одном из предыдущих примеров уже предполагалось, что значения будут введены в дюймах и граммах, а тег **`<format>`** автоматически добавляет текст «дюймов» или «граммов», так как предполагается, что вводиться будут цифровые значения. Вполне возможно, что в будущих версиях Визуального редактора можно будет вводить **только** цифровые значения.

### Теги `<format>`

Теги `<format>` позволяют настраивать визуального оформления данных для тегов `<data>`, `<title>` и `<caption>`.

### Функции парсера

Функции парсера вызываются в тегах `<default>`, `<format>` и `<navigation>` с помощью выражения **`{{#switch:`** (или другого похожего выражения). При использовании в тегах `<format>` или `<navigation>` это выражение отображаться не будет, если во внешнем параметре `<data source>` не установлено значение.

При использовании в `<default>` избегайте отсылки к элементу, для которого это значение установлено по-умолчанию. Использование функции парсера в `<default>` ведёт к заимствованию информации из других источников для создания выходных данных в тех полях, где информация отсутствует. Не нужно использовать выражение **`{{#if:`** при тестировании внешнего вводного параметра, поскольку эти выражения не будут отображаться в инфобоксе, если они не заполнено или вообще отсутствуют (кроме случаев, когда используется тег `<default>`).

### Использование функций Lua

Функции Lua, и в особенности функции с одновременными вводными данными, могут быть вызваны везде, где можно использовать викитекст. Обычно это делается в тегах `<format>` и `<default>` с помощью выражения **`{{#invoke:}}`**.

### DPL

Dynamic Page List (DPL, Динамический Список Страниц) — комплексное и мощное расширение, которое может создать списки (в основном для таблиц) на основании категорий и других метаданных (таких как отметки времени или «последний раз редактировалось»). Однако, оно имеет свои ограничения. Обратите внимание, что данное расширение не подключено по-умолчанию, поэтому для его использования вам нужно подать запрос.

## На будущее

Замена функциональности для Semantic MediaWiki (SMW) и DynamicPageList (DPL) внутри инфобоксов и объединённые HTML5-микроданные обсуждались на съезде администраторов в 2015 году.

Когда предварительный синтаксис для расширений и новых функций станет доступен, он будет опубликован здесь.

## См. также

* Модульные инфобоксы/Полезные советы
* Модульные инфобоксы/FAQ
* Модульные инфобоксы/Преимущества
* Модульные инфобоксы/Практические рекомендации