我有一个Drupal网站,它使用Quiz模块来管理对访问者的测试。这些测试需要对匿名用户可用。我的问题是,我需要能够要求考生输入姓名和电子邮件,这样才能将结果发送给他们。我只是不知道该怎么做。我认为自己是Drupal和PHP的初学者。任何帮助都将不胜感激。
发布于 2011-11-29 00:14:00
最重要的是,创建一个custom module。
-Secondly,您需要添加电子邮件地址和名称字段。您可以通过在自定义模块中通过hook_form_alter添加这两个字段,或者启用并使用包含在您的测验模块中的简答模块/字段,然后根据您的需要自定义字段的样式(因为它看起来像一个问题)。就我个人而言,我建议使用hook_form_alter添加它们。另外,我建议你在Drupal中学习Hooks,它会让你的生活变得更容易。
-You必须验证并检索这两个字段的值。您也可以为此使用相同的form_alter钩子。到测验表单的验证和提交堆栈的Add a validation and a submission function ($form['#validate'][] = 'your_validate_function';
和$form['#submit'][] = 'your_submit_function';
)。您可以使用Drupal的函数valid_email_address来验证您的电子邮件,当然,您也可以验证其他字段并调用Drupal的form_set_error来通知用户任何输入错误。
提交测验后发送电子邮件,在您的-To函数中调用Drupal的drupal_mail,它基本上接受发送电子邮件所需的所有参数。您必须在自定义模块中创建一个hook_mail。查看如何执行此here的示例。您可以从本地数组$ form _state' values‘中检索表单值(姓名和电子邮件地址),将它们作为$params传递给drupal_mail函数,并将它们添加到hook_mail函数中的电子邮件正文中。就是这样:D
-Alternatively,您可以通过创建操作并分配要在用户完成此测验后执行的操作来发送电子邮件。测验模块对此提供了支持。这里有一个how to write an action的例子。
发布于 2014-06-11 10:50:47
您也可以使用hook_quiz_finished
代替表单提交回调。测验模块使用它来执行一些操作,比如在测验结束时通过电子邮件发送结果。
function mymodule_quiz_finished($quiz, $score, $session_data) {
//Sending e-mail.
}
发布于 2016-12-11 10:09:43
如果您在这里结束,并且您正在使用Drupal7,请转到Rules http://www.yourwebsite.com/admin/config/workflow/rules,并在设置下将测验模块已经可用的规则设置为活动,该规则称为“在测验结束时发送测验结果”。我找不到在测验配置本身的任何地方做这件事的能力。经过测试并正常工作。确保启用了规则模块UI,以允许您进行编辑。
https://stackoverflow.com/questions/8302574
复制相似问题