---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://3y3.dev/en/syntax/vars.md
  - https://3y3.dev/ru/syntax/vars.md
  - href: ru/syntax/vars.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
updatedAt: '2025-10-02T21:19:53.000Z'
---
> **Documentation Index:** Fetch the complete configuration index at https://3y3.dev/ru/llms.txt

# Переменные и шаблонизация

## Переменные

Объявить переменную можно одним из способов:
* передать в настройках при [сборке документации](https://3y3.dev/ru/tools/docs/index.md#use);
* описать в [файле с пресетами переменных](https://3y3.dev/ru/project/presets.md).

Ниже рассмотрены варианты использования переменных в документе.

## Подстановки {#subtitudes}

Чтобы подставить значение переменной в текст, отделите ее имя с двух сторон двойными фигурными скобками.

```
Какой-то текст {{ имя_переменной }} продолжение текста.
```

<!-- source: ru/_includes/not_var-info.md -->
Если текст содержит двойные фигурные скобки, но не предполагает подстановку переменной, добавьте перед конструкцией `not_var`.
<!-- endsource: ru/_includes/not_var-info.md -->

```
Какой-то текст not_var{{ тоже_текст }} продолжение текста.
```

## Условные операторы {#conditions}

{% note warning %}

Чтобы применять условные операторы, в [файле конфигурации .yfm](https://3y3.dev/ru/settings.md) установите параметр `conditionsInCode` со значением `true`.

{% endnote %}

Вы можете использовать условные операторы `if`, `else` и `elsif`, чтобы включать в документ определенные фрагменты текста в зависимости от значения переменных. Например, чтобы собрать две версии документа для разных ОС.

```markdown translate=no
{% if  OS == 'iOS' %}

Скачайте приложение в [App Store](https://www.apple.com/ios/app-store/).

{% else %}

Скачайте приложение в [Google Play](https://play.google.com).

{% endif %}
```
Условные операторы могут применяться не только к блокам текста, но и к фрагментам текста внутри строк.

```markdown
Какой-то текст {% if  OS == 'iOS' %} Apple {% else %} Android {% endif %} продолжение текста.
```

### Поддерживаемые конструкции

Операторы сравнения: `== , != , > , < , >= , <=`

Логические операторы: `and , or`

Оператор `contains`:
* для строки A проверяет, что она содержит подстроку B
  ```
  {% if Object.title contains 'API' %}
  ```
* для массива A проверяет наличие в нём элемента B
  ```
  {% if keywords contains 'Extension' %}
  ```

## Циклы {#cycles}

Используйте циклы, чтобы выводить повторяющийся контент для каждого элемента массива. Внутри цикла обращайтесь к элементу как к обычной переменной, используя синтаксис для [подстановки](#subtitudes).

```
{% for имя_переменной in имя_массива %}

Какой-то текст {{ имя_переменной }} продолжение текста.

{% endfor %}
```
{% cut "Примеры использования циклов" %}

Пусть в [файле с пресетами переменных](https://3y3.dev/ru/project/presets.md) задан массив `users`:

```yaml
default:
  users:
    - Alice
    - Mark
```
Тогда использование циклов приведет к следующим результатам:
```markdown translate=no
Prefix {% for user in users %} {{user}} {% endfor %} Postfix
```
Prefix Alice Mark Postfix

```markdown translate=no
Prefix

{% for user in users %}

{{user}}

{% endfor %}

Postfix
```

Prefix
Alice
Mark
Postfix

{% endcut %}

## Фильтры {#filters}

Чтобы применить фильтр, добавьте к переменной оператор `|` и название фильтра. Оператор с двух сторон отделяется пробелами.

 Фильтр | Описание 
 --- | --- 
 `capitalize` | Приводит к верхнему регистру первую встретившуюся букву в значении переменной.
 `length` | Вычисляет длину значения переменной.

{% cut "Примеры использования фильтров" %}

Пусть в [файле с пресетами переменных](https://3y3.dev/ru/project/presets.md) заданы:
```yaml translate=no
default:
  user:
    name: alice
  users:
    - Alice
    - Mark
```

Тогда использование фильтров приведет к следующим результатам:

```markdown translate=no
Hello {{ user.name | capitalize }}!
```

Hello Alice!

```markdown translate=no
{{ users | length }}

{{ user.name | length }} | length
```
2

5

{% endcut %}

## Функции {#functions}

Чтобы вызвать функцию, добавьте к переменной символ `.`, укажите ее название и передайте необходимые параметры в скобках `()`.

Функция `slice(beginIndex, endIndex)` возвращает заданную часть исходного массива в виде нового объекта массива. 
Параметры:
   * `beginIndex` — индекс элемента, с которого начинается выделение (нумерация с 0).
   * `endIndex`— индекс элемента, на котором заканчивается выделение (нумерация с 0). 
Если параметр не указан, выбираются все элементы от начальной позиции и до конца массива.

{% cut "Примеры использования функций" %}

Пусть в [файле с пресетами переменных](https://3y3.dev/ru/project/presets.md) заданы:
```yaml
default:
  user:
    name: Masha
```

Тогда использование функций приведет к следующим результатам:
```markdown
Hello P{{ user.name.slice(1) }}!

Hello P{{ user.name.slice(1, 2) }}vel!
```
Hello Pasha!

Hello Pavel!

{% endcut %}
