Drupal - Урок 14 - Создание опросов и страницы "Обратная связь" с помощью модуля Webform.
Очень часто на Drupal ru возникают вопросы, о том как создать форму контактов (или что-либо подобное). В поставке Drupal идет отличный модуль Contact, который реализует эту форму, а так же общение между пользователями сайта, Этот модуль используется на моем блоге (пока), а так же, если не ошибаюсь, на самом Drupal ru, но сегодня мы поговорим о модуле . Он позволяет создавать опросы, страницы контактов, и многое другое. На одном из сайтов посвященных Drupal даже продают за $100 сборку простого магазина с использованием webform.
Для начала его нужно установить, думаю с этим у вас проблем не возникнет. После установки у нас появляются 2 новых страницы на вкладке Administer: Webforms (Content management) — на которой отображаются все созданные Webforms, и Webform (Site configuration) — страница с основными настройками.
Скринкаст(видео-урок) -

На первой пока пусто, зайдем на вторую, посмотрим что тут можно изменить.
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.

Страница добавления webform во многом схожа со страницей добавления ноды (которой webform по сути и является).

Menu 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 раза в час.

Submit button text — проивольный текст для кнопки submit.
Additional Validation — с помощью PHP, можно задать дополнительные параметры проверки.
Additional Processing — после проверки, с помощью PHP, можно произвести дополнительную обработку данных.
Остальные настройки повторяют настройки у стандартных нод.
Создадим свой опрос, вбив в title произвольный текст, и сохранив. Я назвал его «123».

После сохранения видим 5 кнопок:
View — показать готовый опрос.
Edit - редактировать.
Results — результаты.
Мы находимся в разделе Edit, он делится на 2:
Configuration — первая страница, с которой мы попали на эту.
Form components — тут мы находимся. На этой странице происходит добавление полей к опросу.
Добавим несколько полей. Я добавил поля: file, Markup, Pagebreak, textfield. У каждого из этих полей есть свои настройки, их я описывать не буду, так как их много, и они различны.

После сохранения эта форма станет доступна на странице webforms. Так же для нее можно создать пункт меню, или вывести ее на главную, поставив соответствующую галочку на странице настроек.
Теперь давайте попробуем создать форму обратной связи.
Создаем новый опрос, в title вбиваем «Обратная связь» и сохраняем.
Я добавил 3 поля к этому webform:
Имя - типа textfield.
E-mail — типа email.
Сообщение — типа textarea.

Сохраняем, и получаем готовую форму обратной связи. Единственное что было бы неплохо добавить, дак это капчу, для не зарегистрированных пользователей. Для этого устанавливаем captcha, и заходим на страницу «Administer → User management → CAPTCHA», там нужно установить галочку Add CAPTCHA administration links to forms.

После этого, капча станет доступна на странице опроса.

Кликаем по ссылке «Place a CAPTCHA here for untrusted users»

в «Challenge type», нам нужно указать какой тип капчи будет выводиться пользователю. После выбора типа капчи, и сохранения, незарегистрированные пользователи (если разрешить им доступ к webform) увидят

Спасибо за внимание -)
Если возникли какие-то вопросы, можете задать их на форуме.



