Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Как настроить сниппет для отправки почты


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

Мы используем сниппет eForm и воспользуемся его возможностями.


eForm - сниппет входящий в стандартную поставку Modx.  Он отвечает за обработку данных, которые пользователи вводят в формы на сайте. Полученные данные можно отослать по электронной почте используя формат html, вложения, автоответчик, а также расширенную обработку данных и генерацию настраиваемых отчетов.

Сниппет имеет множество настраиваемых параметров. Все параметры мы описывать не будем, как всегда остановимся на тех, которые нам пригодятся.  А что же нам  потребуется?


Шаблоны

Форма ввода

Задается параметром &tpl. Это имя чанка  для используемого шаблона формы ввода.

Текст письма

Задается параметром &report. Это название чанка  для шаблона текста обращения, поступающего на обработку.

Благодарность

Задаётся параметром  &thankyou (необязательно). Это название чанка (не число) или идентификатор документа (число) для используемого шаблона сообщения выводимого пользователю после отправки данных формы.

 Автоответ

Задается параметром &automessage (необязательно). Это название чанка (не число) или идентификатор документа (число) для используемого шаблона в сообщении автоответчика. Может содержать поля формы.Мы решили, что для официального сайта такой ответ не нужен.

   

Адреса

 
Куда посылать письмо

Задается параметром  &to (необязательно). Это адрес e-mail на который будет послана информация. Можно использовать несколько адресов разделяя их запятой. Если не указано, то будет использован системный адрес.

Адрес отправителя

Задается параметром &from (необязательно). Вот здесь мы и можем вписать фиктивный обратный адрес e-mail, общий для всех писем с сайта. А параметром &fromname (необязательно) мы можем задать"человеческое" название отправителя письма.

Адрес автоответчика

Задается параметром &autosender (необязательно). Это адрес электронной почты, который показывается при отправке сообщения автоответчика. Например: no-reply@mydomain.com. Если решим, что автоответчик нужен, зададим такой параметр. А имя, используемое в сообщении автоответчика, будет задано параметром &autoSenderName.

Куда отвечать

Задается параметром &replyto (необязательно). Это электронный адрес или поле содержащее адрес, который будет использован в письме для ответа.



Проверка ввода данных


eForm имеет встроенный анализатор определяющий формат и тип данных с соответствующей проверкой каждого поля. Для настройки используется добавление дополнительного параметра eform в необходимые поля.

Базовый вид параметра eform следующий:

[description/title]:[datatype]:[required]:[validation message]:[validation rule] 

Например, поле для ввода адреса электронной почты может быть записано так 

<div class="element">
<input type="text" name="fbEMail" id="fbEMail"
eform="EMail:email:1:EMail » Некорректный адрес электронной почты." value="" />
</div>

Здесь в параметре eform записаны с разделителями двоеточие аргументы. Это поле требуемое - третий аргумент - 1. Если его установить в 0, то ввод адреса email будет необязательным. А вот правило проверки не задано.

Введем поле почтового адреса:

<div class="element"><input type="text" name="fbAddress" id="fbAddress" eform="Адрес::1:Адрес должен содержать не менее 10 символов.:#FUNCTION fbValidateText" value=""></div>

  Здесь мы включили проверку наличия почтового адреса, и записали правило проверки - :#FUNCTION fbValidateText. Где же эта функция находится? А хоть где - лишь бы была доступна в момент обработки. Сниппет позволяет подключать и дополнительные библиотеки. Вид этой функции может быть такой:

function fbValidateText($value) { return strlen($value)>=15; }

Функция должна использовать только одно значение (значение поля) и возвращать TRUE или FALSE.  Если функция проверки не задана или не существует, выполняются штатные минимальные проверки в зависимости от типа данных:

а) Все поля автоматически проверяют на пустоту значений.

б) Дополнительные проверки:

  • string - не имеет специальной проверки кроме пустоты и обязательности заполнения.
  • date - проверяется на правильность формата даты (основано на функции strtotime()).
  • integer - проверяется на числовое значение (не проверяется, если оно целое).
  • float - проверка на числовое значение.
  • email - проверяет правильность адреса email с использованием регулярных выражений.
  • file - (для поля загрузки файла) - проверяет соответствие разрешенному размеру, на текущий момент не имеет проверки типов файлов.
  • html - также как тип string только перенос строки преобразуется в тэг

Выпадающие списки, чекбоксы, и радиобатоны не требуют определения типа. eForm определяет их автоматически.


 

14-02-2009 00:29:27



    Содержание раздела «Настройка eForm»:
Комментарии любых посетителей

Написать комментарий