Drupal 7 网络表单重定向
Drupal 7 Webform redirect
我们有一个 Drupal 7 网络表单,在成功提交后会重定向到 url。
我们需要做的是,如果用户再次登陆同一个网络表单并且已经提交,则重定向用户。
我们是否需要一个模块,或者以编程方式进行?
提前致谢。
我查看了 webform 模块,没有找到任何在用户已经提交表单的情况下重定向用户的设置,所以我认为您需要以编程方式进行。
注意:通过使用规则模块,可以在没有自定义模块的情况下实现。这个我没试过。
要以编程方式执行此操作,您可以执行如下操作。它实现 hook_node_view()
并检查用户是否已经使用网络表单 api 函数 webform_get_submission_count()
提交了任何内容。 (编辑:此示例中的自定义模块称为 example_webform)
<?php
/**
* Implements hook_node_view().
*/
function example_webform_node_view($node, $view_mode, $langcode) {
global $user;
module_load_include('inc', 'webform', 'includes/webform.submissions');
$submission_count = webform_get_submission_count($node->nid, $user->uid);
if (!empty($submission_count) && $submission_count > 0) {
$redirect = $node->webform['redirect_url'];
drupal_goto($redirect);
}
}
现在它将重用提交表单时使用的页面,因此如果您选择这样做,请记住让成功页面反映这一点。 (例如,如果用户第二次登陆成功页面,显示 "your post has been saved" 会很奇怪。)或者您可以将 $redirect
替换为另一个页面,而不是来自 webform 设置的页面。
另请注意,如果启用此功能,网络表单仍会添加消息 "You have already submitted this form. View your previous submissions."。
这是我们最终采用的解决方案。
- 我保存了网络表单并将其作为一个块提供
- 我创建了一个页面来保存网络表单
- 我将块配置为显示在页面内容上方
- 在页面内容中我放入了一些 javascript 来检测表单元素是否存在 - 如果没有转发到正确的 url
因此网络表单在提交时正确重定向(在网络表单设置中设置),然后如果用户返回该页面并完成网络表单则重定向。
我们有一个 Drupal 7 网络表单,在成功提交后会重定向到 url。
我们需要做的是,如果用户再次登陆同一个网络表单并且已经提交,则重定向用户。
我们是否需要一个模块,或者以编程方式进行?
提前致谢。
我查看了 webform 模块,没有找到任何在用户已经提交表单的情况下重定向用户的设置,所以我认为您需要以编程方式进行。
注意:通过使用规则模块,可以在没有自定义模块的情况下实现。这个我没试过。
要以编程方式执行此操作,您可以执行如下操作。它实现 hook_node_view()
并检查用户是否已经使用网络表单 api 函数 webform_get_submission_count()
提交了任何内容。 (编辑:此示例中的自定义模块称为 example_webform)
<?php
/**
* Implements hook_node_view().
*/
function example_webform_node_view($node, $view_mode, $langcode) {
global $user;
module_load_include('inc', 'webform', 'includes/webform.submissions');
$submission_count = webform_get_submission_count($node->nid, $user->uid);
if (!empty($submission_count) && $submission_count > 0) {
$redirect = $node->webform['redirect_url'];
drupal_goto($redirect);
}
}
现在它将重用提交表单时使用的页面,因此如果您选择这样做,请记住让成功页面反映这一点。 (例如,如果用户第二次登陆成功页面,显示 "your post has been saved" 会很奇怪。)或者您可以将 $redirect
替换为另一个页面,而不是来自 webform 设置的页面。
另请注意,如果启用此功能,网络表单仍会添加消息 "You have already submitted this form. View your previous submissions."。
这是我们最终采用的解决方案。
- 我保存了网络表单并将其作为一个块提供
- 我创建了一个页面来保存网络表单
- 我将块配置为显示在页面内容上方
- 在页面内容中我放入了一些 javascript 来检测表单元素是否存在 - 如果没有转发到正确的 url
因此网络表单在提交时正确重定向(在网络表单设置中设置),然后如果用户返回该页面并完成网络表单则重定向。