Шаблон:GetField/doc: различия между версиями

Материал из Space Station 14 Вики
м Замена текста — «getId» на «searchId»
м Замена текста — «getTplId» на «searchTplId»
Строка 61: Строка 61:
}}
}}


=== searchId / getTplId ===
=== searchId / searchTplId ===
Обе функции ищут id по значению в указанном поле. Разница в результате:
Обе функции ищут id по значению в указанном поле. Разница в результате:
* <code>searchId</code> возвращает найденные id в виде JSON-массива.
* <code>searchId</code> возвращает найденные id в виде JSON-массива.
* <code>getTplId</code> по найденным id сразу вызывает шаблон.
* <code>searchTplId</code> по найденным id сразу вызывает шаблон.


Использование:
Использование:
* {{tji|GetField|функция{{=}}searchId|searchValue|pagePath|keyPath}}
* {{tji|GetField|функция{{=}}searchId|searchValue|pagePath|keyPath}}
* {{tji|GetField|функция{{=}}getTplId|searchValue|pagePath|keyPath|template}}
* {{tji|GetField|функция{{=}}searchTplId|searchValue|pagePath|keyPath|template}}
* {{tji|GetField|функция{{=}}getTplId|pagePath|keyPath|template|searchType{{=}}path}}
* {{tji|GetField|функция{{=}}searchTplId|pagePath|keyPath|template|searchType{{=}}path}}


Режимы поиска:
Режимы поиска:
* <code>searchType=value</code> — ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию.
* <code>searchType=value</code> — ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию.
* <code>searchType=key</code> — ищет id, у которых в поле-таблице существует ключ с указанным именем.
* <code>searchType=key</code> — ищет id, у которых в поле-таблице существует ключ с указанным именем.
* <code>searchType=path</code> — только для <code>getTplId</code>; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётся <code>pagePath</code>, а не значение для поиска.
* <code>searchType=path</code> — только для <code>searchTplId</code>; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётся <code>pagePath</code>, а не значение для поиска.


<code>getTplId</code> вызывает шаблон в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. Если найдено несколько id, вызовы собираются подряд через пробел.
<code>searchTplId</code> вызывает шаблон в виде <code><nowiki>{{Имя шаблона|id=...|...поля записи...}}</nowiki></code>. Если найдено несколько id, вызовы собираются подряд через пробел.


Примеры:
Примеры:
Строка 85: Строка 85:
{{Параметры/строка|2|Путь до JSON-страницы.|Да}}
{{Параметры/строка|2|Путь до JSON-страницы.|Да}}
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}}
{{Параметры/строка|3|Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида <code>field.1</code>|Да}}
{{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>getTplId</code>}}
{{Параметры/строка|4|Имя шаблона, который будет вызван для каждого найденного id.|Только для <code>searchTplId</code>}}
{{Параметры/строка|searchType|Режим поиска: <code>value</code>, <code>key</code> или <code>path</code>.|Нет; value}}
{{Параметры/строка|searchType|Режим поиска: <code>value</code>, <code>key</code> или <code>path</code>.|Нет; value}}
}}
}}
Строка 199: Строка 199:
* Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку.
* Если запись, поле или JSON-страница не найдены, функции обычно возвращают пустую строку.
* Функция <code>get</code> возвращает таблицы в JSON-виде.
* Функция <code>get</code> возвращает таблицы в JSON-виде.
* В <code>searchId</code> и <code>getTplId</code> значения сравниваются как строки.
* В <code>searchId</code> и <code>searchTplId</code> значения сравниваются как строки.
* Параметр <code>keyPath</code> поддерживает доступ к вложенным полям и индексам.
* Параметр <code>keyPath</code> поддерживает доступ к вложенным полям и индексам.
* <code>getTpl</code> и <code>getTplId</code> удобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон.
* <code>getTpl</code> и <code>searchTplId</code> удобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон.
* Функции с <code>Generator</code> работают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id.
* Функции с <code>Generator</code> работают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id.
* <code>json</code> и <code>jsonList</code> ожидают корректный JSON; если строка не разбирается, результат будет пустым.
* <code>json</code> и <code>jsonList</code> ожидают корректный JSON; если строка не разбирается, результат будет пустым.

Версия от 11:52, 25 марта 2026

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

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

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

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

get

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

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

  • {{GetField|функция=get|id|pagePath}}
  • {{GetField|функция=get|id|pagePath|keyPath}}

Простые значения возвращаются как текст, а таблицы в JSON-виде.

Например, json сущности MopItem из Участник:IanComradeBot/component/meleeWeapon.json выглядит так:

"MopItem": {
    "damage": {
        "types": {
            "Blunt": 10
        }
    },
...
},

то мы можем получить значение как как:

  • {{GetField|функция=get|MopItem|component/meleeWeapon.json|damage}} -> "types": {"Blunt": 10}}
  • {{GetField|функция=get|MopItem|component/meleeWeapon.json|damage.types}} -> {"Blunt": 10}
  • {{GetField|функция=get|MopItem|component/meleeWeapon.json|damage.types.Blunt}} -> 10
ПараметрОписаниеОбязателен?
|1 =Id записи.Да
|2 =Путь до JSON-страницы, например component/meleeWeapon.json.Да
|3 =Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида field.1Да

getTpl

Строит вызов шаблона для одного id и сразу обрабатывает его через препроцессор. Помимо id, в шаблон передаются развёрнутые поля записи.

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

  • {{GetField|функция=getTpl|id|pagePath|template}}