63 comments so far:
xjunkiex (не проверено)
Скриншоты лучше делать в png, текст более читаемый получается.
За уроки спаисбо!
RemaGe
И вам спасибо за совет) В следующем уроке попробую применить)
VzmiXX (не проверено)
Эх я думал следующий урок бкдет добавлениевидео на сайт )
RemaGe
Про видео, было в видео про CCK -)
VzmiXX (не проверено)
Да смотрел я 6 урок, конкретно не нашёл.
RemaGe
К уроку прилагается скринкаст (видео-урок), там в конце есть пример, как закачивать на сайт видео.
Неизвестный (не проверено)
Доброго времени! я вот с локалхоста отправляю и мне по мимо сообщения что форма отправлена выдает еще такое: You have already submitted this form. View your previous submissions. что это и как с эти боротся?
RemaGe
Переведите) Это значит что вы уже раз ответили на форму. Судя по всему вы выставили ограничение, на количество ответов, и свой ответ уже сделали. Либо удалите его, либо уберите ограничение.
azon (не проверено)
Спасибо!
Неизвестный (не проверено)
Евгений не могли бы Вы сделать урок по SEO в поисковиках где не ткнешь Drupall
попадаешь на Ваш сайт, поделитесь пожалуйста опытом. И еще хотелось
бы видеть побольше таких уроков 8. Drupal - Урок восьмой - Еще немного про модуль Views. Работаем с Exposed filters и Arguments.
RemaGe
У меня уже был пост о seo-модулях для Drupal. В остальном оптимизация ничяем не отличается от оптимизации других сайтов.
SEO-оптимизацией этого блога почти не занимаюсь. Думаю, поисковики мен любят за большое количество тематических ссылок.
ramblike (не проверено)
Я почему-то все больше и больше начинаю любить Rambler. А вы?
Maxo (не проверено)
Почему то вебформа не хочет отправлять письма.
вот что выдает:
Forbidden
You don't have permission to access / on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Apache/1.3.33 Server at AppStuff Port 80
Где ковырятся то нужно?(
Спасибо.
Kati (не проверено)
"На одном из сайтов посвященных Drupal даже продают за $100 сборку простого магазина с использованием webform."
Это где это такое продают??
RemaGe
na-baze-drupal-6x-platnaya-sborka
kvn (не проверено)
добрый день вам!
классная статья, я все сделал, только вот вопрос, можно ли сделать так, чтобы вебформа отправляла все что было заполнено в форме на мой е-майл? а то шлет ссылку, по ссылке идешь и админом читаешь то что юзверь заполнял. не очень удобно. да и догадываюсь, что это не очень благоприятно сказывается на загрузке моей БД и сервера.
С уважением...
kvn (не проверено)
упс, сорри.. ступил. Доглядел место для галок e-mail. Если других заинтересует - скажу, что, если хотите, чтобы вам данные веб-формы приходили на почту ставьте галки в момент выбора поля. ставьте Mandatory, если хотите, чтобы поле было обзяательным к заполнению..
у меня вопрос остался, можно отключить создание сабмишенов? мне вполне достаточно почты..
С уважением..
RemaGe
По моему нельзя. Почта опциональна, сабмишены нет.
Weasel (не проверено)
Спасибо, друх!
kvn (не проверено)
эх, жаль...как не хочется лезть в пхп код евойный :(.. спасибо за ответ...
RemaGe
Оно так сильно мешает? Я не парюсь)
kvn (не проверено)
хочется, чтобы было все как можно оптимальнее.. люблю работать в комфорте:) кстати, спасибо, что зашли, может ошибку какую или глюк накопаете - поделитесь, пожалуйста, буду признателен :)
виктор (не проверено)
Добрый день!
Прошу помощи в разрешении одного вопроса!
Все сделал как указано в уроке. Поставил формы... на сайте заполняю формы, отправляю письмо, а на почтовый ящик приходит следующее:
Submitted on (тут дата указывается)
Submitted by anonymous user: [тут указывается ip заполнявшего форму]
Submitted values are:
The results of this submission may be viewed at:
http://www.probuhgalter.ru/node/179/submission/3
как быть?
что не так сделал?
RemaGe
А что не так? Все нормально
виктор (не проверено)
плизз...ответы на почту!
prince999
При создании вебформы (заявка на добавление в каталог организаций) столкнулся с глупейшей проблемой. Все введенные данные нормально отправляются, но вместо подтверждения выскакивает белый экран. Есть подозрение что 403 ошибка. Подскажите где копать?))
RemaGe
Сложный вопрос, может памяти не хватает, может еще чего.
SVA
Создаю сайт гимназии. Хотелось бы сотварить виртуальную приемную директора. Что-то типа этого http://gymn10.minsk.edu.by/main.aspx?uid=53270. Как это можно реализовать с помощью Webform. Направьте на путь истинный, плз.
RemaGe
Данных в уроке достаточно для создания такой формы.
SVA
Форму я создал без проблем. Меня итересует, как на одной странице разместить и форму и вопросы с ответами?
RemaGe
Такой функционал проще будет реализовать в связке Views+ CCK.
Как вариант можно поискать готовый модуль, наверняка кто-нибудь уже сделал.
Серж
А как можно сделать чтобы не отображалась дата и кто создал на форме? А то не могу обнаружить параметр этот(.
RemaGe
По моему это можно убрать в настройках темы. Как вариант темизировать.
Серж
Точно, нашел в настройках темы, спасибо за помощь)
bulinat
спасибо,отличный урок.
Роман (не проверено)
А где информация о PHPMail? И о модулях которые помогут доставить почту?
Sergey (не проверено)
спасибо за отличную статью!!! весь день просидел над формами пытаясь понять как они работают, но пока не нашел вашу статью - ничего не понял...
есть два вопроса:
1. как бы сделать для каждой формы уникальный дизайн? например, засунуть все созданные поля в таблицу, разбив примерно так:
Имяполе с именемEmailполе для email
ну и т.д.
2. добавить эту форму уже к существующей странице и только одной?
Заранее спасибо, даже если ответа не будет...
Dmitry (не проверено)
Добрый. у меня капчи нету. для этого нужно доставлять ещё модуль?
FoX
Да, модуль называеться CAPTCHA
chess_ (не проверено)
Не могли бы дополнить данный урок , чтобы можно было отправлять с формы на почту?
пытаюсь уже давно на Drupal не получается ...
komandor43
Добрый день.
Подскажите, пожалуйста, по настройке почты. С сайта не уходит почта. Модуль контакты.
Сообщение:
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 или что-то подобное?
Или нужно настраивать почту на сервере?
chess_ (не проверено)
Значит по последнему.... если у Вас сервер свой на 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 Supporhttp://drupal.org/project/smtp http://drupal.org/project/phpmailer http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/
качал отседова
внимательно читаем инструкцию по установке!!! \sites\sites\all\modules\smtp\install.txt
там написано создать директорию sites/all/modules/smtp/phpmailer/
туда скачать и распаковать содержимое модуля
тут я качал
затем в директорию sites/all/modules/smtp/phpmailer закинуть файлики
class.phpmailer.php и class.smtp.php
я скачал их тут
затем в Главная » Администрирование » Настройка сайта » SMTP Authentication Support
настраиваем все остальное, в поле "E-mail from address:" желательно вписать тоже самое что и в "SMTP Username".
собсно поле данных манипуляций почта начала ходить с формы "контакты" , попробую на WEB form - отпишу.
вопрос кстати поднимался уже на форуме , остался без ответа.
chess_ (не проверено)
нормально работает и в Webform
Alex&r (не проверено)
Вдохновили меня на создание формы с этим модулем. В итоге на Друпал.ру образовался вопрос по поводу переадрессации после заполнения. На всякий дам ссылку, вдуг кому-то пользу принесет.http://www.drupal.ru/node/47655 Сейчас же вот какой вопрос. Понадобилось создать список (single). Битый час подставляю значения, а он выдает все в одну строку и все тут. Как заполнить поле с вариантами, чтобы список все-таки стал списком? Спасибо!
Alex&r (не проверено)
Поясню, а то шарады какие-то получились. Нужно создать "Выпадающий список" с помощью поля типа select
Drupik (не проверено)
А как можно добавить поле, чтобы можно было выбрать КОМУ отправлять сообщение 0 отдел продаж, администрация, склад, техподдержка и т.д. (соотвественно под каждого вбиты будут адреса)?
Благодарю!
Timur (не проверено)
Столкнулся с такой проблемой...
Добавил на сайт модуль webform, включил его.
Но при создании ноды типа webform, настроек Webform Settings и Webform advanced settings и им подобных, не появляются.
Вообще Webform у меня ничем не отличается от типа материла Page. Никаких форм добавления полей нет.
Что я делаю не так, подскажите пожалуйста(((...
mak-vardugin (не проверено)
Timur, внимательно еще раз посмотрите видео, вначале создается пустая форма а потом она редактируется, глядишь и нужные кнопки появятся: )
Timur (не проверено)
Эх...в том то и дело...При редактировании "нужные кнопки" не появляются...у меня получается что Page ничем не отличается от Webform...
Идеалист (не проверено)
Тимур,
+1. Та же проблема. Скачивал версию 6.x-3.2.