Мультиплатформенность Вики
Мультиплатформенность Вики

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

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

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

Общие сведения[]

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

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

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

Основные сведения[]

Главная страница: Справка: Инфобоксы

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

{{Инфобокс персонаж
 | название         = Маргаритка
 | изображение      = Пример.jpg
 | подпись          = Маргаритка в саду
 | класс            = Садовый цветок
 | возраст          = 2 месяца
 | статус           = Жива
 | рост             = 5 дюймов
 | вес              = 20 граммов
}}

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

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

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

Главная страница: Справка: Инфобоксы/конвертация

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

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

RU Infobox on VE dropdown

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

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

RU Source Editor in VE dropdown

Редактирование в режиме исходного кода в визуальном редакторе

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

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

RU SE Before

Изображение вне инфобокса в режиме исходного кода

RU SE After

Изображение внутри инфобокса в режиме исходного кода

Теги[]

Главная страница: Справка: Инфобоксы/теги

Если вы ещё помните классические инфобоксы, то слово, вставленное в три фигурные скобки (например, {{{слово}}}) называется параметром. Параметры представляют собой вводные данные для шаблона, где значение «слова» — это то, что присвоено параметру в статье. Такие вводные данные также будут понятны модульному инфобоксу, если вы напишите 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>
Пример использования галереи
{{Инфобокс персонаж
 |название     = Мария Каллас
 |изображение  = <gallery>
    Мария в Лондоне.jpg|Мария в Лондоне
    Мария в Париже.jpg|Мария в Париже
    Мария в Милане.jpg|Мария в Милане
  </gallery>
 |сезон  = [[Сезон 1949 | 1949]], [[Сезон 1950 | 1950]], [[Сезон 1951 | 1951]], 
           [[Сезон 1952| 1952]], [[Сезон 1953| 1953]]
 |первое = [[Тангейзер]]
}}
Пример использования таббера
{{Инфобокс персонаж
 |название     = Мария Каллас
 |изображение  =  <tabber>
    Лондон   = [[Файл:Мария в Лондоне.jpg]]  |-|
    Париж  = [[Файл:Мария в Париже.jpg]] |-|
    Милан  = [[Файл:Мария в Милане.jpg]]
  </tabber>
 |сезон  = [[Сезон 1949 | 1949]], [[Сезон 1950 | 1950]], [[Сезон 1951 | 1951]], 
           [[Сезон 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 году.

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

См. также[]