Руководтсво администратора/разработчика
Документация
Функции
Расширенные
Функции взаимодействия разных компонентов системы
output
Формирование значений
Функция output производит извлечение свойств переменной конфигурации и формирует значение на основании полученных в контексте данных.
Формат
output element congiguration data type
element - название элемента конфигурации
congiguration - объект конфигурации
data - контекст (объект данных, на основании которого будет формироваться значение
type - формат ответа.
- по-умолчанию (пустое значение) - тестовый форма вывода.
- html - выводит преобразованный в формат html. Необходимо в случае наличия в ответе HTML-разметки, в противном случае данный HTML-ответ будет экранирован для обеспечения требований безопасности.
Пример:
{{$f1 := output "field" . $data ""}}
В данном примере в переменную $f1 передается значение, которое было описано в элементе field конфигурации. В качестве данных для его получения был использован текущий контекст (.). Данные выводятся в текстовом формате.
parseparam
Обработка вложенных операций
При разработке когфигурации Блока возникают ситуации, когда необходимо значение одного параметра вложить в другой. Это делается инструацией %параметр%
Пример конфигуации:
{
"id":{"type":"text","source":"123-123-123"},
"url":{"type":"text","source":"/path=%id%"}
}
В этом примере видно, что в переменную id было положено значение "123-123-123" и оно будет передано в переменную url в том месте, где указана конструкция %id%.
Для обработке переменной url в Шаблоне необходимо "распарсить" данную переменную, т.е. произвести вычисление переменной id и вставить ее в необходимое место в переменной url, исходя из текущего контекста:
{{ parseparam "переменная" "конфигурация" "данные" "тип_вывода"}}
- переменная - название переменной из конфигуации, которая содержит внутри себя конструкцию %...% будет "распарсена"
- конфигурация - объект конфигурации текущего блока
- данные - объект данных, которые будут использоваться при преобразовании
- тип вывода - данные могут быть получены в текстовом формате или в формате HTML
Пример
{{$parsedurl := parseparam "url" $.Configuration $data ""}}
Примечание: Данный пример упрощен для понятия, на самом деле можно просто вручную внести данные 123-123-123 :) Но как правило, переменная id может принимать значения данных полей из контекста.
dict
Мультиплексирование параметров
Фукнцкия dict производит мультитпликсирование передаваемых параметров при передаче в шаблонах нескольких параметров, а также может создания структур данных внутри Шаблона.
dict key1 value1 key2 value2 ....
key1 - ключ
value1 - значение
.... - количество пар может быть неограниченным
Пример мультиплексирования шаблоне:
{{template "sub-template" dict "Data" . "Values" $.Values}}
где, "sub-template" - название шаблона, в который передаются значения
"Data" - название параметра, в который будет передано значение_1
. - переданные значения (в данном примере - текущий контекст)
"Values" - название параметра, в который будут передано значение_2
$.Values - передаваемые значения (в данном примере структура Values из корневого контекста ($)
Пример создания переменной структуры:
{{ $new_structure := dict "param" "value" }}
set
Задать значение в структуре
Функция set создает новое/меняет значение в имеющейся структуре. Возвращает текущую структуру, в которую добавлялось поле.
Формат:
set struct key value
struct - структура
key - ключ в структуре (строка)
value - значение (любые значения)
Пример:
{ $_ := set $.Value "fisher" "Грека"}
В данном примере в структуру Value из полученного контекста мы добавили поле "fisher" и положили значение "Грека".
Примечание: Чтобы не отображать возвращаемое функцией значение мы присваеваем его нулевой переменной "$_"
get
Получение значения структуры
Функция get получает значение в имеющейся структуре. Возвращает текущуее значение поля.
Формат:
get struct key
struct - структура
key - ключ в структуре (строка)
Пример:
{ $res := get $.Value "fisher"}
>> Грека
В данном примере из структуры Value будет получено значение поля "fisher" - "Грека".
confparse
Обработка @-функции внутри конфигурации
Функция confparse производит обработку @-функций внутри конфигурации.
Формат:
confparse ConfigurationRaw Request Data
ConfigurationRaw - системная переменная, содержащаю "сырую" конфигурацию (без обработки @-функций.
Request - системная переменная запроса
Data - переменная, которая содержит контекст данных, которые будут использованы при обработки @-функций конфигурации.
Пример:
{{$ConfigurationNew := confparse $.ConfigurationRaw $.Request $Data}}
Описание:
Конфигурация, доступная в переменной $.Configuration в HTML-шаблоне и имеющая @-функции, обрабатывается при генерации формы. При обработки выполняются все @-функции с использованием текущего контекста. В момент генерации формы этот контект - объект страницы формы.
Бывают ситуации, когда в конфигурации мы прописываем значения переменных для других вариантов вывода данных, например при выводе встроенной в форму таблицу блока.
В этом случае, значение переменной (например uid-объекта "uid":{"type":"text","source":"2019-12-20T10-33-43Z-ca7908"},) в конфигурации будет содежать uid-объекта формы, а нам необходимо получать uid-перебираемых объектов. (конечно, всегда можно напрямую обратиться к свойству uid объекта внутри HTML-шаблона, но предположим, что мы хотим это значение задавать через переменную конфигурации)
Для этих целей существует текстовая переменная контекста $.ConfigurationRaw, которая содержит конфигурацию, без обработанных @-фукнций.
Для ее обработки необходимо добавить ее в цикл получения объектов и выполнять обработку @-функций внутри конфигурации при каждой итерации с новым объектом.
sendmail
Отправка email-письма со страницы
Функция sendmail позволяет отправить email при вызове страницы. Возвращает значение true (сообщение отправлено) или сообщение ошибки отправки (описание ошибки).
Формат:
sendmail server port user pass from to subject message turbo
- server - почтовый сервера (например: smtp.gmail.com)
- port - номер smtp-порта почтового сервера (строка)
- user - пользователь почтового сервера
- pass - пароль пользователя на почтовом сервере
- from - от кого отправляется (email-адрес)
Можно указать только email-адрес (без указания имени отправителя, например petrov@mail.ru), а можно указать email-адрес с именем пользователя (формат: Петров Илья [petrov@mail.ru] или Петров Илья <petrov@mail.ru>) - to - кому (можно несколько через запятую - , )
Можно указать только email-адрес (без указания имени получателя, например petrov@mail.ru), а можно указать email-адрес с именем получателя (формат: Петров Илья [petrov@mail.ru] (или Петров Илья <petrov@mail.ru>) или несколько через запятую: Петров Илья [petrov@mail.ru], Иванов Илья [ivanov@mail.ru] (или Петров Илья <petrov@mail.ru>) - subject - заголовок письма
- message - сообщение может быть как в текстовом формате, в формате html, а также ссылкой на html-версию письма (передается только адрес), которое будет в момент отправки загружено и отправлено получателю.
Обратите внимание, что для корректного отображения письма получателем необходимо, чтобы все ссылки имели полные адреса (например: http://yoursite.ru/img/foto.jpg) - turbo - режим турбо-отправки (значения: true/false или on/off или пустое значение - выключено). Турбо-режим не дожидается завершения отправки, а сразу продолжает генерацию страницы. Удобен, если вы уверены в том, что письмо дойдёт или статус доставки не должен обрабатываться на странице, которая вызвала отправку письма (всегда вернёт true).
Пример
{{$mes := "Текст отправляемого сообщения"}} {{$ressend := sendmail "smtp.gmail.com" "587" "sendaccount@gmail.com" "12345" "Петров [fromuser@gmail.com]" "Иванов [touser@gmail.com], Сидоров [touser2@gmail.com]" "Новое в итальянской кухне" $mes "" }} {{if eq $ressend "true"}} Отправлено {{end}} >> Отправлено
Примеры различных вариатов отправки
{{$mes := "Текст отправляемого сообщения"}} - отправляем текстовое сообщение {{$mes := "<h1>Текст</h2> отправляемого сообщения"}} - отправляем сообщение в html-формате {{$mes := "http://your_site.com/templates/template_mail.html"}} - отправляем ссылку на получение подготовленной версии письма в html-формате
dogparse
Обработка @-функций в шаблонизаторе
Функция dogparse позволяет обрабатывать системные @-функции внутри html-кода страницы применительно к строковым значениям.
Формат:
dogparse string request data
string - строка, в которой содержатся @-фукнции
request - системное значение состояния запроса ($.Request)
data - данные, которые могут быть использованы при обработки @-функции (как правило полученные из запроса)
Пример
{{ $str := "Идентификатор пользователя = @User(UID)" }} {{ dogparse $str $.Request $.Data.default.Data }} >> Идентификатор пользователя = cf8f33e4-1fed-4521-9515-23d5b77e0345