web-dev-qa-db-ja.com

ノードの追加/編集後にユーザーをリダイレクトする

ユーザーがノードを作成または編集した後で、ユーザーをカスタムページにリダイレクトしたい。

13
ousneo

hook_form_alter リダイレクトパスを設定できるカスタム送信ハンドラを追加します。

フォームのリダイレクトの詳細については、 [〜#〜] fapi [〜#〜] を参照してください。

6
googletorp

ユーザーが特定のコンテンツタイプを作成または編集するときに、ユーザーを任意のページにリダイレクトするルールを作成できます。ルールを追加するときは、「新しいコンテンツの作成後」を選択し、「コンテンツにタイプがある」という条件も追加します。 [実行する]セクションには、ユーザーを任意のページにリダイレクトするオプションがあります。

ノードの編集後のリダイレクトの場合、新しいルールを作成し、最初のオプションとして[既存のコンテンツの更新後]を選択します。

4
user2014

これを行うときは、既存のノードを編集するために編集ボタンをクリックしたときに通常URLに追加される可能性のある既存の宛先も設定解除するようにしてください。

MYMODULE_form_article_node_form_alterarticleをコンテンツタイプのマシン名に置き換えます。

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function MYMODULE_form_article_node_form_alter(&$form, &$form_state, $form_id) {

  $form['actions']['submit']['#submit'][] = '_MYMODULE_node_form_redirect';
}

/**
 * Submit callback.
 */
function _MYMODULE_node_form_redirect($form, &$form_state) {

  // Unset destination first.
  unset($_GET['destination']);
  unset($_REQUEST['edit']['destination']);

  $form_state['redirect'] = 'FOO/BAR';
}
2
leymannx

ドキュメントはあまり明確ではありませんが、$_GET['destination']または$_REQUESTではなく、$form_state['redirect']変数を変更する必要があります。

1
Dmitry Vyal

Drupal 7では、ノード編集フォームを変更して独自の送信関数を「アタッチ」できます。ここで、ノード削除確認フォームのform_stateを変更して「宛先」パラメータを含めることができます...これを、「7つの」管理テーマのサブテーマとして開発してきたカスタムテーマで実行しました...

hook_form_FORM_ID_alter のドキュメント

このフックは、モジュールだけでなく、テンプレート/テーマにも追加できます。

だからあなたのテーマのtemplate.php、このフォームの変更フックを追加します。

function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
    $form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}

そして出来上がり。ノードが削除された後にホームページにリダイレクトされなくなりました。

1
kris

ここからの解決策 http://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7#comment-18139

<?php
  function FORM_NAME_form_submit($form, &$form_state) {
    $form_state['redirect'] = array(
      // $path
      'path/to/redirect/to',
      // $options
      array('query' => array('key' => 'value')),
      // $http_response_code
      302,
    );
  }  
?>
0
Eugene Fidelin