Шаблон:GetField/doc
Модуль предназначен для получения данных из кэшированных JSON-страниц и их использования в шаблонах. С его помощью можно получить поле по пути, найти id по значению или сразу собрать вызов шаблона по найденным данным.
Поля берутся из 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)
Основные функции
get
Возвращает запись целиком или отдельное поле по её id.
Использование:
Если keyPath не указан, функция вернёт всю запись. Простые значения возвращаются как текст, а таблицы — в JSON-виде.
Примеры:
- {{GetField
|get |MopItem |entity/MopItem.json}} - {{GetField
|get |MopItem |entity/MopItem.json |name}} - {{GetField
|get |SomeId |prototype/someGenerator.json |components.1}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id записи. | Да |
|2 = | Путь до JSON-страницы, например entity/MopItem.json. | Да |
|3 = | Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида field.1 или field[1]. | Нет; вся запись |
getTpl
Строит вызов шаблона для одного id и сразу обрабатывает его через препроцессор. Помимо id, в шаблон передаются развёрнутые поля записи.
Использование:
- {{GetField
|getTpl |id |pagePath |template}}
Шаблон вызывается в виде {{Имя шаблона|id=...|...поля записи...}}. Вложенные таблицы передаются как плоские параметры, а также в JSON-виде там, где это нужно для сохранения структуры.
Пример:
- {{GetField
|getTpl |MopItem |entity/MopItem.json |Предмет}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id записи. | Да |
|2 = | Путь до JSON-страницы. | Да |
|3 = | Имя шаблона, который будет вызван как {{Имя шаблона|id=...|...}}. | Да |
getId / getTplId
Обе функции ищут id по значению в указанном поле. Разница в результате:
getIdвозвращает найденные id в виде JSON-массива.getTplIdпо найденным id сразу вызывает шаблон.
Использование:
- {{GetField
|getId |searchValue |pagePath |keyPath |searchType=value}} - {{GetField
|getTplId |searchValue |pagePath |keyPath |template |searchType=value}} - {{GetField
|getTplId |pagePath |keyPath |template |searchType=path}}
Режимы поиска:
searchType=value— ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию.searchType=key— ищет id, у которых в поле-таблице существует ключ с указанным именем.searchType=path— только дляgetTplId; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётсяpagePath, а не значение для поиска.
getTplId вызывает шаблон в виде {{Имя шаблона|id=...|...поля записи...}}. Если найдено несколько id, вызовы собираются подряд через пробел.
Примеры:
- {{GetField
|getId |MopItem |prototype/itemGenerator.json |parent}} - {{GetField
|getId |Anchorable |entity/someEntity.json |components |searchType=key}} - {{GetField
|getTplId |MopItem |prototype/itemGenerator.json |parent |Предмет}} - {{GetField
|getTplId |prototype/itemGenerator.json |sprite |Предмет |searchType=path}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Для getId и обычного режима getTplId — значение для поиска. Для searchType=path у getTplId — путь до JSON-страницы. | Да |
|2 = | Для getId и обычного режима getTplId — путь до JSON-страницы. Для searchType=path у getTplId — путь до поля. | Да |
|3 = | Для getId — путь до поля. Для getTplId — путь до поля, либо имя шаблона в режиме searchType=path. | Да |
|4 = | Для getTplId — имя шаблона, который будет вызван для каждого найденного id. | Только для getTplId |
|searchType = | Режим поиска: value, key или path. | Нет; value |
hasComp
Проверяет, есть ли у сущности указанный компонент.
Использование:
- {{GetField
|hasComp |entityId |componentName}}
Возвращает строку true или false.
Пример:
- {{GetField
|hasComp |MopItem |Item}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id сущности. | Да |
|2 = | Имя компонента для проверки. | Да |
getGenerator / getTplGenerator
Эти функции работают с генераторами, описанными в общих хранилищах prototype_store.json и component_store.json.
Использование:
- {{GetField
|getGenerator |searchId |prototype |generatorId}} - {{GetField
|getGenerator |searchId |component |generatorId}} - {{GetField
|getTplGenerator |searchId |prototype |generatorId |template}}
getGenerator возвращает JSON-массив id, найденных в генераторе. getTplGenerator по тем же id сразу вызывает шаблон, используя страницу вида prototype/generatorId.json или component/generatorId.json.
Примеры:
- {{GetField
|getGenerator |MopItem |prototype |itemGenerator}} - {{GetField
|getTplGenerator |MopItem |prototype |itemGenerator |Предмет}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Id, который ищется в хранилище генераторов. | Да |
|2 = | Тип генератора: prototype или component. | Да |
|3 = | Имя генератора без .json. | Да |
|4 = | Имя шаблона для getTplGenerator. | Только для getTplGenerator |
GeneratorId / GeneratorTplId
Эти функции получают все id из генераторной JSON-страницы, где данные лежат в таблице id.
Использование:
- {{GetField
|GeneratorId |pagePath}} - {{GetField
|GeneratorId |pagePath |replace=<nowiki>* \1</nowiki>}} - {{GetField
|GeneratorTplId |pagePath |template}}
GeneratorId по умолчанию возвращает JSON-массив id. Если указан replace, каждый id сначала прогоняется через replace, а затем строки собираются через перенос строки.
GeneratorTplId вызывает шаблон для каждого id из генератора в виде {{Имя шаблона|id=...|...поля записи...}}.
Примеры:
- {{GetField
|GeneratorId |prototype/itemGenerator.json}} - {{GetField
|GeneratorId |prototype/itemGenerator.json |replace=<nowiki>* \1</nowiki>}} - {{GetField
|GeneratorTplId |prototype/itemGenerator.json |Предмет}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | Путь до генераторной JSON-страницы. | Да |
|2 = | Имя шаблона для GeneratorTplId. | Только для GeneratorTplId |
|replace = | Строка замены для GeneratorId. Если задана, результат выводится построчно вместо JSON-массива. | Нет |
jsonList
Преобразует JSON в список, перечисление или простой текст. Подходит для быстрого вывода данных без отдельного шаблона.
Использование:
- {{GetField
|jsonList |["a","b","c"]}} - {{GetField
|jsonList |{"MopItem":"Швабра"}}} - {{GetField
|jsonList |{"MopItem":"Швабра"} |type=enum}}
Основные параметры:
type— формат вывода:list,enumилиnone.prefix— префикс строки для режима списка. По умолчанию*.sep— разделитель между ключом и значением. По умолчанию:.replace— дополнительная обработка уже собранной строки.key_replace,value_replace— обработка ключей и значений по отдельности.
Примеры:
- {{GetField
|jsonList |["a","b","c"]}} - {{GetField
|jsonList |{"MopItem":"Швабра"} |type=list}} - {{GetField
|jsonList |{"MopItem":"Швабра"} |type=none |key_replace=<nowiki>[[\1]]</nowiki>}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | JSON-строка. Можно также передать именованным параметром json. | Да |
|type = | Формат вывода: list, enum или none. | Нет; list |
|prefix = | Префикс строки для режима list. | Нет; * |
|sep = | Разделитель между ключом и значением. | Нет; : |
|key_replace = | Строка замены для ключей. | Нет; \1 |
|value_replace = | Строка замены для значений. | Нет; \1 |
json
Преобразует JSON-объект или JSON-массив объектов в набор вызовов шаблона и сразу обрабатывает их.
Использование:
- {{GetField
|json |{"MopItem":{"name":"Швабра"}} |Предмет}}
Если значение по id является объектом, его поля разворачиваются в параметры шаблона. Если значение простое, оно передаётся как value=....
Пример вызова, который будет собран функцией:
{{Предмет|id=MopItem|name=Швабра}}
| Параметр | Описание | Обязателен? |
|---|---|---|
|1 = | JSON-строка. | Да |
|2 = | Имя шаблона. | Да |
См. также
Примечания
- Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку.
- Функция
getвозвращает таблицы в JSON-виде. - В
getIdиgetTplIdзначения сравниваются как строки. - Параметр
keyPathподдерживает доступ к вложенным полям и индексам. getTplиgetTplIdудобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон.- Функции с
Generatorработают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id. jsonиjsonListожидают корректный JSON; если строка не разбирается, результат будет пустым.