---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/Template.md
  - https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Template.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/jsapi-v2-1/doc/ru/llms.txt

# Template

Шаблонизатор. В API Яндекс Карт поддерживается базовый синтаксис языков шаблонов Twig/Django Templates. Поддерживаются следующие операции:

- Подстановка значения — `{{ field_name }}`.
- Если запрашиваемое поле данных отсутствует или имеет пустое значение, то можно предусмотреть стандартное значение — `{{ field_name|default:default_value }}`. Значением по умолчанию может быть число, строка (записывается в кавычках) или другое поле данных.
- По умолчанию значение обрабатывается функцией escape для предотвращения XSS уязвимости. Для отмены поведения необходимо добавить фильтр **"raw"** filter - `{{ field_name|default: default_value|raw }}`.
- С помощью [template.filtersStorage](https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/template.filtersStorage.md) можно создавать свои фильтры и использовать их аналогично описанным выше.
- Для вставки подмакета необходимо использовать конструкцию `{% include  field_name_or_key %}`. Шаблонизатор, встретив такую конструкцию, попытается использовать значение в поле как ключ вложенного макета.
- Условие записывается в виде:
    
    ```
    {% if condition %} ... ... {% else %} ... {% endif %}
    ```
    
    Блоки **else** и **elseif** можно опустить. Внутри блоков **if**, **else** и **elseif** можно использовать любые конструкции языка шаблонов.
    
- Для выполнения итерации по массиву или по объекту нужно использовать конструкцию **for**.
    
    ```
    {% for value in array_or_hash %} ... {% endfor %}
    ```
    
    Внутри блока **for** можно использовать любые конструкции языка шаблонов.
    
- Для получения номера итерации в массиве или имени поля в хеше нужно использовать конструкцию:
    
    ```
    {% for значение в массив_или_хеш %} ... {% endfor %}
    ```
    
- Вы можете добавить дополнительную проверку на опасные аттрибуты `onload` и `onerror` с помощью комментария sanitize в шаблоне. При наличии этого комментария шаблонизатор покажет ошибку если один из этих аттрибутов будет в шаблоне, в противном случае в будет warning в консоли.

[Конструктор](#constructor-summary) | [Методы ](#methods-summary)

## Конструктор {#constructor-summary}

```javascript
Template(text)
```

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`text`](#param-text)[*](*star) | — | Тип: String

Строка-шаблон. ||
|#

\* Обязательный параметр/опция.

**Примеры:**

**1.**

```javascript
// Получим имя пользователя из менеджера данных data.Manager.
// Если имя не задано, то в результате получится строка «Незарегистрированный пользователь».
var data = new ymaps.data.Manager({
         user: {
             name: "Виктор",
             age: 25
         },
         home: [55.72725771214265, 37.640390506634006]
     }),
    var template = new ymaps.Template('{{ user.name |default: "Unregistered user"}}');
    var result = template.build(data);

var result = template.build(data);
console.log(result.text); // Выведет в консоль «Виктор».
```

**2.**

```javascript
// Предположим, что у нас есть 3 группы пользователей, и нам нужно напечатать индивидуальное приветствие для каждой группы.
var data = new ymaps.data.Manager({
    groups: {
        administrator: {
            id: 1,
            name: "administrator"
        },
        moderator: {
            id: 2,
            name: "moderator"
        },
        user: {
            id: 3,
            name: "user"
        }
    },
    userGroupId: 2
});
var template = new ymaps.Template('Hi, \
    {% if (userGroupId == 1) %}{{ groups.administrator.name }}\
    {% elseif (userGroupId == 2) %}{{ groups.moderator.name }}\
    {% elseif (userGroupId == 3) %}{{ groups.user.name }}\
    {% else %}guest{% endif %}!'
);

var result = template.build(data);
console.log(result.text); // Выведет «Привет, модератор!» в консоль.
```

**3.**

```javascript
// С использованием комментария sanitize 
var template = new ymaps.Template('<!--sanitize--><div>Привет!</div>');
```

## Методы {#methods-summary}

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [build](https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Template.md#build)([data](https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Template.md#build-param-data)) | Object | Возвращает объект со следующими полями:
- {String} text — результат выполнения шаблонизации;
- {Object[]} renderedValues — массив c использованными данными из менеджера. ||
|#

## Описание методов {#method_detail}

### build {#build}

```javascript
{Object} build(data)
```

**Возвращает** объект, содержащий следующие поля:
- {String} text — результат выполнения шаблонизации;
- {Object[]} renderedValues — массив c использованными данными из менеджера.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`data`](#build-param-data)[*](*star) | — | Тип: [IDataManager](https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IDataManager.md)

Менеджер данных. ||
|#

\* Обязательный параметр/опция.

**Пример:**

```javascript
// Получим адрес дома из имеющихся координат и выведем по шаблону
// всех его жильцов в формате: «имя: возраст».
var data = new ymaps.data.Manager({
         users: [
             {name: "Виталий", age: 40},
             {name: "Георгий", age: 20}
         ],
         home: {
             coords: [55.736652, 37.620589],
             address: null
         }
     }),
     var template = new ymaps.Template('{{home.address}}: <ul>{% for user in users %}<li>{{user.name}}: {{user.age}}</li>{% endfor %}</ul>');

// Сделаем обратное геокодирование с помощью geocode.
ymaps.geocode(data.get('home.coords')).then(function (res) {
     var address = res.geoObjects.get(0).properties.get('name');
     // Установим в менеджер полученный адрес.
     data.set('home.address', address);

      // Соберём шаблон из имеющихся данных.
     var result = template.build(data);
      // Выведем результат в консоль.
     console.log(result.text);
});
```

<!-- XLIFF_FARM_NTIyNTZj_CACHING -->

[*star]: Обязательный параметр.