Drupal webform – создаем собственные веб-формы


Как использовать предопределенные параметры в модуле Webform в Drupal 8

Модуль Webform позволяет создавать в Drupal формы любой сложности без написания какого-либо кода со стороны пользователя. Одна из возможностей этого модуля — предопределенные параметры.

Предопределенные параметры облегчают создание форм предлагая общие списки, такие как дни, месяцы, часовые пояса, названия и т.д.

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

Модуль Webform содержит около 30 предопределенных списков, которые могут быть добавлены к переключателям, флажкам, спискам выбора и меню. Также вы можете создавать свои собственные списки.

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

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

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

Использование предопределенных параметров

Давайте посмотрим как использовать один из предопределенных параметров в элементе select. Допустим, вам нужно создать элемент select с днями в качестве параметров — понедельник, вторник и т.д.

1. На странице Webforms (Вебформы) перейдите на страницу создания формы, щелкнув Build.

2. Нажмите «Add element» (Добавить элемент), найдите «select» и нажмите в строке выбора «Add element» (Добавить элемент).

3. Введите название элемента, например, можно назвать его «Дни недели».

4. В раскрывающемся списке параметров выберите Days (Дни) и нажмите Save (Сохранить).

5. Если вы просмотрите созданную форму, вы увидите раскрывающееся меню «Дни недели» с днями в качестве параметров.

Поздравляем! Вы только что сэкономили кучу времени на ручном вводе дней недели.

Управление предопределенными параметрами

Чтобы управлять всеми предопределенными параметрами, перейдите в Structure, Webforms, Configuration (Структура, Вебформы, Конфигурация) и нажмите Options (Параметры).

На этой странице вы можете просмотреть все параметры, создавать пользовательские параметры и изменить существующие.

Давайте теперь изменим параметры Days, чтобы понедельник был первым.

1. Нажмите Edit (Редактировать) в строке Days (Дни).

2. Измените порядок параметров таким образом, чтобы воскресение передвинулось вниз списка, и нажмите Save (Сохранить).

3. Теперь, если вы посмотрите свою форму, то увидите, что понедельник стал первым днем.

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

Создание предопределенные параметры

Создать собственные предопределенные параметры очень просто.

1. На странице Options (Параметры), нажмите на «Add options» (Добавить параметры).

2. Введите название ваших параметров и добавьте значения, затем нажмите Save (Сохранить) внизу страницы.

3. Выберите новый параметр из выпадающего списка Options (Параметры) для элемента select или checkbox и все. Готово!

Резюме

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

Access to this page has been denied.


You have been blocked because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

If you think you have been blocked by mistake, please contact help@drupal.org with the reference ID below.

Reference ID: #e3796a20-01a8-11ea-8e44-c968607b1129

Создание опросов и обратной связи в Drupal с помощью модуля Webform

Очень часто на Drupal ru возникают вопросы, о том как создать форму контактов (или что-либо подобное). В поставке Drupal идет отличный модуль Contact, который реализует эту форму, а так же общение между пользователями сайта, Этот модуль используется на моем блоге (пока), а так же, если не ошибаюсь, на самом Drupal ru, но сегодня мы поговорим о модуле Webform . Он позволяет создавать опросы, страницы контактов, и многое другое. На одном из сайтов посвященных 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) увидят

Как при отправке Webform создать ноду, записав в ее поля значения из полей формы

Возникла задача, при отправке webform перехватить поля, записав их в новую созданную автоматом ноду.

Есть тип материала reviews. У него есть поля: title, field_name, field_tel, body.
Есть webform с полями: name, phone, text.
При отправке формы происходит редирект на страницу подтверждения отправки формы — webform-confirmation.tpl.php

Подскажите как организовать перехват полей и создание ноды правильно? То что получается — это создание новой ноды, при отправки формы с помощью этого кода в файле webform-confirmation.tpl.php

Но проблема в том, что в переменные $name, $phone, $text не записываются значения из полей формы, и не передаются в поля ноды. Или я просто не понимаю как правильно это сделать. Сразу скажу, что PHP практически не знаю, ковыряю по тиху, пытаюсь разобраться! Так что просьба в google не отсылать, а помочь по возможности.

