Je souhaite rediriger les utilisateurs vers une page personnalisée, après avoir créé un nœud ou l'éditer.
Vous pouvez utiliser hook_form_alter
pour ajouter un gestionnaire d'envoi personnalisé dans lequel vous pouvez définir le chemin de redirection.
Voir FAPI pour plus de détails sur la redirection des formulaires.
Vous pouvez créer une règle qui redirige l'utilisateur vers n'importe quelle page lorsqu'il crée ou modifie un type de contenu spécifique. Lorsque vous ajoutez une règle, sélectionnez "Après la création de nouveau contenu", ajoutez également une condition de "Contenu de type". La section You Do vous donnera la possibilité de rediriger un utilisateur vers la page de votre choix.
Pour une redirection après avoir modifié un nœud, créez simplement une nouvelle règle et sélectionnez "Après la mise à jour du contenu existant" comme première option.
Lorsque vous effectuez cette opération, assurez-vous de désactiver également une destination existante possible qui est normalement ajoutée à l'URL lorsque vous cliquez sur le bouton Modifier pour modifier un nœud existant.
Remplacez article
dans MYMODULE_form_article_node_form_alter
avec le nom d'ordinateur de votre type de contenu.
/**
* 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';
}
La documentation n'est pas très claire à ce sujet, mais vous devez modifier $_GET['destination']
variable, pas $_REQUEST
ou $form_state['redirect']
.
dans Drupal 7, vous pouvez modifier le formulaire de modification de nœud pour 'attacher' votre propre fonction d'envoi, dans laquelle vous pouvez modifier form_state du formulaire de confirmation de suppression de nœud pour inclure le paramètre 'destination' ... vient de le faire dans un thème personnalisé que j'ai développé en tant que sous-thème du thème d'administration "sept" ...
Documentation pour hook_form_FORM_ID_alter
Vous pouvez ajouter ce crochet à un modèle/thème, pas seulement aux modules.
donc dans template.php
de votre thème, ajoutez ce formulaire alter hook:
function yourtheme_node_delete_form_submit( &$form, &$form_state ) {
$form_state[ 'redirect' ][ 1 ][ 'query' ][ 'destination' ] = "admin/content";
}
et puis, le tour est joué. n'est plus redirigé vers la page d'accueil après la suppression d'un nœud.
Solution d'ici 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,
);
}
?>