Шаблон:Сущность/doc
Этот шаблон реализован на основе Lua с использованием модуля Сущность; |
Модуль предназначен для вывода блоков сущности по её id. Основная его настройка делается не в самом вызове модуля, а в шаблонах сущностей и компонентов вида component/..., prototype/... и их вариантах /store. Используется на страницах сущностей см. Категория:Сущности.
Поля берутся из json страниц
Участник:IanComradeBot/component/название(пример: Участник:IanComradeBot/component/access.json)Участник:IanComradeBot/prototype/название(пример: Участник:IanComradeBot/prototype/tag.json)
Для подпроектов
Участник:IanComradeBot/component/Проект/название(пример: Участник:IanComradeBot/Goob/component/access.json)Участник:IanComradeBot/prototype/Проект/название(пример: Участник:IanComradeBot/Goob/prototype/tag.json)
Как устроен шаблон сущности
Шаблон должен уметь работать в нескольких режимах. Обычно вся схема полей описывается через {{#invoke:Сущность/поля}}.
Базовый вид:
{{#invoke:Сущность/поля|main
|title_* =
|cardLabel_* =
|cardContent_* =
|cardTag =
}}
По нему {{сущность}} понимает:
- какие заголовки можно выводить в режиме
title; - какие поля попадут в карточку через режимы
cardLabelиcardContent; - нужно ли добавлять тег карточки через
cardTag.
Описание полей через Модуль:Сущность/поля
{{#invoke:Сущность/поля}} принимает составные параметры вида режим_поле.
Пример:
{{#invoke:Сущность/поля|main
|title_Механики = Имеет размер!
|cardLabel_Размер = [[Размер]]
|cardContent_Размер = Маленький
|cardTag = Предмет
}}
Это создаст на странице:
- заголовок h2
Механики; - ячейку карточки с заголовком
Размер; - содержание ячейки карточки
1; - в карточку будет добавлен тег
Предмет.
Если один и тот же режим содержит несколько полей, они просто перечисляются отдельными параметрами. Это лишь пример, лучше получать обрабатывать переданные параметры, чтобы они менялись взависимости от сущности. § Какие параметры получает шаблон
Какие параметры получает шаблон
Кроме режимов и id, модуль передаёт шаблону параметры из JSON-страницы сущности.
Например, json сущности MopItem из Участник:IanComradeBot/component/meleeWeapon.json выглядит так:
"MopItem": {
"damage": {
"types": {
"Blunt": 10
}
},
...
},
то внутри шаблона их можно получать как:
{{{damage}}}-> "types": {"Blunt": 10}}{{{damage.types}}}-> {"Blunt": 10}{{{damage.types.Blunt}}}-> 10
То есть модуль передаёт расплющенные параметры записи, и после этого их можно использовать как обычные параметры шаблона, в том числе с точками в имени.
Дальше их можно оставить так, либо использовать json функции из {{#invoke:GetField}}, если нужно обработать вложенность (пример Шаблон:Component/meleeWeapon).
Использование модуля
Основной вызов:
- {{сущность
|id}}
Модуль сам:
- определяет компоненты сущности по
component.json; - определяет связанные прототипы по
prototype_store.json; - подгружает шаблоны
component/...,prototype/..., а также/store-варианты; - собирает итоговые блоки заголовков и карточки.
Ограничение вывода
Можно управлять тем, какие поля будут выведены, через белый и чёрный списки. Эти параметры принимают список имён через запятую и убирают соответствующие из обработки.
Примеры:
- {{сущность
|id |whitelist=title_Описание, card_Масса}} - {{сущность
|id |blacklist=title_Описание, card_Масса}}
Формат значения:
режим_поле
Иногда нужно скрыть часть шаблонов сущности целиком, не меняя их разметку.
Примеры:
Параметры
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id сущности. | Да |
|whitelist = | Белый список полей в формате режим_поле, перечисленных через запятую. | Нет |
|blacklist = | Чёрный список полей в формате режим_поле, перечисленных через запятую. | Нет |
|ignoreComponents = | Список компонентов, которые не нужно учитывать при сборке сущности. | Нет |
|ignorePrototypes = | Список прототипов, которые не нужно учитывать при сборке сущности. | Нет |
См. также
{{loc}}{{GetField}}{{Предмет}}{{#invoke:Сущность/поля}}
Примечания
- Если нужный шаблон сущности или компонента отсутствует, модуль выводит служебный блок с указанием отсутствующего шаблона.
- В белом и чёрном списках используются режимы из описания шаблона: обычно
titleиcard. - Для карточки модуль отдельно вызывает подпись поля и его содержимое, поэтому обычно нужно задавать обе части:
cardLabelиcardContent.