Вопрос модуль Webform в виде блока

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

и еще момент. в данном модуле есть возможность локализации кнопки Отправка, а вот где можно перевести результирующее сообщение — Thank you, your submission has been received я не нашла, не хотелось бы пользователю показывать такое как итог его действий

Drupal 7 для начинающих: Форма обратной связи.

На тестовом сайте мы сделали почти весь запланированный фукнционал, и затронули все основные возможности Drupal’a, и даже чутка сверху.

У нас осталось одна очень важная для сайтов деталь — форма обратной связи (контакты). По сути, это можно сделать включив модуль contact из стандартнйо поставки Drupal, но он очень слабенький. Там всего несколько полей и по сути ничего сделать нельзя.

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

Топ-пост этого месяца:  Google «нарисовал» портрет молодого российского пользователя

Итак, установите данный модуль, и было бы неплохо его русифицировать. После установки у вас должен появится новый тип материала Webform (node/add). Поэтому жмем «Добавить содержимое» и создаем новый Webform.

У вас откроется страница добавления webform на которой предложено ввести заголовок и содержимое (оно будет над формой). Давай введем следующие данные:

Прокручиваем страницу до настроек отображения и ставим собственный алиск (ЧПУ / параметры адреса).

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

Также я указал синоним contact — будьте внимательны, он является системным синонимом для формы контактов от одноименного модуля (о котором говорится в начале статьи). Поэтому убедитесь что модуль contact выключен. После чего смело жмем кнопку «Сохранить».

Перед вами откроется страница создания формы контактов. Тут необходимо добавлять поля, которые будут присутствовать в форме, тоесть те, которые вам надо.

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

Для начала добавим поле где опльзователь сможет указать свой E-Mail адрес. Для этого вводим следующие данные:

  • Метка: E-Mail
  • Тип: E-mail // Данный тип поля добавлен непосредственно данным модулем. Он автоматически проводит проверку на валидность email адреса.

И жмем «Добавить».

Как и с полями для типа содержимого, у нас открывается второй этап настройки поля. Разумеется, у каждого поля настройки свои. Но есть те, которые присущи каждому полю и только в пределах webform:

Метка — она выводится в форме над полем. Хоть это и стандартно, я написал чтобы вы не путали её с машинным именем.

Mandatory — делает поле обязательным для заполнения

Показать (также могуть быть и другие значения)

