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

Материал из Space Station 14 Вики
Новая страница: «{{docpage}} {{OnLua|Сущность|module1=Сущность/поля}} Модуль предназначен для вывода блоков сущности по её id. Основная его настройка делается не в самом вызове модуля, а в шаблонах сущностей и компонентов вида <code>component/...</code>, <code>prototype/...</code> и их вариантах <code>/store</code>....»
 
Нет описания правки
Строка 62: Строка 62:
         }
         }
     },
     },
    "soundNoDamage": {
...
        "!type:SoundCollectionSpecifier": {
            "collection": "WeakHit"
        }
    },
    "soundHit": {
        "!type:SoundCollectionSpecifier": {
            "collection": "MetalThud"
        }
    },
    "soundSwing": {
        "!type:SoundPathSpecifier": {
            "params": {
                "variation": 0.025,
                "volume": -3
            },
            "path": "/Audio/Weapons/punchmiss.ogg"
        }
    }
},
},
</pre>
</pre>

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

Модуль предназначен для вывода блоков сущности по её id. Основная его настройка делается не в самом вызове модуля, а в шаблонах сущностей и компонентов вида component/..., prototype/... и их вариантах /store.

Поля берутся из 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-варианты;
  • собирает итоговые блоки заголовков и карточки.

Ограничение вывода

Можно управлять тем, какие поля будут выведены, через белый и чёрный списки. Эти параметры принимают список имён через запятую и убирают соответствующие из обработки.

Примеры:

Формат значения:

  • режим_поле


Иногда нужно скрыть часть шаблонов сущности целиком, не меняя их разметку.

Примеры:

Параметры

ПараметрОписаниеОбязателен?
|1 =Id сущности.Да
|whitelist =Белый список полей в формате режим_поле, перечисленных через запятую.Нет
|blacklist =Чёрный список полей в формате режим_поле, перечисленных через запятую.Нет
|ignoreComponents =Список компонентов, которые не нужно учитывать при сборке сущности.Нет
|ignorePrototypes =Список прототипов, которые не нужно учитывать при сборке сущности.Нет

См. также

Примечания

  • Если нужный шаблон сущности или компонента отсутствует, модуль выводит служебный блок с указанием отсутствующего шаблона.
  • В белом и чёрном списках используются режимы из описания шаблона: обычно title и card.
  • Для карточки модуль отдельно вызывает подпись поля и его содержимое, поэтому обычно нужно задавать обе части: cardLabel и cardContent.