Автозаполняемый инфобокс

Рассмотрим автозаполняемые или полуавтоматические (потому что данные записать и пополнять актуальными придётся самому) инфобоксы на основе использования «волшебных слов». Разметка инфобокса рассматривается модульная, но это можно сделать и в простой старой табличной разметке. Хотя, желательно, уже давно нужно преобразовать все свои инфобоксы в модульную разметку.

Это такие инфобоксы, которые не нужно в каждой статье заполнять данными вручную. Данные подставляются сами автоматически из созданных заранее вспомогательных шаблонов. Нужно лишь заполнить этими данными вспомогательные шаблоны и настроить подстановку. В результате, вместо того чтобы добавлять данные в каждой статье (а их может быть более сотни) (а если что-то придётся изменять, то придётся редактировать все статьи), их можно добавить в один шаблон, а затем вызывать определённую часть данных в инфобокс в нужной статье. В идеале, инфобокс в статье будет состоять лишь из его названия. Вынести в отдельный шаблон можно почти все данные, даже изображение инфобокса (хотя его можно вынести только при условии, что название файлов не произвольное/рандомное, а имеет какую-то систему). И тогда в статью можно будет вставить `{{Глава/Эпизод}}`, а все данные сами заполнятся при просмотре инфобокса.

Работает это всё на функциях парсера. Самый простой шаблон можно построить на функции `{{#switch}}`.

Данные
Рассмотрим построение шаблона на примере инфобокса для Главы/Эпизода какого-либо произведения. В нём имеются такие стандартные поля как "Название", "Том/Сезон", "Дата выхода" и т.д.. Возьмём первые же данные — "Название". Создаём дополнительный шаблон с названием, к примеру, "Глава/Название". И записываем функцию `#switch`.

`{{#switch: {{{1|{{PAGENAME}}}}}

}}`

Это обычная конструкция, которая выдаёт данные, исходя из названия статьи. В параметре свича мы задаём переменную `{{PAGENAME}}`, которая будет являться названием статьи, либо `{{{1|}}}`, где переменную мы задаём сами. А дальше мы перечисляем ряд переменных и присваиваем им нужные данные. В нашем случае переменной является Глава и её номер, а данными — название главы.

Если названия статей имеют какой-то порядок, как в случае с главами, то можно немного упростить код, чтобы в перечисленном списке переменных не писать везде "Глава", а указать только её номер. Для этого нужно воспользоваться другой функцией парсера, `#explode`, которая выберет из названия статьи лишь определённую её часть, а именно номер главы. `{{#explode:{{PAGENAME}}| |-1}}` — такая запись выдаст первое слово с конца, т.е. номер главы. Теперь подставляем её в шаблон, а список заменяем лишь номерами.

`{{#switch: {{{1|{{#explode:{{PAGENAME}}| |-1}}}}}

}}`
Теперь, когда наш шаблон с данными готов, остаётся его лишь добавить в инфобокс с тэгом `<default>`.

`<default>{{Глава/Название}}</default>`
Пример заполнения описания и изображения.Заполнение данных.Размер исходного кода в результате.Пример заполнения списка вспомогательного шаблона.
Изображение
Подстановку изображения также можно легко автоматизировать, правда при том условии, что имя файла имеет какую-то систему, в лучшем случае - это название главы, в которую и добавляется это изображение, или же просто номер главы, к примеру "Глава 1.png". В таком случае, подстановку можно настроить аналогично той, что была описана выше для "Названия глав". В худшем случае, придётся заносить в список все названия файлов самому.

***Совет:** старайтесь всегда предварительно или перед загрузкой на вики давать названия файлам "человеко-читаемые", а не рандомно сгенерированные при сохранении из источника, такие как "2dtw899ge98w4g.JPG"*
Изображения в таббере
Часто бывает так, что инфобокс может иметь две и более картинок. К примеру, на вики-проектах по манга-аниме тематике, в инфобоксах персонажей часто добавляют изображение портрета персонажа в манге и аниме. Вставляются они через встроенный в модульный инфобокс таббер, с тегом `<gallery></gallery>`

`<gallery>

Название\_файла.png|Подпись

Название\_файла2.png|Подпись2

</gallery>`
Однако, большой его минус заключается в том, что этот таббер не взаимодействует с шаблонами и сам не может быть передан в качестве шаблона (записать таббер на страницу шаблона и вызвать шаблон в инфобоксе. И код таббера нужно записывать непосредственно в инфобоксе в статье.

Решить это можно, заменив этот таббер другим, тем, который вставляется в самих статьях — `#tag:tabber`. Создаём простейший таббер с двумя вкладками.

Манга = [[Файл:{{{Манга}}}|266px]]

{{!}}-{{!}}

Аниме = [[Файл:{{{Аниме}}}|266px]]

}}`
После этого остаётся только добавить шаблон в сам шаблон инфобокса. Только стоить учесть один момент: добавлять шаблон нужно не в строк `<image source="Картинка"></image>`, которая воспринимает только изображения, а в `<data source="Таббер"></data>`, которая принимает любые данные.

Навигация
Ещё можно настроить и навигацию между главами/эпизодами, что значительно облегчает заполнение инфобоксов. Для этого даже не потребуется создавать вспомогательные шаблоны, а нужно лишь написать короткий код в шаблоне инфобокса с использованием пары функций парсера, `#expr` — для вычисления соседнего номера (вперёд и назад), и `#explode` — для вычисления текущего номера. Саму конструкцию взять в ссылку и добавить подпись "Предыдущая" и "Следующая" (имеется ввиду глава), или любую другую подпись по желанию.

Пример кода в шаблоне инфобокса
`<group layout="horizontal">

    <header>Хронология глав</header>

    <data source="Предыдущая"><default>[[Глава {{#expr:{{{chapter|{{#explode: {{PAGENAME}}| |-1}}}}} - 1}}{{!}}Предыдущая]]</default></data>

    <data source="Следующая"><default>[[Глава {{#expr:{{{chapter|{{#explode: {{PAGENAME}}| |-1}}}}} - 1}}{{!}}Следующая]]</default></data>

</group>`

Начальное описание
Помимо инфобокса, также можно настроить заполнение и начального описания. Это то, что обычно располагается в начале статьи слева от инфобокса; краткая информация о персонаже, его имя и кем он является в целом, или информация о главе, её название и порядковый номер во всей всей серии. В случае с главами/эпизодами, начальное описание почти всегда является однотипным, где меняются 2-3 значения, такие как название или номер.

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

Пример кода автозаполнения начального описания.Как выглядит в результате.

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