В Chronoforms 6 реализован новый механизм манипуляции данными формы, который существенно упрощает веб-мастеру целый ряд задач, для которых ранее требовался значительный объем php-кода. Теперь, используя команды chrono syntax (шоткоды), можно получать данные из запроса и передавать их любому элементу формы, будь то интерфейс управления полями, шаблон сообщения или операции с базой данных сайта.

Различные команды chrono syntax при составлении шоткода можно комбинировать. На текущий момент реализован один уровень их вложенности, который позволяет поместить между двумя фигурными скобками одного выражения другое, но уже с заменой собственных фигурных скобок на круглые. Также имеется возможность определения условий получения данных, а при их отсутствии, замены значений на значения по умолчанию.

Эти команды используются при настройке практически всех элементов управления полями форм обратной связи Chronoforms 6, в том числе при автоматической генерации некоторых, поэтому понимание принципов их составления и применения очень важно для успешного освоения компонента.

В этой статье приводится описание и синтаксис шоткодов, а также примеры их использования на формах обратной связи.

Описание и синтаксис шоткодов на формах Chronoforms 6


{view:field_name}

Используется вывода представления. Соответствующий элемент должен присутствовать на форме во вкладке «Конструктор (Design)».

Синтаксис:

  • -//-//-

{function:function_name} или {fn:function_name}

Используется для вызова функции, созданной во вкладке редактора форм «Настройка (Setup)».

Синтаксис:

  • -//-//-

Примеры:

  1. Вызов функции «PHP» из события «load» формы в коде функции пользовательского события.

{var:function_name}

Используется для получения доступа к переменной в результате срабатывания (!) функции, где function_nameимя функции, созданной во вкладке редактора форм «Настройка (Setup)».

Почти каждая обработанная функция (action) возвращает переменную результат. Типы возвращаемой переменной могут быть различными, как логические значения (true или false), так и массивы данных (array). Функция function_name, результат работы которой нужно получить, может быть вызвана  с помощью кода {function:function_name}.

Так, например, обработчик  Email возвращает в качестве результата логическое значение (true или false), а функция «Read data» вернет массив с содержимым полей таблицы БД.

Значение переменной доступно только после (!!!) обработки функции.

При использовании элемента PHP в соответствующем поле можно  использовать также следующий код для установки и получения переменных.

Синтаксис:

  • {var:function_name} — доступ к переменной.
  • {var.pr:function_name} — печать переменной.

Примеры:

  1. Получение массива данных, возвращаемых обработчиком «Read data» в коде функции «PHP» (php-альтернатива шоткоду).
  2. Загрузка массива, возвращаемого двумя функциями «PHP», в качестве значений для элементов «options» для поля с типом «radio».
  3. Получение элемента из массива, возвращаемого функцией «PHP».
  4. Получение элемента из массива, возвращаемого функцией «PHP» с помощью php-кода (альтернатива команде chrono syntax).

{event:event_name}

Используется для отображения содержимого события, которое должно быть установлено и может содержать HTML-код или другие инструкции CF6.

Синтаксис:

  • -//-//-

{data:parameter_name}

Используется для получения параметра url (все, что идет после символа «?») или входного значения поля формы.

