it-swarm.it

Reindirizzare l'utente dopo l'aggiunta / modifica del nodo

Voglio reindirizzare gli utenti a una pagina personalizzata, dopo aver creato un nodo o averlo modificato.

13
ousneo

Puoi usare hook_form_alter per aggiungere un gestore di invio personalizzato in cui è possibile impostare il percorso di reindirizzamento.

Vedi FAPI per maggiori dettagli sul reindirizzamento dei moduli.

6
googletorp

È possibile creare una regola che reindirizza l'utente a qualsiasi pagina quando crea o modifica un tipo di contenuto specifico. Quando aggiungi una regola seleziona "Dopo aver creato il nuovo contenuto" aggiungi anche una condizione di "Il contenuto ha il tipo". La sezione Fai ti darà la possibilità di reindirizzare un utente a qualsiasi pagina desideri.

Per un reindirizzamento dopo aver modificato un nodo, basta creare una nuova regola e selezionare "Dopo l'aggiornamento del contenuto esistente" come prima opzione.

4
user2014

Nel fare ciò, assicurati anche di deselezionare una possibile destinazione esistente che normalmente viene aggiunta all'URL quando fai clic sul pulsante Modifica per modificare un nodo esistente.

Sostituisci article in MYMODULE_form_article_node_form_alter con il nome della macchina del tipo di contenuto.

/**
 * 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 documentazione non è molto chiara, ma è necessario modificare $_GET['destination'] variabile, non $_REQUEST o $form_state['redirect'].

1
Dmitry Vyal

in Drupal 7 è possibile modificare il modulo di modifica del nodo per "allegare" la propria funzione di invio, in cui è possibile modificare form_state del modulo di conferma dell'eliminazione del nodo per includere il parametro "destinazione" ... ho appena fatto questo in un tema personalizzato che ho sviluppato come sottotema del tema "sette" dell'amministratore ...

Documentazione per hook_form_FORM_ID_alter

È possibile aggiungere questo hook a un modello/tema, non solo ai moduli.

quindi in template.php, aggiungi questo modulo alter hook:

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

e poi voilà. non reindirizzato più alla homepage dopo l'eliminazione di un nodo.

1
kris

Soluzione da qui 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