Переменные в Markdown-шаблонах
Дорогие друзья, добро пожаловать в этот tutorial. В этом разделе мы шаг за шагом научимся использовать Markdown и шаблонизатор Handlebars для динамического отображения контента. В материале «Полезности Markdown-блоков» Вы уже познакомились с базовым синтаксисом, способами создания и подстановкой переменных, теперь же погрузимся в продвинутые возможности.
1 Знакомство с шаблонизатором Handlebars
После создания Markdown-блока в правом верхнем углу настроек Вы увидите параметр «Шаблонизатор» — по умолчанию там стоит Handlebars. Handlebars позволяет динамически выводить содержимое страницы по условиям, и Markdown тоже становится «реагирующим».

1.1 Зачем Handlebars
Markdown сам по себе поддерживает только статический контент, но через Handlebars можно по условиям (статус, число, опция) переключать тексты и стили. Так страница всегда показывает актуальную информацию даже в меняющихся бизнес-сценариях.
2 Практические сценарии
Рассмотрим несколько полезных сценариев и реализуем их шаг за шагом.
2.1 Обработка статуса заказа
В онлайн-демо часто нужно показывать разную подсказку в зависимости от статуса заказа. Допустим, в таблице заказов есть поле статуса со следующими значениями:

Содержимое для 4 статусов:
На странице мы получим значение статуса заказа и динамически выведем нужную информацию. Ниже подробно про синтаксис if, else и else if.
2.1.1 Синтаксис if
С помощью if показываем содержимое при выполнении условия. Например:
«Условие» использует синтаксис Handlebars (eq, gt, lt и т. д.). Простой пример:
См. эффект ниже:

2.1.2 Синтаксис else
Если условие не выполнено, можно через else указать альтернативное содержимое:
Эффект:

2.1.3 Несколько условий
Для нескольких условий используем else if. Пример:
Эффект:

2.2 Демонстрация результата
После настройки страницы её содержимое будет динамически меняться в зависимости от статуса. Смотрите ниже:

Код страницы:
Попробуйте переключать статус заказа и наблюдать за обновлением страницы — это покажет, верно ли работает Ваш код.
2.3 Отображение позиций заказа
Помимо статуса, часто нужно показать состав заказа (список товаров). Сделаем это через each.
2.3.1 Синтаксис each
each используется для перебора списка. Например, для массива [1,2,3]:
Внутри цикла {{this}} — текущий элемент, {{@index}} — текущий индекс.
2.3.2 Пример позиций товара
Если нужно показать все товары заказа:
Если данные не появляются, убедитесь, что поле «позиции заказа» правильно отображается, иначе система посчитает их неиспользуемыми и не подтянет.

Возможно, Вы заметите, что название товара (product.name) не выводится. Причина та же — нужно явно показать связанный объект товара.

После того как мы покажем поле, можно через правила связности скрыть его обратно.

2.4 Финальный результат: список товаров заказа
Завершив шаги выше, Вы получите готовый шаблон списка товаров заказа. Полный код:
Запустив, Вы увидите:

Чтобы лучше показать гибкость Handlebars, мы добавили в детали заказа поля «нет в наличии» (out_of_stock) и «заканчивается» (low_stock):
- При out_of_stock = true показывается «Нет в наличии», строка становится красной.
- При low_stock = true справа выводится «Заканчивается» оранжевым цветом.

3 Итоги и рекомендации
После этого материала Вы научились использовать Handlebars для динамического рендеринга Markdown-шаблонов: ключевые конструкции if/else, циклы each и т. д. В реальной разработке для более сложной логики рекомендуем сочетать правила связности, вычисляемые поля, workflow или узлы script — это повысит гибкость и расширяемость.
Тренируйтесь и применяйте техники в проектах. Вперёд, к новым воз можностям!
Если возникнут вопросы, заходите в сообщество NocoBase или загляните в официальную документацию. Удачной работы и успешного проекта!

