Шаблоны
Описание
Шаблоны нужны, чтобы избавиться от дублирования кода и не описывать каждую карточку с нуля. При использовании шаблона можно указывать и переопределять все поля родительского элемента.
Если вы часто создаете карточки с одинаковым или похожим содержанием, то стоит сохранить их в виде шаблонов.
Шаблоны помогут вам:
-
тратить меньше времени на создание карточек;
-
сократить размер приходящего JSON;
-
уменьшить количество возможных ошибок и опечаток при создании карточек.
Без шаблона
{
"states": {
"state1": {
"data": {
"type": "container",
"direction": "vertical",
"paddings": {
"left": 4,
"top": 4,
"right": 4,
"bottom": 4
},
"items": [
{
"type": "image",
"width": {
"type": "fixed",
"value": "40",
"unit": "dp"
},
"height": {
"type": "fixed",
"value": "40",
"unit": "dp"
},
"image_url": "https://image.storage.net/icon.png"
},
{
"type": "text",
"font_size": 16,
"text": "Hello, World!"
}
]
}
}
}
}
С шаблоном
{
"templates": {
"image-with-text": {
"type": "container",
"direction": "vertical",
"paddings": {
"left": 4,
"top": 4,
"right": 4,
"bottom": 4
},
"items": [
{
"type": "image",
"width": {
"type": "fixed",
"value": "40",
"unit": "dp"
},
"height": {
"type": "fixed",
"value": "40",
"unit": "dp"
},
"$image_url": "icon_url"
},
{
"type": "text",
"font_size": 16,
"$text": "title_text"
}
]
}
},
"states": {
"state1": {
"data": {
"type": "image-with-text",
"icon_url": "https://image.storage.net/icon.png",
"title_text": "Hello, World!"
}
}
}
}
Примеры
Шаблоны можно использовать в сложных элементах (например, в контейнере с дочерними элементами). Тогда, чтобы изменить поля дочерних элементов, их нужно переименовать в параметрах: $имя_поля_в_элементе: новое_имя_поля
Отредактируем тип элемента gallery_item
с полем item_image_url
.
Пример переименования
{
"templates": {
"gallery_item": "container",
<...>
"items": [
{
"type": "image",
"$image_url": "item_image_url"
}
]
}
}
Пример использования
{
"type": "gallery",
<...>
"items": [
{
"type": "gallery_item",
"item_image_url": "https://<...>"
}
]
}
Особенности использования
Шаблоны можно наследовать друг от друга. Они подчиняются всем тем же правилам, что и при создании обычного шаблона.
Ограничения в шаблонах:
- Нельзя использовать системные имена в названии шаблонов и переменных. Например, нельзя завести шаблон
container
или полеtext
. - Можно шаблонизировать только базовые визуальные элементы.
- У шаблона обязательно должно быть поле
type
.
Узнать больше
Следите за новостями DivKit в Telegram-канале: http://t.me/divkit_news.
Также вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.