Шаблон вызывается в виде {{Имя шаблона|id=...|...поля записи...}}. Вложенные таблицы передаются как плоские параметры, а также в JSON-виде там, где это нужно для сохранения структуры.

Пример:

  • {{GetField|функция=getTpl|MopItem|entity/MopItem.json|Предмет}}
ПараметрОписаниеОбязателен?
|1 =Id записи.Да
|2 =Путь до JSON-страницы.Да
|3 =Имя шаблона, который будет вызван как {{Имя шаблона|id=...|...}}.Да

searchId / searchTplId

Обе функции ищут id по значению в указанном поле. Разница в результате:

  • searchId возвращает найденные id в виде JSON-массива.
  • searchTplId по найденным id сразу вызывает шаблон.

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

  • {{GetField|функция=searchId|searchValue|pagePath|keyPath}}
  • {{GetField|функция=searchTplId|searchValue|pagePath|keyPath|template}}
  • {{GetField|функция=searchTplId|pagePath|keyPath|template|searchType=path}}

Режимы поиска:

  • searchType=value — ищет id, у которых значение поля равно указанному значению. Это режим по умолчанию.
  • searchType=key — ищет id, у которых в поле-таблице существует ключ с указанным именем.
  • searchType=path — только для searchTplId; выводит все id, у которых поле по указанному пути существует и не пустое. В этом режиме первым параметром передаётся pagePath, а не значение для поиска.

searchTplId вызывает шаблон в виде {{Имя шаблона|id=...|...поля записи...}}. Если найдено несколько id, вызовы собираются подряд через пробел.

Примеры:

  • {{GetField|функция=searchId|Elements|prototype/reaction.json|group}} -> ["LemonLime","IrishCoffee","DemonsBlood","SapBoiling","DevilsKiss","MoscowMule","OrangeLimeSoda","RedMead","Vodka","Tortuga","Daiquiri","Andalusia","DoctorsDelight","LongIslandIcedTea","BloodyMary","Lemonade","SpaceGlue","AmmoniaFromBlood"]
ПараметрОписаниеОбязателен?
|1 =Значение для поиска.Да
|2 =Путь до JSON-страницы.Да
|3 =Путь до поля внутри записи. Поддерживает вложенность через точку и индексы вида field.1Да
|4 =Имя шаблона, который будет вызван для каждого найденного id.Только для searchTplId
|searchType =Режим поиска: value, key или path.Нет; value

hasComp

Проверяет, есть ли у сущности указанный компонент.

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

  • {{GetField|функция=hasComp|entityId|componentName}}

Возвращает строку true или false.

Пример:

  • {{GetField|функция=hasComp|MopItem|Item}}
ПараметрОписаниеОбязателен?
|1 =Id сущности.Да
|2 =Имя компонента для проверки.Да

getGenerator / getTplGenerator

Эти функции находят прототипы или компоненты содержащие указанный id, используя Участник:IanComradeBot/prototype_store.json и Участник:IanComradeBot/component_store.json.

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

  • {{GetField|функция=getGenerator|searchId|prototype|Название}}
  • {{GetField|функция=getGenerator|searchId|component|Название}}
  • {{GetField|функция=getTplGenerator|searchId|prototype|Название|Шаблон}}

getGenerator возвращает JSON-массив id, найденных в компонентах/прототипах. getTplGenerator по тем же id сразу вызывает шаблон, используя страницу вида prototype/Название.json или component/Название.json.

Примеры:

  • {{GetField|функция=getGenerator|MopItem|component|itemBorgModule}} -> Ошибка скрипта: Функции «getGenerator» не существует.
  • {{GetField|функция=getGenerator|MopItem|prototype|latheRecipe}} -> Ошибка скрипта: Функции «getGenerator» не существует.
ПараметрОписаниеОбязателен?
|1 =Id, который ищется в хранилище.Да
|2 =Тип: prototype или component.Да
|3 =Имя хранилищя без .json.Да
|4 =Имя шаблона, который будет вызван для каждого найденного id.Только для getTplGenerator

GeneratorId / GeneratorTplId

Эти функции получают все id прототипов или компонентов.

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

  • {{GetField|функция=GeneratorId|pagePath}}
  • {{GetField|функция=GeneratorTplId|pagePath|template}}

GeneratorId по умолчанию возвращает JSON-массив id. GeneratorTplId вызывает шаблон для каждого id в виде {{Имя шаблона|id=...|...поля записи...}}.

Примеры:

  • {{GetField|функция=GeneratorId|component/staticPrice.json}} -> выводит все id сущностей с этим компонентом в формате JSON
  • {{GetField|функция=GeneratorTplId|component/staticPrice.json|component/staticPrice/wrapper}} -> выводит все id сущностей с этим компонентом обёрнутым в шаблон {{component/staticPrice/wrapper}}
ПараметрОписаниеОбязателен?
|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-виде.
  • В searchId и searchTplId значения сравниваются как строки.
  • Параметр keyPath поддерживает доступ к вложенным полям и индексам.
  • getTpl и searchTplId удобны, когда нужно не получить сырые данные, а сразу отрендерить карточку или другой шаблон.
  • Функции с Generator работают только с генераторными страницами и хранилищами, где структура данных уже подготовлена под поиск по id.
  • json и jsonList ожидают корректный JSON; если строка не разбирается, результат будет пустым.