Вы здесь

Drupal - Урок 14 - Создание опросов и страницы "Обратная связь" с помощью модуля Webform.

Очень часто на Drupal ru возникают вопросы, о том как создать форму контактов (или что-либо подобное). В поставке Drupal идет отличный модуль Contact, который реализует эту форму, а так же общение между пользователями сайта, Этот модуль используется на моем блоге (пока), а так же, если не ошибаюсь, на самом Drupal ru, но сегодня мы поговорим о модуле Webform. Он позволяет создавать опросы, страницы контактов, и многое другое. На одном из сайтов посвященных Drupal даже продают за $100 сборку простого магазина с использованием webform. Для начала его нужно установить, думаю с этим у вас проблем не возникнет. После установки у нас появляются 2 новых страницы на вкладке Administer: Webforms (Content management) — на которой отображаются все созданные Webforms, и Webform (Site configuration) — страница с основными настройками. drupal-lesson-webform-1.jpg На первой пока пусто, зайдем на вторую, посмотрим что тут можно изменить. Available components — выбираем какие компоненты будут доступны при создании форм. Markup — добавляет произвольный HTML (или даже PHP при желании). Date — Выбор даты. Time — Выбор времени. Textarea - поле для ввода текста. Pagebreak - элемент разбивает форму на страницы. Grid — сетка из радио кнопок. Hidden — скрытое поле, в нем можно хранить нужную нам информацию. Fieldset — позволяет группировать поля. Textfield - строка для ввода текста. Email - поле для ввода почтового адреса. File - позволяет пользователям прикреплять к форме файлы. Select — позволяет добавлять чекбоксы, радио-кнопки. Default e-mail values: From address — адрес с которого придет письмо с результатами. From name — имя отправителя. Default subject — Тема письма. Advanced options: Allow cookies for tracking submissions — разрешить использовать cookies, для предотвращения повторного заполнения формы пользователем. Default export format — формат экспорта по умолчанию. Default export delimiter — разделитель записей при экспорте по умолчанию. Submission access control — как контролировать доступ: по ролям, или не контролировать. Webforms debug — нужно ли вести лог. Работать с webform можно и без этих настроек. Давайте попробуем создать свой Webform. Кликните на «Create content → Webform», в меню navigation. drupal-lesson-webform-2.jpg Страница добавления webform во многом схожа со страницей добавления ноды (которой webform по сути и является). drupal-lesson-webform-3.jpgMenu settings — при создании webform, можно сразу создаить пункт меню на нее ссылающийся. Webform Settings Title — заголовок (обязательный параметр). Description — описание. Confirmation message or redirect URL — если введете сообщение, то оно будет показано пользователю после заполнения webform, если ссылку, то по ней пользователь будет перекинут. Webform access control — какие роли имеют доступ к форме. Webform mail settings: E-mail to address — почтовый адресс, на который будут направляться результаты заполнения webform, можно оставить пустым, а можнос ввести несколько через запятую. E-mail from name, E-mail from address, E-mail subject — по умолчанию равны значениям вбитым на странице webform, но для каждого отдельного опроса (webform), можно вбить свои, или указать, чтоб их значения были равны какому-нибудь полю опроса. Webform advanced settings: Show complete form in teaser — показывать ли полную форму в тизере. Limit the number of submissions a user may send within a specified time period — позволяет указать сколько раз пользователь может заполнить опросник за определенный промежуток времени. По умолчанию — без ограничения. На рисунке заданно, что пользователь может заполнять форму 3 раза в час. drupal-lesson-webform-4.jpgSubmit button text — проивольный текст для кнопки submit. Additional Validation — с помощью PHP, можно задать дополнительные параметры проверки. Additional Processing — после проверки, с помощью PHP, можно произвести дополнительную обработку данных. Остальные настройки повторяют настройки у стандартных нод. Создадим свой опрос, вбив в title произвольный текст, и сохранив. Я назвал его «123». drupal-lesson-webform-5.jpg После сохранения видим 5 кнопок: View — показать готовый опрос. Edit - редактировать. Results — результаты. Мы находимся в разделе Edit, он делится на 2: Configuration — первая страница, с которой мы попали на эту. Form components — тут мы находимся. На этой странице происходит добавление полей к опросу. Добавим несколько полей. Я добавил поля: file, Markup, Pagebreak, textfield. У каждого из этих полей есть свои настройки, их я описывать не буду, так как их много, и они различны. drupal-lesson-webform-6.jpg После сохранения эта форма станет доступна на странице webforms. Так же для нее можно создать пункт меню, или вывести ее на главную, поставив соответствующую галочку на странице настроек. Теперь давайте попробуем создать форму обратной связи. Создаем новый опрос, в title вбиваем «Обратная связь» и сохраняем. Я добавил 3 поля к этому webform: Имя - типа textfield. E-mail — типа email. Сообщение — типа textarea. drupal-lesson-webform-7.jpg Сохраняем, и получаем готовую форму обратной связи. Единственное что было бы неплохо добавить, дак это капчу, для не зарегистрированных пользователей. Для этого устанавливаем captcha, и заходим на страницу «Administer → User management → CAPTCHA», там нужно установить галочку Add CAPTCHA administration links to forms. drupal-lesson-webform-8.jpg После этого, капча станет доступна на странице опроса. drupal-lesson-webform-9.jpg Кликаем по ссылке «Place a CAPTCHA here for untrusted users» drupal-lesson-webform-10.jpg в «Challenge type», нам нужно указать какой тип капчи будет выводиться пользователю. После выбора типа капчи, и сохранения, незарегистрированные пользователи (если разрешить им доступ к webform) увидят drupal-lesson-webform-11.jpg Спасибо за внимание -) Если возникли какие-то вопросы, можете задать их на форуме.

