ユーザーがノードを作成または編集した後で、ユーザーをカスタムページにリダイレクトしたい。
hook_form_alter
リダイレクトパスを設定できるカスタム送信ハンドラを追加します。
フォームのリダイレクトの詳細については、 [〜#〜] fapi [〜#〜] を参照してください。
ユーザーが特定のコンテンツタイプを作成または編集するときに、ユーザーを任意のページにリダイレクトするルールを作成できます。ルールを追加するときは、「新しいコンテンツの作成後」を選択し、「コンテンツにタイプがある」という条件も追加します。 [実行する]セクションには、ユーザーを任意のページにリダイレクトするオプションがあります。
ノードの編集後のリダイレクトの場合、新しいルールを作成し、最初のオプションとして[既存のコンテンツの更新後]を選択します。
これを行うときは、既存のノードを編集するために編集ボタンをクリックしたときに通常URLに追加される可能性のある既存の宛先も設定解除するようにしてください。
MYMODULE_form_article_node_form_alter
のarticle
をコンテンツタイプのマシン名に置き換えます。
/**
* 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';
}
ドキュメントはあまり明確ではありませんが、$_GET['destination']
または$_REQUEST
ではなく、$form_state['redirect']
変数を変更する必要があります。
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";
}
そして出来上がり。ノードが削除された後にホームページにリダイレクトされなくなりました。
ここからの解決策 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,
);
}
?>