Ширина — ширина поля.


  • Label display — где будет и будет ли отображаться метка поля.
  • Отключено — данное поле выключено.
  • Private — делает данное поле видимым только тем пользователям, у которых есть права на просмотр результатов.
  • Нам необходимо заполнить описание (на свое усмотрение), установить галочку Mandotary, Unique и сохранить. Наше поле добавиться автоматически. Таким же способом добавьте нужные вам поля. (я добавил приложение типа файл и текст сообщения типа textarea)

    После того как вы добавили нужные вам поля, нам необходимо донастроить форму. Для этого вверху есть 3 вкладки.

    Переходим на вкладку «Электронные адреса». Вы увдите страницу с настройками электронных адресов. В них указывается куда и какая информация будет отсылаться после отправки формы.

    Для начала добавим свой почтовый ящик, тем самым убрав необходимость постоянно заходить на сайт и проверять наличие писем. Для этого в поле Addess вводите свой E-Mail адрес и жмете «Добавить». Вы можете указать несколько адресов, разделяя их запятой.

    После добавления вы попадете на настройку писем.

    • E-Mail header tetails. Базовая информация о письме.
    • E-Mail sibject — заголовок письма.
    • E-Mail from address — адрес почты с которого (якобы) отправлено письмо. Вы можете подставить адрес указанный пользователем, чтобы при нажатии на ответ письмо было адресовано ему. Также вы можете указать произвольную почту, чтобы фильтровать письма по данному адресу.
    • E-Mail from name — от чьего имени письмо.

    E-Mail template позволяет настроить содержимое письма. Вы можете использовать TOKEN VALUES — различная информация с сайта, либо INCLUDED E_MAIL VALUES, в которых содержатся значения из формы.

    Я его заполнил так:

    Для подстановки используеются подстановочные шаблоны: %email[field_key]. Используйте их для вставки данных отдельно. Если нужно вставить все без особой нужды в оформлении то используется %email_values.

    Теперь переходим в третью вкладку Form settings. В ней можно настроить данную форму еще точнее.

    • Confirmation message — сообщение на странице, которое увидет пользователь после отправки формы.
    • Redirection location — куда будет перенаправлен пользователь после отправки формы.
    • Total submissions limit — ограничение на количество писем вообще, в день, месяц и т. д. Тоесть при достижении этого количества, форма будет блокироваться.
    • Per user submission limit — как и выше, но только для конкретного пользователя.
    • Status of this form — доступна форма или нет.
    • Submission access — у кого есть доступ к почте.
    • Расширенные настройки — более детальная настройка формы.
    • Available as block — форма будет доступна также в списке блоков, соответственно вы сможете размещать её на нужных вам страницах.
    • Show complete form in teaser — если вы где-то показываете все формы, то в кратком содержании будет отображаться форма, иначе только на основной странице.
    • Show «Save draft» button — добавляет кнопку сохранения текущих параметров. Это значит что пользователь может сохранить, закрыть сайт, а потом вернуться и продолжить заполнять.
    • Automatically save as draft between pages — принудительно сохраняет значения.
    • Show the notification about previous submissions — показывает то что пользователь уже отсылал письма.
    • Название кнопки для добавления информации — что будет на кнопке которая служит для отправки почты. Напишите «Отправить», иначе будет на англ. Языке.

    Сохраняйте и смотрите что получилось, для этого переходим по адресу site/contact (или тот алиас который вы указали).

    Самое время проверить форму. Для этого заполните нужные поля и нажмитке кнопку «Отправить». После чего письмо будет доставлено на ту почту(ы), которую вы указали на вкладке «Электронные адреса». Вы также можете посмотреть результаты на сайте. Достаточно зайти на страницу формы и нажать «Результаты».

    Урок — модуль WebForm в Drupal 6

    ↑ Настройка Drupal 6
    Урок — модуль WebForm в Drupal 6
    ← Предыдущий урок

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

    Скачайте и установите модуль Webform.

    После установке должен появится контент тип Webform. Создайте материал типа Webform, назовите его Форма заказа товара (или как Вам будет удобно). После создания Вы будете перенаправлены на страницу настройки материала веб-формы.

    Нам необходимо создать два поля под наименование товара и его количество, для этого понадобятся два textfield (текстовые поля).

    В поле наименования нужно написать %get[product]

    В поле цены значение по умолчанию поставим «1».

    Также добавим text field для е-мейла и еще text area для пожеланий и предпочтений клиентов.

    %get[product] — аналогично php-переменной $_GET[‘product’], которая получает значение из URL.

    Форма готова, теперь надо сделать ссылку к этой форме, да и еще к этой ссылке приписать параметр product, в котором будет записано наименование товара. Оформим эту ссылку в виде отдельного блока, который будет размещаться внизу ноды каждого товара.


    Для выполнения следующих операций необходимо включить встроенный модуль PHPi filter, который позволяет вставлять пхп-код прямо в блок или материал. После включения этого модуля должен появиться новый формат ввода PHP code.

    Создадим новый блок и выбирем формат ввода PHP code. В текст блока вставим следующее

    , где node/6 адрес ноды веб-формы заказа товара.

    функция drupal_get_title() возвращает заголовок ноды, в нашем случае заголовком ноды является наименование товара, функция base_path() — возвращает путь к корню сайта (например site-made.ru/). Теперь нужно разместить блок в регион Содержимое (Content). И задать следующую видимость блока в пхп-режиме (PHP mode):

    Здесь tovar машинное имя контент типа Товар.

    Наша форма заказа товара готова.

    ‹ Каталог продукции на Друпале через Таксономию Вверх Drush установка под Windows, настройка. Работа с Друпал из командной строки. ›

    Форма регистрации в мероприятии с помощью webform в Drupal 7

    Понадобилось сделать на сайте формочку, в который бы выводились запланированные администрацией клуба тренировки, а зарегистрированные пользователи могли выбрать из списка тренировку и оставить свою заявку на участие. Итак, приступим!

    Скажу сразу, решения из коробки не нашлось. Но в реализации нет ничего хитрого для тех кто знает тонкости работы Webform, умеет делать модули и эксплуатировать хуки.

    1. Устанавливаем модуль Webform.
    2. Создаем тип материала Тренировка, рабочее название training. И сразу создадим несколько материалов-тренировок. Я вместо заголовка поставил даты.
    3. Создаем форму, а вней создаем компонент формы Тренировка типа select. Теперь все внимание на опцию Load a pre-built option list.

    Идея собственно заключается в том, чтобы написать модуль, в котором мы сделаем свой собственный тип Training, который будет возвращать ноды типа training в это поле выбора.

    Итак, создадим простейший модуль, в котором переопределим хук, отвечающий за вывод набора опций в Load a pre-built option list

    Эта функция добавит новый вид содержимого для поля выбора под названием Trainings. Теперь в этом же модуле нужно разместить функцию которая будет выполняться при выборе опции Training в Load a pre-built option list.

    Эта функция находит все ноды типа training и отдает их список.

    Теперь, если мы зайдем в редактирование компонента Training в нашей форме и откроем список Load a pre-built option list, увидим нашу опцию Training.

    Вы берем эту опцию и увидим как список Options наполнится датами из наших, созданных ранее, материалов.

    В дальнейшем, при добавление новых материалов типа training, этот список будет пополняться автоматически. Все!

    Набор модулей для Webform

    Полезные модули

    Собственно сам модуль Webform
    Webform Ajax — для отправки форм без перезагрузки страницы;
    Webform Hints — для отображения плэйсхолдеров (требует Form Defaults jQuery plugin для поддержки старых браузеров);
    Insert Block — для вывода формы в тексте ноды (есть еще Block Filter, но не заработал с Ajax);
    Webform Confirm Email Address | Webform Confirmation — подтверждение введенного email;
    CAPTCHA Webform Bridge — добавление на формы каптчи (патч для корректной работы с Ajax).

    Модули для добавления полей в форму:
    Webform HTML Textarea — textarea (в том числе и с CKEditor’ом);
    Webform Phone Number — валидация телефонных номеров.

    Проблемы

    Ошибка The submitted from address (=?UTF-8. ) is not valid при попытке отправить оповещение из вебформы.
    Решается сменой имени отправителя в настройках оповещений об отправке формы на более короткое: /node/ /webform/emails/

    Хранить Drupal 7 веб-форм в коде

    Мне интересно, есть ли какое-либо решение для хранения веб-форм в коде. Чтобы вы могли легко дублировать их на других сайтах и ​​связывать их с вашими собственными модулями. Я рассматриваю нечто похожее как API взглядов.

    Если не доступно, сколько людей интересуется такой функциональностью? Я мог бы разработать модуль, который мог бы обрабатывать сохранение веб-форм в коде. И есть ли у вас какие-либо проблемы при создании такого модуля?

    1 ответ

    Не совсем, и нет необходимости в нем

    Если вам нужна форма, доступная из кода, Форма API не так сложно писать с нуля. Вопреки представлениям, вы можете использовать только те объекты Webforms, которые соответствуют их идентификатору узла, и это изменится с сайта на сайт, поэтому формы Webform, связанные с модулем, не будут удобными.

    Если вы хотите связать формы с вашими модулями и по какой-либо причине вы не можете использовать Form API, Интеграция функций UUID и Webform share предоставляют способы сделать это. Это не будет code в чистом виде, но он должен работать.

    Относительно легко использовать hook_form_alter , чтобы получить представление формы API определенной веб-формы. Конечно, вы не сможете легко изменить его в будущем, но опять же, вопреки мнению, это хорошо. Модуль не поврежден, если некоторые данные не отображаются. Данные, не предоставленные или предоставленные в модуле, не ожидают, могут нарушить работу. Поэтому , если модуль нуждается в форме, изменить его нелегко. Изменения в форме потребуют редактирования кода модуля в любом случае, поэтому в этом случае код формы API упрощает, а не сложнее в долгосрочной перспективе.

    Топ-пост этого месяца:  Заказать сайт на конструкторе Tobiz
    Добавить комментарий