0

我想在我的用户创建一段新内容后重定向他们,而不是将他们引导到内容的“查看”页面。

我已经看到提到使用 hook_alter 或其他东西,但我对 drupal 真的很陌生,甚至不确定这意味着什么?

谢谢!

4

2 回答 2

3

正如您提到您是 Drupal 的新手,我建议您看一下规则模块。您可以为已保存/更新的内容添加触发器并添加操作,以将用户重定向到特定页面。

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

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

有关创建模块的基本方法,请参阅本指南。您的模块代码如下所示:

<?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 而不是节点视图页面。

于 2013-06-21T04:19:15.680 回答
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';
}

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

于 2018-08-24T11:04:52.157 回答