Синтаксис:

  • {data:} — получение массива значений формы полностью. Может использоваться для сохранения значений всех полей формы в БД (например, когда используется функция-обработчик «Save Data»).
  • {data:array.field}  — получение элемента field из массива, который хранится в поле array.
  • {data:parameter_name}  — получение значения поля или параметра url.
  • {data:parameter_name/0}  — получение значения по умолчанию, если входного значения поля не существует.
  • {data.set:parameter_name$value} или {data.set:parameter_name$(var:function_name)} — установка value в качестве значения параметра.
  • {data.empty:parameter_name} — проверка пустых значений parameter_name, в результате которой возвращается true или false.
  • {data.count:parameter_name}  — получение количества элементов в массиве parameter_name (например, если parameter_name является групповым полем checkboxes).
  • {data.pr:parameter_name} или {data.pr:} — вывод (печать) содержимого parameter_name или всей формы в текстовом формате.
  • {data.br:parameter_name} — конвертация в содержимом текста parameter_name символов перевода каретки в теги разрыва строки <br> (например, для полей типа textarea).
  • {data.jsonen:parameter_name} — кодировка содержимого parameter_name в формат json.
  • {data.jsonde:parameter_name}  — декодирование содержимого parameter_name из формата json.
  • {data.join:parameter_name} или {data.join[,]:parameter_name} — объединение содержимого массива parameter_name и преобразование в одну строку.
  • {data.split:parameter_name} — разбивка содержимого parameter_name на массив элементов.
  • {data.clear:parameter_name} — очистка значения (установка null) в поле parameter_name.

При использовании функции-обработчика «PHP» или подобных элементов, где данные шоткоды применить не получится, можно использовать php-код в качестве альтернативы для получения или установки входных значений полей формы.

Примеры:

  1. Получение значения поля «dropdown» в коде функции «PHP» (альтернатива шоткоду на php).
  2. Передача значения переменной в поле «hidden» из кода обработчика «PHP» (php-альтернатива шоткоду).
  3. Установка значений заполненных пользователем полей формы в поля интерфейса функции «Email».
  4. Вывод значений текстовых полей формы в теле сообщения для страницы сайта, генерируемого с помощью функции «Message».

{date:}

Используется для получения текущей даты и времени или установки их необходимых значений в формате MySQL. Для получения или установки значений региона и временной зоны в качестве параметров требуется использование только тех значений, которые распознаются встроенными методами языка PHP (список поддерживаемых временных зон можно посмотреть здесь). В противном случае команда выдаст ошибку.

Синтаксис:

  • {date:} — получение текущей даты UTC в формате Y-m-d H: i: s.
  • {date:H:i} — передача строкового параметра php-форматирования для получения текущей даты и/или времени в виде H:i.
  • {date/site:} — установка часового пояса, используемого сайтом, в качестве значения часового пояса для использоания на форме.
  • {date:Y-m-d$(var:some_date_value_or_timestamp)} — передача переменной даты/времени some_date_value_or_timestamp для переформатирования ее/его значения в вид Y-m-d.
  • {date/time_zone:format_string} — установка временной зоны time_zone для текущего времени в формате format_string.
  • {date/region/time_zone:format_string} — установка региона region и временной зоны time_zone для текущего времени в формате format_string.
  • {date:format_string$+ xx days yy hours} — установка сдвига во времени в сторону увеличения/уменьшения (+/-) текущего значения на xx days yy hours и вывод в формате format_string.

Примеры:

  1. Установка московской временной зоны в теле функции «Custom code» для текущего времени и даты.
  2. Установка сдвига во времени на будущее и прошедшее значения в коде «Custom code».
  3. Форматирование времени, переданного в качестве переменной с помощью вложенной chrono syntax команды {data:}. Шоткод используется в поле «Тело документа» интерфейса управления функцией-обработчиком «Email».

{user:user_param}

Используется для получения информации user_param о текущем зарегестрированном пользователете, который просматривает страницу с формой.

Синтаксис:

  • {user:id} — получение идентификатора текущего зарегистрированного пользователя.
  • {user:username} — получение имени пользователя.
  • {user:email} — получение e-mail адреса пользователя.

{value:string}

Возвращает переданную строку string как значение php.

Синтаксис:

  • -//-//-

{session:parameter_name}

Используется для получения значения parameter_name, которое может устанавливаться, в том числе, с помощью функции «Save to session», созданной во вкладке редактора форм «Настройка (Setup)».

Синтаксис:

  • {session:variable_name} — получение переменной сеанса variable_name.
  • {session.set:var_name$value} — установка значения value для переменной сеанса var_name.
  • {session.clear:var_name} — очистка значения у переменной сеанса var_name.

