Создание гибких анкет в Drupal 7 / Хабрахабр. Обновлено: 0. 9. 0. Выкладываю модуль Webform Multiple Conditions, который реализует описанный в статье функционал без модификации модуля Webform. Патч позволяет через административный интерфейс указывать несколько условий для компонентов формы, а также управлять логикой их совместной работы. Введение. Конечно, в наше время не так уж и трудно подыскать какое- нибудь готовое решение, и благо, что вариантов здесь у нас предостаточно: Можно найти и использовать какой- нибудь мощный и самостоятельный продукт, где, по сути, в сайт интегрируется готовая система. Вторым вариантом является использование какого- нибудь одного из широкого множества тематических сервисов, например Survey. Monkey или Wufoo. У каждого из перечисленных выше вариантов есть свои достоинства и недостатки, на которых я заострять внимание не буду, а предложу рассмотреть решение, на мой взгляд, полезное всем разработчикам, использующим в своем труде Drupal. Динамичное анкетирование. Страница 2 может быть вовсе не показана пользователю, если на первые два вопроса он ответил «ДА». Количество вопросов на третьей странице, куда пользователь попадает всегда, варьируется в зависимости от ответов на первые два вопроса, только условия уже комбинируется через «ИЛИ». На странице результатов всегда выводится текстовое сообщение с благодарностью. Также, если пользователю была отображена страница 2, и он ответил на третий вопрос положительно, то выводится некоторый дополнительный текст. Создание гибкой анкеты в Drupal. Кроме того, элементам типа Markup нельзя присваивать условия, что не позволяет создавать динамичные feedback- страницы с исключительно статичным содержимым. После этого переходим на страницу добавления материалов . Для обозначения вопросов будем использовать кодирование по шаблону «question. Варианты ответов (Options) для простоты используем везде одинаковые, и закодируем согласно требованиям компонента типа Select (ключ. Обратим внимание, что для ряда компонентов, начиная со второй страницы, возможно указать условие (condtional rules), но только одно. Расширяем возможности Webform. Решим поставленную задачу модификации поведения модуля Webform несколько грубо и нетипично для Drupal, внеся ряд изменения напрямую с целью экономии времени. В будущем их вполне можно будет выделить отдельно и создать отдельный модуль (см. Увеличим количество возможных условий, выводимых на странице настройки компонента, с 1 до 1. За сами элементы в Drupal всегда отвечает некоторая функция, которая возвращает структуру Forms API. Чтобы найти её точное название, достаточно в клиентском HTML, например при помощи Firebug’а, определить значение элемента input. В данном случае значение равно «webform. Данная функция расположена в файле . ![]() Теперь нам необходимо выполнить его модификацию, при этом, не поломав работоспособность функций, выполняющих обработку ввода в форму при сабмите (напр. При отладке кода можно заметить вся дополнительная конфигурация компонента сохраняется в поле Extra в таблице компонентов. Поэтому не будет ничего страшного, если мы её расширим, попросту выполнив клонирование элементов 1. Магическое число 1. Drupal variable. Заменим весь код, представляющий условные компоненты, следующим: if ($conditional. Перейдём на страницу настройки произвольного компонента, расположенного на любой странице, кроме первой. Можно заметить, что число условных компонентов увеличилось. Добавим в эту форму ещё одну дополнительную настройку – выбор алгоритма, по которому вычисляется конечный результат выполнения условий, если их сразу несколько. Пусть у нас будет два алгоритма: AND и OR. Прикручиваем jQuery DatePicker к Webform. Складываем скрипты date.js и jquery.datePicker.js в корневик вашей темы или в отдельную папку внутри каталога темы. Темизация Webform для Drupal 7 или куда положить шаблон кроме того, при изменении полей должен выполняться наш javascript. Перемножить значения компонентов WebForm Версия Drupal : Drupal 7.*. Доброго времени суток! Проблема: использую модуль webform. Нужно чтобы после заполнения формы выполнился js. Для этого после предыдущего кода сразу добавим следующий: $form? При обработке конечной клиентской вебфомы, когда пользователь будет заполнять поля, остается старый код, который умеет работать с максимум одним условием и ничего не знает про алгоритмы комбинирования. Осталось найти этот код. Перейдём на страницу формы со стороны клиента (просто нажав View) и отыщем соответствующий input. Его значение равно webform. Drupaler.by » Уроки » Как вывести webform в попапе function example![]() Но, как известно, в Drupal есть способ задания правил соответствия form. А это как раз то, что нам нужно. Получим из неё сведения об алгоритме и все причитающиеся условия: $conditional? Если используется алгоритм «OR», то наличие хотя бы одного положительного результата делает всё выражение положительным, если же алгоритм «AND», то наоборот, один отрицательный результат делает всё выражение отрицательным. Настроим их: Question 1 is one of . ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2016
Categories |