Шаблон:GetField/doc

Версия от 22:24, 24 марта 2026; Pok (обсуждение | вклад) (Новая страница: «{{docpage}} {{OnLua|GetField}} Модуль предназначен для получения данных из кэшированных JSON-страниц и их использования в шаблонах. С его помощью можно получить поле по пути, найти id по значению или сразу собрать вызов шаблона по найденным данным. Поля берутся из json с...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

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

Поля берутся из json страниц

Для подпроектов

Основные функции

get

Возвращает запись целиком или отдельное поле по её id.

Использование:

  • {{GetField|get|id|pagePath}}
  • {{GetField|get|id|pagePath|keyPath}}

Если 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.

Пример:

ПараметрОписаниеОбязателен?
|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; если строка не разбирается, результат будет пустым.