--- url: /templates/shared.md description: >- Общие шаблоны — переиспользуемые куски шаблонов и библиотеки макросов, которые подключаются через include. --- # Общие шаблоны
Общий шаблон — кусок шаблона, который хранится отдельно и вставляется в другие шаблоны по имени. Одна шапка для всех команд, одна карточка профиля, одна библиотека макросов — правите в одном месте, меняется везде.
## Где создать { #create } Раздел **«Команды»** → вкладка **«Общие шаблоны»** → **«+ Новый шаблон»**. | Поле | Описание | |---|---| | **Имя** | Латиница в нижнем регистре, цифры, `-` и `_`, до 32 символов. По нему шаблон подключается | | **Описание** | Для себя | | **Шаблон** | Сам текст, до 16 КБ | На вкладке **«Где используется»** видно, какие команды подключают этот шаблон. Удалить шаблон, который где-то используется, нельзя — панель покажет список зависимых команд. ## Как подключить { #include } ```template {% include 'club-header' %} ``` Текст общего шаблона встанет на место тега. Подробно о вариантах `scoped` и `with` — в описании тега [`include`](./advanced/tags#include). ## Библиотека макросов { #macros } Самый полезный прием — хранить в общем шаблоне [макросы](./advanced/tags#macro) и подключать их там, где нужно. Общий шаблон `utils`: ```template {% macro medal(place) -%} {%- if place == 1 %}🥇{% elseif place == 2 %}🥈{% elseif place == 3 %}🥉{% else %}{{ place }}.{% endif -%} {%- endmacro %} {% macro coins(n) -%} {{- n | number_format }} {{ plural(n, 'ru', 'монета', 'монеты', 'монет', 'монеты') -}} {%- endmacro %} ``` Команда: ```template {% include 'utils' %} {% set page = chat.indexes.balances.getPageOf(0, 10, 'DESC') %} {% for e in page %} {{ medal(loop.index) }} {{ mention(e.key) }} — {{ coins(e.value) }} {% endfor %} ``` Пустая строка внутри цикла отделяет строки топа друг от друга: в режиме Rich строки без пустой строки между ними Markdown может склеить в один абзац.