Все для создания и продвижения сайтов

Верстка, программирование, SEO

Форма обратной связи modx на MODX без спама

5004

Для создания формы на Modx без спама, надо её создать с дополнительными невидимыми полями:

1. Загружаем и устанавливаем компоненты Ajaxform и Formit

2. Форма вызывается очень просто, вы должны разобраться

[[!AjaxForm?
&snippet=`FormIt`
&form=`tpl.AjaxForm.example`
&hooks=`email,spam`
&emailFrom=`no-replay@daruse.ru`
&emailSubject=`Заявка с сайта https:  daruse.ru `
&emailTo=`info@daruse.ru`
&validate=`name:required,email:required,message:required,work-email:blank`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Спасибо за заявку! Мы свяжемся с вами в ближайшее время.`
&emailTpl=`mailtpl`
]]

Или через шабланизатор Fenom, вот так:

{$_modx->runSnippet('!AjaxForm', [
    'snippet' => 'FormIt',
    'form' => 'tpl.AjaxForm.example',
    'hooks' => 'email,spam'
    'emailFrom' => 'no-replay@daruse.ru',
    'emailSubject' => 'Заявка с сайта daruse.ru',
    'emailTo' => 'info@daruse.ru',
    'validate' => 'name:required,email:required,message:required,work-email:blank',
    'validationErrorMessage' => 'В форме содержатся ошибки!',
    'successMessage' => 'Спасибо за заявку! Мы свяжемся с вами в ближайшее время.',
    'emailTpl' => 'mailtpl',
])}

Описание параметров:

  • snippet - сниппет для обработки AjaxForm, ставим Formit - он как раз и отправляет письма
  • form - чанк оформления формы, стоит тот, который по умолчанию
  • hooks - хуки для защиты от спама
  • emailFrom - адрес, от которого приходит письмо
  • emailTo - адрес, которому приходит письмо
  • validate - валидация, тут также два невидимых поля
  • validationErrorMessage - сообщение, которые будет выводиться, при не успешном вводе полей
  • successMessage - сообщение, которые будет выводиться, при успешной отправке письма
  • emailTpl - чанк, в котором храниться шаблон приходящего письма на почту (о нём читайте ниже)

3. После этого заходим в наш чанк оформления формы, в данном случае это tpl.AjaxForm.example и добавим после тега form, следующие два поля.

<form action="" method="post" class="ajax_form af_example form-horizontal">
 <input  class="forminpun" type="hidden" name="nospam:blank" value="" />
 <input class="forminpun" type="hidden" name="work-email" value="" />
...
</form>

Теперь по Вашей форме не должен проходить спам, за счет двух новых полей.

4. Внешней вид приходящего письма

По умолчанию приходит на почту письмо без всякого форматирования в не очень читаемом формате. Поэтому давайте оформим немного наше письмо на примере.

Шаблон письма это простой чанк, который мы указываем в параметре emailTpl, тут всё очень просто, напишу пример оформления. Если будут вопросы, пишите в комментариях.

mailtpl:

<p style="font-size: 18px">На сайте <b>[[++site_url]]</b> оставили заявку.</p>
[[+name:notempty=`<p style="font-size: 18px"><b>Имя: [[+name]]</p>`]]
[[+email:notempty=`<p style="font-size: 18px"><b>Почта: [[+email]]</p>`]]
[[+message:notempty=`<p style="font-size: 18px"><b>Сообщение: [[+message]]</p>`]]
<p>Пожалуйста свяжитесь с ним в ближайшее время.</p>
<p>Не отвечайте на это письмо, так как оно автоматическое.</p>

Читайте о создании обратной формы на Ajax и php и простой обратной форме на php c защитой от спама.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.