Modx revolution создание формы обратной связи с помощью formit. Обратная связь modx revo


Как сделать форму обратной связи в ModX Revolution с помощью FormIt

Итак сегодня мы начинаем наш 9 урок MODX Revolution для новичков. Сегодня мы рассмотрим как создать простую контакт форму на нашем вебсайте используя сниппет FormIt. В предыдущем уроке мы ознакомились с работой Wayfinder. Научились делать вывод динамического меню с этим сниппетом. Сегодня опираясь на некоторые ваши знания о сниппетах попытаемся разобраться со сниппетом FormIt, урок будет довольно-таки длинным, поэтому сразу настраиваемся на интересную и плодотворную работу.

Что такое FormIt?

FormIt – это сниппет, который позволяет строить динамические формы всередине MODX Revolution. Если вы используете MODX Evolution, то вы возможно уже использовали eForm для генерирования и обработки своих форм. FormIt – это MODX Revolution эквивалент сниппета eForm, но это абсолютно иной сниппет.

Почему использовать именно FormIt?

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

Загрузка и установка FormIt

Знакомый нам по предыдущим урокам процесс, здесь я не буду останавливатся. Думаю у вас прекрасно пройдет установка и без объяснений.

Подготовка шаблона

Я надеюсь, что сейчас вы уже прошли предыдущие уроки и портировали шаблоны внутренних страниц в вашем MODX сайте. Если вы используете тот же шаблон что и я, то вы увидите, что страница контактов является php страницой с PHP скриптами. Если вы использовали этот шаблон для построения статического сайта, то это будет как раз кстати, так как вы будете использовать для построения вашей формы существующий PHP код. В то же время, так как мы портируем наш шаблон в MODX, то нам не нужен этот код PHP, так как сам MODX разберется с построением всех наших форм. Всё, что нам нужно, – это HTML код формы и затем мы используем FormIt, который сделает всю остальную работу.

Посмотрите на статическую страницу контактов, которая идет вместе с нашим шаблоном:

Форма контакта

Нашей задачей является портирование этой функциональности в MODX так, чтобы контакт форма сохранила свой внешний вид и вывод, но работа её полностью осуществлялась MODX. Ну что ж, начнём…

Первое, что необходимо сделать – это убрать HTML/CSS код и портировать его в MODX, если вы это уже не сделали. Так как моя контакт страница – это на самом деле PHP скрипт, то я просто открыл эту страницу в браузере и посмотрел исходный код. Это позволило мне увидеть простой выводимый HTML без кода PHP. Далее я скопировал данный код и вставил его в MODX для формирования шаблона моей страницы контактов. Дальше я по обычной схеме использовал несколько чанков для упрощения работы, то как мы уже делали на предыдущих уроках. И вот что у меня получилось:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head profile="http://gmpg.org/xfn/11"> [[$7in1-header]] </head> <body> [[$7in1-logo-nav-search-bar]] <div> <div> <div> <div> <h3>[[*pagetitle]]</h3> <div> <p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enijusto, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pedemollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.Aenean vulputate eleifend tellus.</p> </div> </div> <br /> <div></div> <div> <div>Address:</div> <div>123 Street Name, Suite #</div> <div></div> <div></div> <div>City, State 12345, Country</div> <div></div> <div>Phone:</div> <div>(123) 123-4567</div> <div></div> <div>Fax:</div> <div>(123) 123-4567</div> <div></div> <div>Toll Free:</div> <div>(800) 123-4567</div> <div></div> </div> <div></div> <div> [[*content]] </div><!-- end contact-wrapper --> </div> <!-- end page_content --> <div> [[$7in1-contact-sidebar]] <!-- end sidebar --> </div> <!-- end container_bkgnd_btm --> </div> <!-- end page_container --> <div></div> <div> </div> [[$7in1-bottomwidgets]] <div> </div> [[$7in1-footer]] </body> </html>

Я сохранил этот шаблон под названием 7in1-contact и назначил его шаблоном страницы контактов.

Вы узнаете некоторые из чанков (шапка и подвал) из наших предыдущих уроков, а также появилось несколько новых чанков. Я укажу вам их для просмотра, они будут полезны тем, кто использует этот же шаблон, что и я.

Важной особенностью здесь является та, что я заменил текст Contact в h3 тегах чанком [[*pagetitle]], который всплывет в вашей памяти, если вы внимательно прошли мои уроки.

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

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

