Основной чанк - шаблон самой формы для отправки письма. Имя этого чанка передается параметром tpl. В наших примерах мы ссылаемся на чанк eFBForm.
Чанк eFBForm
Вот текст этого чанка:
{ {Правила почты} }
<div class="light_box">
<h3>Ваше обращение:</h3>
<div class="fbForm">
<p><span style="color:#900;"></span></p>
<form method="post" action="chanki_dlya_eform.html" id="FeedBackForm">
<div class="form">
<div class="name">Ваше имя и фамилия</div>
<div class="error" id="fbNameError"></div>
<div class="element">
<input type="text" name="fbName" id="fbName"
eform="Имя::1:Должно содержать не менее 5 символов.:#FUNCTION fbValidateName" value="">
</div>
<div class="name">Адрес электронной почты</div>
<div class="error" id="fbEMailError"></div>
<div class="element">
<input type="text" name="fbEMail" id="fbEMail"
eform="EMail:email:0:EMail » Некорректный адрес электронной почты." value="">
</div>
<div class="name">Полный почтовый адрес с индексом</div>
<div class="error" id="fbAddressError"></div>
<div class="element"><input type="text" name="fbAddress" id="fbAddress"
eform="Адрес:html:1:Адрес должен содержать не менее 15 символов.:#FUNCTION fbValidateText"
value="">
</div>
<div class="name">Тема</div>
<div class="error" id="fbSubjectError"></div>
<div class="element"><input type="text" name="fbSubject" id="fbSubject"
eform="Тема:html:1:Тема должна содержать не менее 15 символов.:#FUNCTION fbValidateText"
value="">
</div>
<div class="name">Текст обращения</div>
<div class="error" id="fbTextError"></div>
<div class="element">
<textarea name="fbText" id="fbText"
eform="Текст сообщения:html:1:Должен содержать не менее 15 символов.:#FUNCTION fbValidateText"
></textarea>
</div>
<br />
<br />
<div align="right">
<input type="submit" name="fbSubmit" id="fbSubmit" value="Отправить">
</div>
</div>
</form>
</div>
</div>
Здесь описана форма почты. Перед формой вызывается чанк Правила почты с текстом правил, которые должен знать посетитель. Для официального сайта этот текст имеет очень важное значение. Далее идут обычные элементы формы. Разжевывать элементарные вещи мы не будем, остановимся только на ключевых моментах.
В абзац
<p><span style="color:#900;"></span></p>
будет выводиться сообщение об ошибках, сформированное сниппетом. Забегая вперед отметим, что вывод сообщений об ошибках мы реализуем иным образом - отдельно для каждого поля формы. Для этого над каждым полем мы предусматриваем пустой контейнер для возможных сообщений:
<div class="error" id="fbEMailError"></div>
Элементы ввода данных описаны по единой схеме, например:
<div class="element"> <input type="text" name="fbName" id="fbName" eform="Имя::1:Должно содержать не менее 5 символов.:#FUNCTION fbValidateName" value=""> </div>
Здесь мы видим строку ввода типа text, которой присвоено имя и ID, а также описан специальный параметр eform, определяющий правила проверки введенных данных - об этом мы уже писали.
Создание списка выбора
В заметке с общей постановкой задачи мы упоминали, что для поля Тема желательно иметь список выбора. Пока у нас сделан ввод произвольного текста. Список можно организовать так:
<div class="element"> <select style="width:600px;" name="fbSubject" id="fdSubject" eform="Form Subject::1"> <option value="ЖКХ">Жилищно-комунальное хозяйство</option> <option value="ЭКОНОМ">Экономика</option> <option value="ПОМОЩЬ">Материальная помощь</option> <option value="РАЗНОЕ">Разное</option> </select> </div>
В результате появляется список тем обращений. Разумеется, для конкретного сайта этот список уточняется с учётом его специфики. Элементы списка описаны в option. Текст элемента option появляется в списке, а значение находится в атрибуте value. Именно это значение и будет использовано при отправке письма.
Замечание:
Так как выбор возможен только из списка, нет необходимости проверять правильность введенных значений.
Это мы учтём при совершенствовании сниппета.
Примерно так будет выглядеть форма в момент ввода:
Чанк отправляемого письма
После щелчка по Отправить письмо доставляется по заданному адресу. Текст письма формируется по шаблону, указанному в параметре report. Вот пример такого чанка:
<p>Обращение с почтовой формы <strong>официального сайта</strong>.</p> <p> <br /> <strong>Автор:</strong> <br /> <strong>Электронная почта:</strong> <br /> <strong>Почтовый адрес:</strong> <br /> <strong>Тема:</strong> <br /> <strong>Текст обращения:</strong> </p> <p> </p> ---------------------------------------------- <p>Для ответа можно использовать эту ссылку: <a href="mailto:?subject=RE:"></a></p>
Письмо по такому шаблону получит специалист, обрабатывающий почту сайта. Вместо плейсхолдеров будут подставлены соответствующие значения из заполненной формы. Единообразная форма позволит организовать обработку в почтовом клиенте.
А как проверить, отправляется ли почта вообще и доставляется ли она "куда надо"? При размещении сайта на хостинге всё понятно, а как это проверить на локальном сервере?
Если мы используем комплект Denwer, то почта никуда за пределы компьютера не отправляется. В Denwer работает эмулятор Sendmail, который просто отправляет письма в папку c:\WebServers\tmp\!sendmail\. Там должны скапливаться файлы с именами наподобие 2009-02-14_22-32-17.eml. Вот это и есть письма с сайта.
Примерно так будет выглядеть письмо в почтовом клиенте:
Обратите внимание - после фразы Для ответа можно использовать эту ссылку пусто. Мы разрешили посетителям не оставлять свой e-mail, а если бы обратный e-mail был указан, можно было бы сразу ответить на письмо.
Другие чанки
Кроме того, требуется чанк для извещения о том, что письмо отправлено, уведомление о получении письма и, возможно, другие - например с правилами обращения.
На них мы останавливаться не будем - здесь всё очевидно.
Написать комментарий