web-dev-qa-db-fra.com

Rediriger l'utilisateur après l'ajout / modification d'un nœud

Je souhaite rediriger les utilisateurs vers une page personnalisée, après avoir créé un nœud ou l'éditer.

13
ousneo

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.

6
googletorp

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.

4
user2014

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';
}
2
leymannx

La documentation n'est pas très claire à ce sujet, mais vous devez modifier $_GET['destination'] variable, pas $_REQUEST ou $form_state['redirect'].

1
Dmitry Vyal

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.

1
kris

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,
    );
  }  
?>
0
Eugene Fidelin