如何在创建新内容后重定向Drupal用户

时间:2013-06-21 03:35:19

标签: drupal drupal-7 drupal-modules drupal-views

我希望在用户创建新内容后重定向用户,而不是将其引导至内容的“查看”页面。

我已经看到过使用hook_alter或者其他东西,但是我对drupal很新,甚至不确定这意味着什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

当你提到你是Drupal的新手时,我建议你看看Rules module。您可以为已保存/更新的内容添加触发器并添加操作,以将用户重定向到特定页面。

但是,您可以使用form_alter挂钩在轻量级自定义模块中执行相同操作。

首先,找到表单的表单ID。对于节点表单,它是[node-type] _node_form。 然后,您可以添加要在提交表单时执行的新提交函数。在此提交处理程序中,设置重定向路径。

this guide on a basic how-to on creating a module。 您的模块代码类似于下面的内容:

<?php
function mymodule_mytype_node_form_alter(&$form, &$form_state) {
  $form['#submit'][] = 'mymodule_node_submit_do_redirect';
}

function mymodule_node_submit_do_redirect($form, &$form_state) {
  $form_state['redirect'] = 'my_custom_destination';
}

更简单的方法是在节点表单的URL中设置目标。 例如,如果您打开http://example.com/node/add/mytype?destination=my_custom_destination,您将被重定向到该URL而不是节点视图页面。

答案 1 :(得分:0)

在创建新模块之后,使用Drupal 7可以使用该功能! 将以下PHP代码放入.module文件:

<?php
function custom_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == '[node-type]_node_form') {
        $form['actions']['submit']['#submit'][]= 'my_custom_submit_handler';
}
}

function my_custom_submit_handler($form, &$form_state) {
  $form_state['redirect'] = 'http://www.expamle.eu/?q=node/2';
}

您只需要用您的节点类型名称(例如:example_node_form)更改[node-type] _node_form,并使用正确的URL更改http://www.expamle.eu/?q=node/2