Приступим к нашей форме. Для начала я заменил HTML код для формы, который содержался между div тегами “contact-wrapper” и заменил его тегом [[*content]]. Это значит, что всё в основном поле контента появится в моей странице контактов на этом месте. Поэтому сейчас страница контактов будет иметь такой вид:

Форма контакта

Видно, что там где должна быть форма, сейчас находится текст, который я вставил в область контента страницы контактов при её создании. Как видно на странице этот текст заключён в светлобежевый контейнер.

Как использовать сниппет FormIt

Итак, чтобы FormIt заработал, вам необходимо разместить вызов сниппета и HTML код формы в месте контакт формы. Если вы используете eForm сниппет MODX Evolution, то вам необходимо создать tpl шаблон для вашей формы, а затем вызвать его в сниппете, но при использовании FormIt вам не нужно вызывать форму в сниппете, вместо этого вы размещаете форму после вызова сниппета.

Давайте взглянем на вызов сниппета. Документация FormIt официального сайта MODX содержит отличный пример формы контакта и мы модифицируем его и используем в нашем случае. Будет полезно почитать документацию по этой ссылке http://rtfm.modx.com/display/ADDON/FormIt

Первое, что вы видите, когда смотрите на документацию – это то, что вам необходимо определить хуки вашего FormIt вызова. Хуки – это скрипты, которые срабатывают при вызове вашего сниппета. Вы можете связывать их вместе, но важно знать, что они исполняются последовательно и если один выдаст ошибку, то не сработают и остальные. Существуют предхуки и обычные хуки, но сейчас нас будут интересовать только нормальные хуки, которые запускаются после подтвержения и обработки формы. Вы можете создать собственные пользовательские хуки, но пока будем использовать обычные хуки.

