Шаблоны

Шаблоны позволяют генерировать как однострочные команды, так и целые блоки текста. Эти механизмы являются основой построения взаимодействий SHM.

Шаблоны рендерятся локально (сервером SHM), результат рендера может быть отправлен/выполнен с помощью Транспорта.

Шаблоны служат:

Введение

Синтаксис: {{ ОБЪЕКТ.ДАННЫЕ }}

Например, с помощью объекта user можно получить доступ к данным пользователя:

  • user.id - идентификатор пользователя
  • user.login - логин пользователя
  • user.balance - баланс пользователя

Используя эти функции мы можем написать такой шаблон:

Уважаемый клиент.
Ваш логин: {{ user.login }}
Ваш баланс: {{ user.balance }} руб.

В шаблонах поддерживаются условия и циклы, примеры использования вы можете увидеть здесь: Прогноз оплаты

Больше информации о шаблонизаторе Вы можете узнать здесь

Объекты и функции

Ниже приведен список методов для работы с SHM через шаблоны.

Достуность тех или иных методов зависит от контекста применения шаблона.

Подробнее о доступности методов описано здесь.

Пользователь

Метод Описание
user.id() Идентификатор пользователя (получить/установить)
user.switch( USER_ID ) Переключение пользователя на указанного (смена контекста)
user.login Логин пользователя
user.balance Баланс пользователя
user.credit Кредитный лимит пользователя
user.dogovor Договор пользователя
user.full_name ФИО пользователя
user.settings Получить settings пользователя
user.get_bonus Получить кол-во бонусов
user.income_percent Получить процент партнерских бонусов
user.add_bonus( КОЛ-ВО, КОММЕНТ ) Начисление бонусов
user.set_settings({ 'foo' => 1 }) Сохранить в settings пользователя произвольные данные
user.services Ссылка на услуги пользователя
user.gen_session.id Специальная функция для генерации идентификатора сессии
user.set_new_passwd Смена пароля пользователя. Вернет новый пароль
user.pays. Ссылка на платежи пользователя
user.delete Удаление пользователя (с нулевым балансом, без услуг)
user.items() Получить всех пользователей

Услуги пользователя

Метод Описание
us.id() Идентификатор пользовательской услуги (получить/установить)
us.name Имя пользовательской услуги
us.created Дата создания пользовательской услуги
us.expire Дата истечения пользовательской услуги
us.status Статус пользовательской услуги
us.settings Получить параметры пользовательской услуги
us.set_settings({ 'foo' => 1 }) Сохранить в settings услуги пользователя произвольные данные
us.set(FIELD, VALUE) Установка поля FIELD в значение VALUE. Пример: us.set('next', 123)
us.child_by_category(CATEGORY). Ссылка на дочернюю услугу определенной категории
us.finish( 'money_back', 1) Завершение услуги с возвратом средств (биллинг продлит или заблокирует услугу в зависимости от наличия средств)
us.block Принудительная блокировка услуги пользователя
us.activate Активация услуги пользователя после блокировки
us.delete Удаление заблокированной услуги пользователя
us.gen_store_pass Специальная функция для генерации и сохранения пароля в settings
us.parent. Ссылка на родительскую услугу пользователя
us.top_parent. Ссылка на самую верхнюю услугу пользователя
us.service. Ссылка на каталог услуг
us.withdraw. Ссылка на списание услуги
us.items() Получение списка услуг пользователя

Каталог услуг

Метод Описание
service.id() Идентификатор пользовательской услуги (получить/установить)
service.name Название услуги
service.cost Базовая стоимость услуги
service.period Период услуги
service.category Категория услуги
service.server Ссылка на сервер услуги
service.id( N ).name Получение имени услуги c идентификатором N
service.id( N ). Получение произвольного поля услуги c идентификатором N
service.api_price_list() Возвращает массив услуг из каталога
service.settings Получить settings услуги
service.set_settings({ 'foo' => 1 }) Сохранить в settings услуги произвольные данные
service.withdraw. Ссылка на объект списания
service.reg( service_id = N, check_allow_to_order = 1 ) Регистрирует услугу клиенту с идентификатором N
service.items() Получение списка услуг из каталога

Платежи

Метод Описание
pay.id() Получить/установить id платежа
pay.date Дата и время платежа
pay.money Cумма платежа
pay.pay_system_id Имя платежной системы
pay.comment Данные платежа
pay.last Получить ссылку на последний платеж
pay.forecast Возвращает JSON прогноза оплат услуг
pay.paysystems Получить список платежных систем
pay.items() Получение списка платежей

Бонусы

Метод Описание
bonus.items() Получение списка бонусов

Списания

Метод Описание
wd.id() Получить/установить id списания
wd.create_date Дата создания списания
wd.withdraw_date Дата списания списания
wd.cost Сумма
wd.discount Скидка
wd.bonus Кол-во бонусов
wd.months Период услуги
wd.total Итоговая стоимость
wd.service_id идентификатор каталога услуг
wd.user_service_id идентификатор услуги пользователя
wd.qnt Кол-во единиц товара
wd.items() Получение списка списаний

Сервера

Метод Описание
server.id() Получить/установить id сервера
server.name Имя сервера
server.host Host сервера
server.transport Транспорт сервера
server.settings Получение settings текущего сервера
server.set_settings({ 'foo' => 1 }) Сохранить в settings сервера произвольные данные
server.group. Ссылка на группу сервера
server.servers_by_group_id( N ) Получение списка серверов из группы N
server.items() Получение списка серверов

Группы серверов

Метод Описание
sg.id() Получить/установить id группы серверов
sg.name Имя группы серверов
sg.type Способ выбора серверов (random,by-one,evenly)
sg.transport Транспорт группы (local,ssh,http…)
sg.settings settings группы серверов
sg.set_settings({ 'foo' => 1 }) Сохранить в settings группы серверов произвольные данные
sg.items() Получение списка групп серверов

Шаблоны

Метод Описание
tpl.id Получить/установить id шаблона
tpl.id( NAME ).parse( 'usi', 123 ) Выполнить шаблон с именем NAME для пользовательской услуги с идентификаторм 123
tpl.data Данные шаблона
tpl.settings Получить settings шаблона

Хранилище

Метод Описание
storage.save( NAME, DATA ) Сохранить данные DATA в хранилище с ключом NAME
storage.load( NAME ) Получить данные из хранилища с ключом NAME
storage.del( NAME ) Удалить данные из хранилища с ключом NAME
storage.items() Получение списка данных

Конфигурация

Метод Описание
config.NAME Получить данные NAME из конфигурации

Telegram

Метод Описание
telegram.bot(TEMPLATE, CMD, [ARGS]) Выполнить CMD с аргументами ARGS из шаблона TEMPLATE

Задачи

Метод Описание
task Работа с задачами

Вспомогательные ф-ии

Метод Описание
params Аргументы вызова шаблона (http query string)
event_name Переменная содержит название текущего события
toJson() Функция преобразования объекта в JSON
toQueryString() Функция преобразования объектов в Query string
ref() Функция для преобразования данных в массив (устарела)
list_for_api() Функция для получения списков данных из объекта (устарела)
filter() Метод для точечной выборки данных (для items)
misc Вспомогательные ф-ии

Примеры

Изменено 17.11.2025: dnk: use new methods in templates (4d667d1)