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

これを行うには、 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 に答える
4

または、コードを記述したくない場合は、ルールモジュールを試してください:http://drupal.org/project/rules

新しいルールを追加し、「イベントに反応」を「新しいコンテンツを保存した後」に設定します。

アクションを「システム:ページリダイレクト」に設定し、フィールドに適切に入力します。

このルールをコードに組み込みたい場合は、モジュールにエクスポートできます。

于 2012-06-04T22:25:42.890 に答える
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 に答える