Комментарии

Такой функционал проще будет реализовать в связке Views+ CCK.
Как вариант можно поискать готовый модуль, наверняка кто-нибудь уже сделал.

А как можно сделать чтобы не отображалась дата и кто создал на форме? А то не могу обнаружить параметр этот(.

По моему это можно убрать в настройках темы. Как вариант темизировать.

А где информация о PHPMail? И о модулях которые помогут доставить почту?

спасибо за отличную статью!!! весь день просидел над формами пытаясь понять как они работают, но пока не нашел вашу статью - ничего не понял...
есть два вопроса:
1. как бы сделать для каждой формы уникальный дизайн? например, засунуть все созданные поля в таблицу, разбив примерно так:

Имяполе с именемEmailполе для email

ну и т.д.
2. добавить эту форму уже к существующей странице и только одной?
Заранее спасибо, даже если ответа не будет...

Добрый. у меня капчи нету. для этого нужно доставлять ещё модуль?

Не могли бы дополнить данный урок , чтобы можно было отправлять с формы на почту?
пытаюсь уже давно на Drupal не получается ...

Добрый день.
Подскажите, пожалуйста, по настройке почты. С сайта не уходит почта. Модуль контакты.

Сообщение:
warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\Site\PD\includes\mail.inc on line 193.

PHP.INI
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

Нужно ли использовать дополнительно модуль smtp или что-то подобное?
Или нужно настраивать почту на сервере?

Значит по последнему.... если у Вас сервер свой на ubuntu или debian, то
настраиваем Sendmail
Чтобы php умел отправлять письма, проделываем следующие операции.

Код:
# file: /etc/php5/apache2/php.ini [раскомментируем и изменим строку]
sendmail_path = /usr/sbin/exim4 -t

Для конфигурации Exim4 (по умолчанию в качестве Mail Transfer Agent используется именно он) существует пакет exim4-config. Воспользоваться им можно так:
Код:

debian:~# dpkg-reconfigure exim4-config

После этого вам начнут задавать вопросы. На первый (Общий тип почтовой конфигурации) отвечаем:
интернет-сайт; прием и отправка почты напрямую, используя SMTP
А далее жмем Enter до конца настройки. Теперь все должно работать.

по настройке php, что написано выше прочел тут (не я автор)
http://forum.antichat.ru/showthread.php?t=186926

дальше я установил модуль SMTP Authentication Suppor
качал отседова http://drupal.org/project/smtp
внимательно читаем инструкцию по установке!!! \sites\sites\all\modules\smtp\install.txt
там написано создать директорию sites/all/modules/smtp/phpmailer/
туда скачать и распаковать содержимое модуля
тут я качал http://drupal.org/project/phpmailer
затем в директорию sites/all/modules/smtp/phpmailer закинуть файлики
class.phpmailer.php и class.smtp.php
я скачал их тут http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/
затем в Главная » Администрирование » Настройка сайта » SMTP Authentication Support
настраиваем все остальное, в поле "E-mail from address:" желательно вписать тоже самое что и в "SMTP Username".
собсно поле данных манипуляций почта начала ходить с формы "контакты" , попробую на WEB form - отпишу.
вопрос кстати поднимался уже на форуме , остался без ответа.

Вдохновили меня на создание формы с этим модулем. В итоге на Друпал.ру образовался вопрос по поводу переадрессации после заполнения. На всякий дам ссылку, вдуг кому-то пользу принесет.http://www.drupal.ru/node/47655 Сейчас же вот какой вопрос. Понадобилось создать список (single). Битый час подставляю значения, а он выдает все в одну строку и все тут. Как заполнить поле с вариантами, чтобы список все-таки стал списком? Спасибо!

Поясню, а то шарады какие-то получились. Нужно создать "Выпадающий список" с помощью поля типа select

А как можно добавить поле, чтобы можно было выбрать КОМУ отправлять сообщение 0 отдел продаж, администрация, склад, техподдержка и т.д. (соотвественно под каждого вбиты будут адреса)?
Благодарю!

Столкнулся с такой проблемой...
Добавил на сайт модуль webform, включил его.
Но при создании ноды типа webform, настроек Webform Settings и Webform advanced settings и им подобных, не появляются.
Вообще Webform у меня ничем не отличается от типа материла Page. Никаких форм добавления полей нет.
Что я делаю не так, подскажите пожалуйста(((...

Timur, внимательно еще раз посмотрите видео, вначале создается пустая форма а потом она редактируется, глядишь и нужные кнопки появятся: )

Эх...в том то и дело...При редактировании "нужные кнопки" не появляются...у меня получается что Page ничем не отличается от Webform...

Нету полей "отправка писем", "Сообщение или URL с сообщением",...

Спасибо за статью :)
Вопрос вот какой. Наверно, довольно дурацкий. Просто я почти вообще не умею прогать.
Мне нужно сделать очень много пунктов в select, больше 20 штук. Так вот я хочу, чтобы это был не один огромный список "в столбик", а колонками. Как это сделать с "наименьшими потерями"?
Заранее спасибо!

Подскажите пожалуйста, как можно в webform добавить возможность позволяющую установить галочку "Отправить мне копию"?
заранее благодарю за ответ

Спасибо за урок.
Разбираюсь с с этим модулем и столкнулся с такой проблемой после установки этого модуля в разделе Управление содержимым вебформа не появляется. А в разделе Настройка сайта Webform settings есть. Т.е. глобальные настройки вебформы могу создать а сами вебформы нет.
Не подскажете в чём может быть проблема.
Спасибо.

Урок полезный, спасибо. Однако столкнулся вот с таким нюансом -

При попытке отправить письмо при помощи webform выдается следующее:

"The submitted from address (=?UTF-8?B?Ij0/VVRGLTg/Qj8wSkRRdmRDejBMRFJnTkdCMExyUXVOQzVJTkdFMExqUXU5QzQ=?= =?UTF-8?B?MExEUXV5RFFrdENoMEozUXBpRFFyZENuSUE9PT89CiA9P1VURi04P0I/MEtIUW4=?= =?UTF-8?B?aURRb05DUTBKelFuUT09Pz0iIDxhZG1pbkBodW1hbi1lY29sb2d5LWFuZ2Fyc2s=?= =?UTF-8?B?LnJ1Pg==?=) is not valid."

Соотв-но, письма никуда не уходят.

SMTP auth support настроен и тестовые письма идут, как положено.

Есть мнение, что SMTP auth support некооректно работает с данными в кодировке UTF-8, стандартной для Drupal, и соотв-но, не может использоваться в phpmailer-е исходящий e-mail адрес.

Подскажите, в какую сторону думать. Спасибо.

Похоже, с трудностью разобрался. Решение выбрал следующее: в настройка Webform сменил формат e-mail отправителя с длинного на короткий, соответственно, исключив кириллические символы из строки, после чего передача символов перестала давать проблему.

Страницы