it-swarm-eu.dev

Přesměrování uživatele po přidání / úpravě uzlu

Chci přesměrovat uživatele na vlastní stránku poté, co vytvoří uzel nebo upraví.

14
ousneo

Můžeš použít hook_form_alter přidat vlastní obslužný program pro odesílání, kde můžete nastavit cestu přesměrování.

Další podrobnosti o přesměrování formuláře naleznete v FAPI .

6
googletorp

Můžete vytvořit pravidlo, které přesměruje uživatele na jakoukoli stránku, když vytvoří nebo upraví určitý typ obsahu. Když přidáte pravidlo, vyberte „Po vytvoření nového obsahu“ přidejte také podmínku „Obsah má typ“. Sekce Do Do (Do) vám dává možnost přesměrovat uživatele na jakoukoli stránku, kterou chcete.

Chcete-li přesměrovat uzel po úpravě uzlu, jednoduše vytvořte nové pravidlo a jako první možnost vyberte možnost „Po aktualizaci existujícího obsahu“.

4
user2014

Přitom se ujistěte, že jste také zrušili možný existující cíl, který se obvykle přidá do adresy URL, když klepnete na tlačítko Upravit a upravíte existující uzel.

Nahradit article v MYMODULE_form_article_node_form_alter s názvem počítače typu vašeho obsahu.

/**
 * 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

Dokumentace není příliš jasná, ale měli byste upravit $_GET['destination'] proměnná, ne $_REQUEST nebo $form_state['redirect'].

1
Dmitry Vyal

v Drupal 7 můžete změnit editační formulář uzlu na 'připojit' svou vlastní funkci odeslání, ve které můžete změnit form_state formuláře potvrzení výmazu uzlu tak, aby obsahoval parametr 'cíl' ... právě jsem to udělal ve vlastním motivu, který jsem vyvíjel jako podtémum 'sedmiho' administrátorského tématu ...

Dokumentace pro hook_form_FORM_ID_alter

Tento háček můžete přidat do šablony/motivu, nejen do modulů.

takže v motivu template.php, přidejte tento formulář změnit háček:

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

a pak, voila. po odstranění uzlu již není přesměrován na domovskou stránku.

1
kris

Řešení odtud 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