Модуль Drupal Quiz - отправка результатов по электронной почте после прохождения теста - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть веб-сайт Drupal, который использует модуль Quiz для администрирования тестов для посетителей. Эти тесты должны быть доступны анонимным пользователям. Моя проблема в том, что мне нужно попросить тестируемого ввести имя и адрес электронной почты, чтобы результаты могли быть отправлены им. Я просто не знаю, как это сделать. Я считаю себя новичком в Drupal и PHP. Любая помощь будет оценена.

Ответы [ 3 ]

5 голосов
/ 29 ноября 2011

- Прежде всего, создайте пользовательский модуль .

Во-вторых, вам нужно добавить поля адреса электронной почты и имени.Вы можете сделать это, либо добавив два поля с помощью hook_form_alter в свой пользовательский модуль, либо включив и используя модуль / поле «Короткий ответ», входящий в ваш модуль Quiz, а затем настроив стиль поля в соответствии с вашимпотребности (потому что это будет выглядеть как вопрос).Лично я бы порекомендовал добавить их с помощью hook_form_alter.Кроме того, я предлагаю вам узнать о хуках в Drupal, это облегчит вашу жизнь.

-Вы должны проверить и получить значения для двух полей.Вы также можете использовать тот же хук form_alter для этого. Добавьте функцию проверки и отправки к проверке и стеку отправки вашей формы Викторины ($form['#validate'][] = 'your_validate_function'; и $form['#submit'][] = 'your_submit_function';).Вы можете проверить свою электронную почту с помощью функции Drupal valid_email_address и, конечно, вы можете проверить другие поля и вызвать Drupal form_set_error , чтобы уведомлять пользователей о любых ошибках ввода.

-Для отправки вашего электронного письма после отправки теста, вызовите drupal_mail Drupal в функции отправки, которая в основном принимает все параметры, необходимые для отправки электронного письма.Вам нужно будет создать hook_mail в вашем пользовательском модуле.Посмотрите пример того, как это сделать здесь .Вы можете извлечь значения формы (имя и адрес электронной почты) из локального массива $ form_state ['values'], передать их как $ params в вашу функцию drupal_mail и добавить их в тело вашего письма в вашей функции hook_mail.И это все: D

- В качестве альтернативы вы можете отправить электронное письмо, создав действие и назначив действие, которое будет выполнено после того, как пользователь завершит этот тест.Модуль Quiz имеет поддержку для этого.Вот пример как написать действие .

1 голос
/ 11 июня 2014

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

function mymodule_quiz_finished($quiz, $score, $session_data) {
  //Sending e-mail.
}
0 голосов
/ 11 декабря 2016

Если вы закончили здесь и используете Drupal 7, перейдите к Правилам http://www.yourwebsite.com/admin/config/workflow/rules, и задайте правило, которое модуль Quiz сделал доступным уже активным в настройках, правило называется «Отправить результаты теста наконец викторины ".Я не мог найти возможность сделать это где-нибудь в самой конфигурации Quiz.Проверено и работает.Убедитесь, что пользовательский интерфейс модуля правил включен, чтобы вы могли вносить изменения.

...