При использовании функции-обработчика «PHP» или подобных элементов, где команды chrono syntax неприменимы, можно использовать php-код в качестве альтернативы для получения или установки значений переменных текущей сессии.

Примеры:

  1. Установка новой переменной сессии и присвоение ей значения с помощью шоткода.

{redirect:event_name} или {redirect:URL}

Используется для перенаправления на другое событие или на другой URL-адрес, а так же для передачи GET-параметров.

Синтаксис:

  • -//-//-

{url:}

Используется для получения URL-адреса соединения или события.

Синтаксис:

  • {url:_self} — получение переменной адреса текущей страницы.
  • {url:event_name} — получение относительного адреса события event_name.
  • {url/full:event_name} — получение абсолютного адреса события event_name.
  • {url:event_name$param_name=value} — передача входного значения value GET-параметру param_name, с которым оперирует событие event_name.

Примеры:

  1. Получение URL-адреса текущей страницы в качестве входного значения для функции «Redirect».

{path:}

Используется для получения пути к определенному каталогу в файловой системе сайта. Следует обратить внимание, что при просмотре пути со стороны серверной части сайта, выходная строка будет включать в себя также и папку «administrator».

Синтаксис:

  • {path:root} — получение пути к корневой папке сайта (например: /home/my_domain/my_domain.name).
  • {path/url:} — получение URL-адреса к папке chronoforms (например: https://my_domain.name/components/com_chronoforms6/chronoforms).
  • {path:} — получение пути к папке chronoforms (например: /home/my_domain/my_domain.name/components/com_chronoforms6/chronoforms).

{type_of_message:text}

Используется для вывода системных сообщений Joomla указанного типа type_of_message с содержимым text

Синтаксис:

  • {error: text} — сообщение об ошибке.
  • {success: text} — сообщение при успешном завершении задачи.
  • {info:text} — информационное сообщение.
  • {warning:text} — предупреждение.

Примеры:

  1. Вызов сообщения с помощью echo в коде обработчика «PHP».

{stop:} или {end:}

Используется для остановки исполнения любого кода, следующего после точки размещения.

Синтаксис:

  • -//-//-

Примеры:

  1. Остановка исполнения скрипта формы в коде функции «Custom code».

{lang:localized_variable_name} или {l:localized_variable_name}

Используется для вывода языкового перевода, представленного в качестве значения языковой переменной localized_variable_name с использованием активного языка сайта. Текстовые переводы должны быть определены во вкладке «Локализации» (Locales) редактора формы.

Синтаксис:

  • -//-//-

Примеры:

  1. Вызов переменных локализации в метке поля «dropdown», а также для элементов «options».

{page:param}

Используется для получения параметра param текущей страницы (посещаемой пользователем), на которой расположена форма.

Синтаксис:

  • {page:url} — получение ссылки на текущую страницу с формой.
  • {page:title} — получение заголовка текущего материала Joomla, на странице которого расположена форма.

Примеры:

  1. Передача заголовка текущей статьи с формой в поле интерфейса управления визуальным элементом «hidden».

{debug:}

Используется для вывода отладочной информации о текущем шаге процесса обработки события формы.

Синтаксис:

  • -//-//-

Примеры:

  1. Вывод отладочной информации в коде функции «Custom code» события «submit».

{uuid:}

Генерирует хэш-строку из 36 символов (5 блоков, разделенные знаком «-»), которая может использоваться в качестве универсального уникального идентификатора в процессе манипуляций над данными формы.

Синтаксис:

  • -//-//-

{rand:}

Используется для получения рандомного 10-значного целого числа (интервал не поддерживается).

Синтаксис:

  • -//-//-

Примеры:

  1. Генерация случайного числа в коде обработчика «Custom code».

{ip:}

Используется для получения и вывода IP адреса текущего пользователя в формате строки.

Синтаксис:

  • -//-//-

Примеры:

  1. Получение и вывод текущего IP-адреса пользователя в поле «Text field» формы.
***

На данный момент работа над материалами статьи продолжается…