4

在 Drupal 7 上,当我发布一个节点时,我重定向到创建的特定节点。

当我正确发布节点时,我正在搜索重定向到主管理页面。

我试图把它放在 template.php 上:

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

但是提交时出错:

致命错误:无法在 /var/www/XXX/sites/all/themes/XXX/template.php 中重新声明 node_submit()(之前在 /var/www/XXX/modules/node/node.module:1004 中声明)在线xx

4

6 回答 6

6

如果您要做的只是更改用户在提交添加节点表单后从特定链接重定向到的位置,那么有一种更简单的方法。

只需让您的链接看起来像这样:

/node/add/[CONTENT-TYPE]?destination=[URL-REDIRECT]

这是我开始工作的一个例子:

/node/add/ic-competencies-toolkit-codes?destination=admin/survey-codes
于 2013-01-29T20:13:33.717 回答
5

这对我有用:

function mymodule_form_FORM_ID_alter(&$form, $form_state){
    $form['actions']['submit']['#submit'][] = 'mymodule_redirect_callback';
}

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

需要注意的重要一点是:

$form['actions']['submit']['#submit'][] = 'some_function';

会工作,但是

$form['#submit'][] = 'some_function';

将不会

于 2013-11-26T09:45:30.937 回答
4

或者,如果您不想编写代码,请尝试使用规则模块:http ://drupal.org/project/rules

添加新规则并将“对事件做出反应”设置为“保存新内容后”。

将操作设置为:“系统:页面重定向”并正确填写字段。

如果您希望将此规则放入代码中,可以将它们导出到模块中!

于 2012-06-04T22:25:42.890 回答
4

您可以使用hook_form_alter () 来做到这一点。

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id)
{
  if ($form_id == "CONTENT_TYPE_node_form") {
    $form['#redirect'] = "node";
  }
}

希望这有效。

于 2012-06-01T12:15:32.820 回答
1

重定向评论表单或节点表单的最简单方法

case 'my_node_form':
        $form['#action'] .= '?destination=well-done';
      break;

请注意“。” 在 $form['#action'] 之后

你需要追加而不是替换!

于 2014-04-26T15:29:01.733 回答
1

在 Drupal 7 中,这是正确的方法:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if($form_id === 'myform_id'){
    $form['#submit'][] = '_mymodule_redirect_callback';
  }

function _mymodule_redirect_callback($form, &$form_state) {
  $form_state['redirect'] = 'http://www.google.ch';
}
于 2014-03-07T07:52:08.027 回答