Первый необходимый хук, который посылает электронную почту – это email и он имеет несколько параметров задокументированных здесь (http://rtfm.modx.com/display/ADDON/FormIt.Hooks.email). Выберите нужные для создания формы контактов параметры. Давайте сформируем наш вызов сниппета:

[[!FormIt? &hooks=`email` &emailTpl=`sentEmailTpl` &emailSubject=`Message from Learn MODx Revo Website` &emailTo=`[email protected]` ]]

Как видно мы использовали вызов сниппета с одним хуком – email, и определили для него три параметра &emailTpl, &emailSubjectи &emailTo. Убедитесь что параметру &emailTo вы присвоили ваш email адрес вместо показаного в примере [email protected].

Параметр emailTpl определяет чанк, который содержит шаблон для сообщения высылаемого формой. Перед созданием этого чанка нам нужно добавить форму, которую будет заполнять пользователь. Как я уже сказал до этого, мы будем использовать код HTML для формы, который содержался в нашем шаблоне и модифицируем его для работы с вызовом нашего сниппета FormIt call. Сырой код выглядит вот так:

<form method="post" action="#contact-wrapper"> <strong>Please use the form below to send us an email:</strong> <div> <label for="contact_name">Name </label><em>(required, at least 2 characters)</em><br /> <input name="contact_name" size="30" minlength="2" value="" /> </div> <div> <label for="contact_email">E-Mail </label><em>(required)</em><br /> <input name="contact_email" size="30" value="" /> </div> <div> <label for="contact_phone">Phone </label><em>(optional)</em><br /> <input name="contact_phone_NA_format" size="14" value="" maxlength="14" /> <label for="contact_ext">ext. </label> <input name="contact_ext_NA_format" size="5" value="" maxlength="5" /> </div> <div> <label for="contact_message">Your comment </label><em>(required)</em><br /> <textarea name="contact_message" cols="70" rows="7"></textarea> </div> <div> <input name="submit" type="submit" value="Submit"/> </div> </form>

Нам нужно немного изменить эту форму, чтобы FormIt мог ее обработать. Первое, что мы сделаем – это поменяем поменяем действие, чтобы оно указывало на текущую страницу, так как именно здесь находиться вызов сниппета FormIt. Мы делаем ссылку на текущую страницу используя синтаксис MODX Revo: [[~[[*id]]]]. Если вы посмотрите внимательно на этот вызов, то увидите то, что внутренний блок – это просто тег для ID поля: [[*id]] и внешняя часть – это тег для привязки url, например: [[~123]]

Во-вторых, поменяем форму вложив в соответвтвующие FormIt заполнители в значения атрибутов каждого элемента поля для замены статических битов.

Результат выглядит приблизительно так:

<form method="post" action="[[~[[*id]]]]"> <strong>Please use the form below to send us an email:</strong> <div> <label for="contact_name">Name </label><em>(required, at least 2 characters)</em><br /> <input name="contact_name" size="30" minlength="2" value="[[!+fi.contact_name]]" /> </div> <div> <label for="contact_email">E-Mail </label><em>(required)</em><br /> <input name="contact_email" size="30" value="[[!+fi.contact_email]]" /> </div> <div> <label for="contact_phone">Phone </label><em>(optional)</em><br /> <input name="contact_phone_NA_format" size="14" value="[[!+fi.contact_phone_NA_format]]" maxlength="14" /> <label for="contact_ext">ext. </label> <input name="contact_ext_NA_format" size="5" value="[[!+fi.contact_ext_NA_format]]" maxlength="5" /> </div> <div> <label for="contact_message">Your comment </label><em>(required)</em><br /> <textarea name="contact_message" cols="70" rows="7">[[!+fi.contact_message]]</textarea> </div> <div> <input name="submit" type="submit" value="Submit"/> </div> </form>

Быстрый способ это сделать можно сравнив вашу контактную форму с формой представленной в документации FormIt. Также вы можете начать с формы в документации и в ней просто поменять классы для соответсвия вашей форме.

Далее разместите вызов сделанного нами сниппета в области контента вашей страницы Contact, а далее вставьте ваш код формы после вызова сниппета. Область контента должна содержать:

[[!FormIt? &hooks=`email` &emailTpl=`sentEmailTpl` &emailSubject=`Message from Learn MODx Revo Website` &emailTo=`[email protected]` ]] <form method="post" action="[[~[[*id]]]]"> <strong>Please use the form below to send us an email:</strong> <div> <label for="contact_name">Name </label><em>(required, at least 2 characters)</em><br /> <input name="contact_name" size="30" minlength="2" value="[[!+fi.contact_name]]" /> </div> <div> <label for="contact_email">E-Mail </label><em>(required)</em><br /> <input name="contact_email" size="30" value="[[!+fi.contact_email]]" /> </div> <div> <label for="contact_phone">Phone </label><em>(optional)</em><br /> <input name="contact_phone_NA_format" size="14" value="[[!+fi.contact_phone_NA_format]]" maxlength="14" /> <label for="contact_ext">ext. </label> <input name="contact_ext_NA_format" size="5" value="[[!+fi.contact_ext_NA_format]]" maxlength="5" /> </div> <div> <label for="contact_message">Your comment </label><em>(required)</em><br /> <textarea name="contact_message" cols="70" rows="7">[[!+fi.contact_message]]</textarea> </div> <div> <input name="submit" type="submit" value="Submit"/> </div> </form>

После сохранения превью формы выглядит вот так:

Форма контакта

Отлично, форма выглядит в точности как оригинал. Но нам нужно протестировать её и посмотреть как MODX делает всю работу. Перед тестированием давайте создадим сообщениее, которое будет отправлено получателю с вебсайта. Этот чанк emailTpl мы обозначили в нашем FormIt вызове.

Мы используем заполнители для отправки необходимой информации из формы и мы ссылаемся на них, используя имена соответствующих полей. В моем случае я хочу знать все детали и контактную инфомацию введённую в форму. Поэтому я создал чанк sentEmailTpl и добавил к нему следующее:

[[+contact_name]] left you the message below on the Learn MODx Revolution website: <br /> <strong>[[+contact_message]]</strong><br /> You can respond to [[+contact_name]] by email at <a href="mailto:[[+contact_email]]">[[+contact_email]]</a> or by phone at [[+contact_phone_NA_format]] (ext[[+contact_ext_NA_format]]

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

Теперь давайте протестируем нашу контактную форму. .

Тестирование FormIt формы

Проверим почту и увидим, что получено сообщение:

Отправленное через FormIt сообщение

Вы видите, что введенный текст в поле параметра тема сниппета FormIt оказалась строчкой нашей строчкой темы.

Давайте откроем сообщение и увидим были ли заменены корректно наши заполнители действительным содержимым формы:

Содержание FormIt сообщения

Единственной вещью, которую я заметил – это то, что я забыл добавить закрывающую скобку после (ext в моем шаблоне. Остальное выгдядит отлично и форма работает.

Добавлениепроверки

Следующей вещью, которую вы заметите – это то, что форма имеет поля, которые нужно обозначить как «обязательные для заполения», такие как: имя, имейл и комментарий. Дополнительно имена должны быть длинной более чем две буквы. Мы добавляем проверку к нашей форме, используя свойство &validate (смотрите ссылку в конце записи). Существует несколько встроенных валидаторов и мы будем использовать их в нашем вызове. Отмечу, что валидаторы могут быть связанными, поэтому если вам нужно проверить несколько вещей в одном поле, например, имя обязательно к заполнению И оно должно быть больше двух букв, то вы связываете эти два валидатора вместе. Поэтому для поля имя, первым шагом будет проверка наличия имени:

&validate=`contact_name:required`

Теперь добавим второй валидатор:

&validate=`contact_name:required:minLength=`2` `

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

Маленькая поправочка Шон МакКормик (разработчик FormIt сниппета и один из разработчиков ядра MODX) только что научил меня кое-чему новому в разделе комментариев. Вместо использования двух обратных кавычек, вы можете использовать тильды ^ :

…то бишь с соединёнными валидаторами, которые передают параметры, вы можете сделать так:

&validate=`contact_name:required:minLength=^2^`

Отлично, давайте продолжим и добавим проверку в наш вызов FormIt.

[[!FormIt? &hooks=`email` &emailTpl=`sentEmailTpl` &emailSubject=`Message from Learn MODx Revo Website` &emailTo=`[email protected]` &validate=`contact_name:required:minLength=`2`, contact_email:email:required, contact_message:required` ]]

Теперь же, если какой-нибудь Вася Петров пытается послать сообщение и вместо своих имени и фамилии ставит инициалы, то форма выдаст ошибку:

Проверка формы

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

[[!+fi.error.attibute_name]], где attribute_name – имя атрибута вашей контакт формы.

В контакт-форму для вывода ошибки в таком случае необходимо вставить запись вида:

<label for="attribute_name"> Attribute: <span>[[!+fi.error.attribute_name]]</span> </label>

Возле каждого атрибута, который мы проверяем – подвергаем валидации.

Если вас интересует откуда появились данные сообщения, то они закрепленны в Lexicon за formit. Зайдите в System->LexiconManagement, и далее поменяйте в выпадающем списке “core” на “formit” и далее вы увидите эти сообщения. Там вы можете поменять их либо же добавить свои собственные.

Добавление своих сообщений в Лексикон

Мы можем продолжить и создать пользовательский валидатор для поля номера, но это тема другого урока.

Борьба со спамом

Теперь мы знаем как работает наша форма и мы получаем сообщения и проверка поля работает. Осталось выяснить как же бороться с попытками ботов высылать спам через нашу форму. Сниппет FormIt имеет два встроенных способа решения данной проблемы. Одна – это spam хук и вторая – это reCaptcha хук.

Спам хук просто проверяет поля, которые вы настроили согластно спам фильтра через http://www.stopforumspam.com/. Если они совпадают, то тогда высвечиваетсчя ошибка напротив поля(ей) и сообщение просто не посылается. Больше вы сможете почитать об этом здесь: http://rtfm.modx.com/display/ADDON/FormIt.Hooks.spam. Мы будем использовать значения по умолчанию для спам хука, который будет проверять поле имейл адреса.

Таким образом в нашем параметре хуков в FormIt добавим спам хук:

&hooks=`spam,email`

Хук reCaptcha работает на базе the reCaptcha service для обеспечения поддержки вашей формы. Для использования reCaptcha вам вначале необходимо иметь бесплатный аккаунт на http://www.google.com/recaptcha. После создания аккаунта добавте домен вашего сайта и вам выдадут два ключа: частный ключ и публичный ключ. Вы можете использовать эти ключи на ваших доменнах либо субдоменнах. Если вы создаете глобальный ключ, то вы можете использовать его на множестве доменов.

Получение ключа каптчи

Теперь необходимо ввести эти два ключа в системных настройках для сниппета formit. Зайдите в System->System Settings, и в выпадающем списке вместо core выберите formit.

Ввод ключей Captcha для FormIt

Перед вами появятся три поля, одно для частного ключа, одно для публичного и одно задаст запрос о том, хотите ли вы использовать SSL. Введите ключи от reCaptcha в эти два поля:

Ввод ключей Captcha для FormIt

Отлично, теперь можно добавить рекапча хук к нашему вызову FormIt:

&hooks=`recaptcha,spam,email`

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

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

[[+formit.recaptcha_html]] [[!+fi.error.recaptcha]]

Теперь моя форма выглядит вот так:

Форма FormIt c Captcha хуком

Перенаправление на страницу успешного выполнения

Сейчас форма сделана так, что как только сообщение успешно послано, то пользователь переходит на пустую форму контакта. Мы можем это поменять так, что пользователь отсылается на страницу, которая показывает, что сообщение успешно отослано. Чтобы это сделать мы используем хук редиректа. Нам нужно определить на какую страницу должен быть перенаправлен пользователь и делаем это используя параметр redirectTo и добавляем что-то типа &redirectTo=`123`, где 123 это идентификатор ID страницы куда будет перенаправлятся пользователь. Я просто добавлю хук в конце списка хуков и добавлю параметр redirectTo:

[[!FormIt? &hooks=`recaptcha,spam,email,redirect` &emailTpl=`sentEmailTpl` &emailSubject=`Message from Learn MODx Revo Website` &emailTo=`[email protected]` &validate=`contact_name:required:minLength=^2^, contact_email:email:required, contact_message:required` &redirectTo=`10` ]]

После успешного выполнения формы, посетитель сайта будет отослан на страницу с ID of 10, которая является thank you странице (я создал ее и скрыл от меню).

Успешная отправка сообщения с помощью FormIt

Создание автоответчика

Последний хук о котором мы поговорим в даной записи – это хук автоответчика FormItAutoResponder hook, аон просто отсылает автоответ отсылателю комментария. Этот хук имеет несколько свойств (http://rtfm.modx.com/display/ADDON/FormIt.Hooks.FormItAutoResponder) но мы используем лишь некоторые из них в нашей форме. Вначале мы созданим шаблон содержащий имейл для обратной отсылки на имейл. Это единственное необходимое для заполнения поле. Я создал чанк с названием autoResponseTpl и добавил следующие строки:

[[+contact_name]], Thank you for your message. Someone will send you a reply in due course.<br /> <br /> For your reference, you left the following message at the Learn MODx Revolution website: <br /> <strong>[[+contact_message]]</strong> <br />

Как вы видите я снова использовал заполнители так же, как и до этого в случае с sentEmailTpl. Теперь нужно добавть хук FormItAutoResponder и его свойства к вызову сниппета FormIt как показано ниже:

[[!FormIt? &hooks=`recaptcha,spam,email,redirect,FormItAutoResponder` &emailTpl=`sentEmailTpl` &emailSubject=`Message from Learn MODx Revo Website` &emailTo=`[email protected]` &validate=`contact_name:required:minLength=^2^, contact_email:email:required, contact_message:required` &redirectTo=`10` &fiarTpl=`autoResponseTpl` &fiarSubject=`Thank You for Contacting Us` &fiarToField=`contact_email` &fiarFromName=`Learn MODx Website` ]]

Как вы видите выше я добавил не только необходимые свойства, но и несколько доступных для заполнения. Важно отметить реквизит &fiarToField который я определил как contact_email. Это важно, потому что если вы не установите его по умолчанию в “email” но ваше поле почты может иметь другое имя, как в моём случае.

Я протестирую эту форму отсылая сообщение, используя один из моих имейл адресов. Когда я проверю этот адрес, я увижу, что получил автоответ от формы с темой, как я определил в реквизите &fiarSubject и отослал от имени указаном в реквизите&fiarFromName:

FormIt сообщение

Как вы видите по полученному письму – оно соответстует тому, что мы задали в нашем чанке автоответчика

Заключение

В этом уроке мы научились как использовать сниппет FormIt для обработки контакт формы в сайте MODX Revolution. Мы исследовали различные хуки и основы их использования. Теперь мы имеем функционирующую форму полностью под управлением MODX, но по внешнему виду совпадающей с нашим шаблоном. Еще много чего можно сделать с FormIt и мы будем более детально исследовать данный сниппет в следующих уроках.

Как домашнее задание – можете исследовать сниппет FormIt Retriever и узнайте, сможете ли вы интегрировать его в вашу контакт форму.

uscms.ru

Форма обратной связи MODX revo

   Очень быстро создаем форму обратной связи на сайте под управлением CMF MODX revo используя пакет FormIt.

Процесс установки пакетов на MODX revo подробно описывать в этом посте не буду по причине его простоты и большого количества материала на эту тему в интернете.Напомню лишь последовательность действий:<Система> - <Управление пакетами> - <Загрузить дополнения> - <Поиск>(вводим - FormIt)

            

             

   Нажимаем <Загрузить>, а затем <Установить>

 

   Далее создадим новый чанк и назовем его <form> 

 

   и вставляем следующий код:  

[[!FormIt?

   &hooks=`spam,email,redirect`

   &emailTpl=`sendEmailTpl`

   &emailTo=`[email protected]`

   &emailSubject=`Письмо с сайта [[++site_url]]`

   &redirectTo=`178`

   &validate=`name:required,email:email:required,text:required:stripTags,phone:required`

]]

[[!+fi.error_message:notempty=`<p>[[!+fi.error_message]]</p>`]]

<form action="[[~[[*id]]]]" method="post">

    <input type="hidden" name="nospam:blank" value="" />

    <label for="name">Ваше имя <span>*</span>:</label>

    <span>[[!+fi.error.name]]</span>

    <input type="text" name="name" value="[[!+fi.name]]" />

 

    <label for="phone">Ваш телефон <span>*</span>:</label>

    <span>[[!+fi.error.phone]]</span>

    <input type="text" name="phone" value="[[!+fi.phone]]" />

 

    <label for="email">Ваш Email <span>*</span>:</label>

    <span>[[!+fi.error.email]]</span>

    <input type="text" name="email" value="[[!+fi.email]]" />

  

    <label for="text">Введите сообщение <span>*</span>:</label>

    <span>[[!+fi.error.text]]</span>

    <textarea name="text" cols="55" rows="7"       value="[[!+fi.text]]">[[!+fi.text]]</textarea>

          

    <input type="submit" value="Отправить" />

</form>

 

 

   Создаем чанк <sendEmailTpl>

 

   Он описывает какую информацию отсылать на почту и вставляем туда код:

 

<p>От кого: [[+name]]</p>

<p>Телефон: [[+phone]]</p>

<p>E-mail: [[+email]]</p>

<p>Сообщение: [[+text]]</p>

 

Здесь:

• [[+name]] — имя отправителя

• [[+phone]] — телефон отправителя

• [[+email]] — электронная почта отправителя

• [[+text]] — сообщение, написанное отправителем на сайте 

 

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

   Например: 

<p>Благодарим Вас за отправку письма!Ваше письмо успешно отправлено.Наш специалист ответит Вам в ближайшее время.</p>

 

На эту страницу настроим редирект по ее ID.

 

 

   Не забываем изменить значение параметра &redirectTo=`178` в месте вызова сниппетаFormIt (в коде чанка <form>), куда следует передать корректный ID ресурса.А также   &emailTo=`[email protected]` - естественно на свой ящик.

 

   У меня эта страница имеет ID — 178.Этот идентификатор мы будем использовать ниже при вызове FormIt.

 

   Рассмотрим его подробнее блок вызова дополнения FormIt:

[[!FormIt?

   &hooks=`spam,email,redirect`

   &emailTpl=`sendEmailTpl`

   &emailTo=`[email protected]`

   &emailSubject=`Письмо с сайта [[++site_url]]`

   &redirectTo=`178`

   &validate=`name:required,email:email:required,text:required:stripTags,phone:required`

]]

 

   Здесь: 

• Первый параметр — hooks. Хуки — это скрипты дополнения FormIt. 

  В нашем случае у нас их два — email отвечает за саму отправку электронной почты,  а redirect — отсылает пользователя на страницу с благодарностью за контакт;

• emailTpl — шаблон письма, отправляемого на сайте. Выше мы его создали и отредактировали;

• emailSubject — тема писем, которые будут приходить с сайта;

• redirectTo — ID страницы, которую будем показывать пользователю после того,  как он отправил сообщение через форму обратной связи. Мы ее создали ранее;

• emailTo — адрес электронной почты, куда будут приходить письма с сайта.

 

   Необходимо добавить несколько правил CSS чтобы наша форма приобрела более привлекательный вид.

 

input, label, textarea{

    display: block;

}

input, textarea{

    margin: 0 0 10px 0;

    border: 1px solid #ccc;

    padding: 5px;

}

input.submit_button{

    background-color: #43A52B;

    border: 1px solid #358222;

    padding: 5px 10px;

    border-radius: 3px;

    font: 13px Arial, Verdana, Tahoma, sans-serif;

    color: #fff;

    cursor: pointer;

}

input.submit_button:hover{

    background-color: #358222;

}

span.required,

span.error{

   color: #ff0000;

}

span.required{

    font-size: 18px;

}

span.error{

    font-size: 11px;

}

 

   На сайте MODX revo это выглядит так:

 

 

Итогом нашей работы стала форма обратной связи MODX revo​с применением пакета FormIt.

Не устраевает внешний вид? Редактируйте CSS код или пишите свой.

   Вот собственно всё. 

   Заказывайте темы для статей.

Если есть трудности – поможем с их решением.

 

maxweb.by

Modx revolution создание формы обратной связи с помощью formit

MODx Revolution - создание формы обратной связи с помощью FormIt

Cайт: http://promo-creative.com/ Рассмотрим процесс создания формы обратной связи при помощи дополнения FormIt и jquery-плаги...

Создание сайта на MODX Revolution. Урок 5. Форма обратной связи на MODX Revo Formit + AjaxForm

Поддержать проект: http://www.donationalerts.ru/r/vasiliy_maksimov Здравствуйте, Друзья! В данном видео уроке мы создадим и настр...

MODx Revolution создание формы обратной связи с помощью FormIt FormIt. Классическая modx форма обратной связи. Подробнее!

При разработке сайтов на modx, один из частых вопросов - обратная форма! Обратная форма modx реализуется чаще...

Создание корпоративного сайта на MODX Revolution. 5 урок Форма обратной связи Revo Formit AjaxForm

Поддержать проект: http://www.donationalerts.ru/r/vasiliy_maksimov Здравствуйте, Друзья! В данном видео уроке мы создадим страниц...

Лендинг на MODx Revo. Часть 3. Формы обратной связи на AjaxForm + FormIt в MODx Revo.

Реализуем формы обратной связи в MODx Revo при помощи AjaxForm и FormIt: - Форма в футере. - Форма в модальном окне на...

MODX Revolution урок 5 Форма обратной связи MODX Revolution Сайт http://www.modx.cc Вопросы задавайте здесь ...

MODX. Ajax форма обратной связи.

Документация AjaxForm: https://docs.modx.pro/components/ajaxform.

3 Форма заказа обратного звонка на MODX Revolution

Разработка интернет магазина на MODX Revo. Создание формы заказа обратного звонка на сайте под управлением...

Лендинг на MODx Revo. Часть 4 - последняя. Заказ с помощью API miniShop2.

Оформляем заказ через API miniShop2, минуя корзину. https://modxtemplates.ru/templates/html/rupas-lending-dlya-tovarov.html - шаблон.

Кастомизация поведения формы AjaxForm Formit

При создании различных форм, работающих с formit ajaxform modx revolution, по-умолчанию предусмотрено всплывающее уведом...

MODX Revolution урок 3 Создание категорий, разделов и страниц MODX Revolution

MODX Revolution урок 3 Создание категорий, разделов и страниц MODX Revolution Задать вопросы https://www.modx.cc/video-uroki/3-min... Ссылка...

MODx Revolution - дополнение FormIt (продолжение)

Cайт: http://promo-creative.com/ В этой части будет рассказанно правилах валидации и о том как использовать свои собств...

Перенос modx revo куда угодно

В данном виде показано как перенести modx revo куда угодно (с хостинга на хостинг, с домена на домен, с хостина...

Блог на MODx Revo. Часть 7.

MODx Revo, ajax форма обратной связи FormIt с сохранением формы в панели администратора. Если вы хотите поддержать...

MODX - FormIt

The greatest compliment you can give back to us, is to spend a few seconds leaving a rating at our trustpilot: https://uk.trustpilot.com/review/alienbuild.uk about ...

Сolorbox на modx

Всплывающее окно на modx revo.

FormSave is a hook for FormIt that allows you to save any type of form to the database and export the results. Out of the box it supports XML, CSV and Print ...

Добавление страниц и разделов в MODX

В данном видео показано, как создать страницы и разделы в modx.

Настройка форм редактирования ресурсов

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

Настройка прав доступа для контент-менеджера в MODX Revolution

Полезно? Подпишись на канал: https://goo.gl/o1TVqF Создание интернет-магазина от А до Я: https://goo.gl/7mDqYD Создание новостно...

Форма обратной связи на PHP

Видео урок посвящен тому как написать рабочую форму обратной связи (контактную форму) в готовом Html, CSS шабло...

Установка виджета на Modx

Инструкция установки бесплатного сервиса обратного звонка www.pozvonim.com на modx Инструкция установки бесплатно...

Создание корпоративного сайта на MODX Revolution. 6 урок. Создание меню на MODX Revo PdoMenu

Поддержать проект: http://www.donationalerts.ru/r/vasiliy_maksimov Здравствуйте, Друзья! В данном видео уроке мы выведем динамиче...

2 Интеграция главной страницы MODX Revolution, работа с чанками

Разработка интернет магазина на MODX Revolution и Shopkeeper 2 Интеграция шаблона главной страницы сайта, разбивка...

Создание формы обратной связи.mp4

Форма обратной связи для блога САЙТ АВТОРА: http://asbseo.ru.

Tickets для MODX Revolution

Видео показывает настройку и работу компонента Tickets на чистом сайте. http://bezumkin.ru/modx/tickets/

Уроки MODX Revolution - Защищаем email на сайте от спама с помощью дополнения nospam

Сайт: http://promo-creative.com/ Я думаю что ваш клиент, не раз скажет вам спасибо или по крайнем мере не будет возмущатс...

Часть 6 - Интернет-магазин на MODx Revo. Хлебные крошки на MODx Revo.

Что ж, теперь выведем хлебные крошки с помощью pdoCrumbs. https://dart.agency/blog/obuchenie/xlebnyie-kroshki-na-modx-revo.html - статья в блоге...

1 урок Корпоративный сайт на MODX Revolution. Перенос html в чанки натянуть html шаблон на MODX Revo

Поддержать проект: http://www.donationalerts.ru/r/vasiliy_maksimov Здравствуйте, Друзья! В рамках данного курса по созданию корпо...

Часть 2 - Интернет-магазин на MODx Revo. Установка дополнений MODx Revo

Вторая часть наших уроков. В ней мы рассмотрим как устанавливать дополнения в MODx и погрузимся в панель адми...

Shopkeeper 3 - Страница оформление заказа

Вторая часть 4 урока Код сниппета Formit - https://yadi.sk/i/XjOqjPkNskiQW Документация по Formit - http://promo-creative.com/formit.html Я в ВК:...

Часть 10 - Интернет-магазин на MODx Revo. Интегрируем карточку товара.

Интегрируем карточку товара в miniShop2. https://dart.agency/blog/obuchenie/nastraivaem-kartochku-tovara-minishop2.html - статья в блоге (часть 10)....

18 MODX Настройка мультиязычности MODX Revolution Дополнение Babel

MODX Урок 18 Настройка мультиязычности MODX Revolution Дополнение Babel https://www.modx.cc/video-uroki/1455-... Сайт http://www.modx.cc ...

MODX Revolution урок 19 Вывод статей на сайте MODX Revolution

MODX Revolution урок 19 Вывод статей на сайте MODX Revolution Вопросы задаем здесь https://www.modx.cc/video-uroki/19-stranicza-statej/ Сайт ...

modxTalks extra for MODX Revolution

modxTalks flexible extension of voting for MODX Revolution. This component allows you to install a fully AJAX commenting system on any webpage.

Часть 3 - Интернет-магазин на MODx Revo. Настройка ЧПУ.

Третья часть наших уроков. Настраиваем ЧПУ в MODx Revo. https://dart.agency/blog/obuchenie/nastrojka-chpu-na-modx-revo.html - статья в блоге...

CMS MODX Revolution - урок 5. Интеграция вёрстки - способ 1.

Курс по MODX: https://goo.gl/pQcPHp В данном уроке мы рассмотрим один из способов прикручивания вёрстки к MODX.

Пользовательские события и плагины в MODx

В этом видео я расскажу, как работают плагины и события, а также рассмотрим, как создать пользовательское...

Обзор альфа версии MODx 3

Ребят, мы наконец-то дождались первого билда новой версии нашей CMS. Смотрите, скачивайте, тестируйте и участ...

kurtlar vadisi37 dusta gizli kamera kurt k?z? aylin sonmez reyiz fotosu minecraft k?yafet yap?m? cs go topluluk sunucular? skin minecraft leaks hilesi bengu ozturk patl?can minecraft 1.9 kalkan ets 2 urun anahtar? 1.21

debojj.net


Prostoy-Site | Все права защищены © 2018 | Карта сайта