Перенаправление пользователя после добавления/редактирования узла


Я хочу перенаправлять пользователей на пользовательскую страницу после того, как они создадут узел или отредактируют его.

Author: kiamlaluno, 2011-05-09

6 answers

Вы можете использовать hook_form_alter чтобы добавить пользовательский обработчик отправки, в котором вы можете задать путь перенаправления.

Смотрите FAPI для получения более подробной информации о перенаправлении форм.

 6
Author: googletorp, 2011-05-09 10:13:42

Вы можете создать правило, которое перенаправляет пользователя на любую страницу при создании или редактировании определенного типа контента. При добавлении правила выберите "После создания нового контента", добавьте также условие "Контент имеет тип". Раздел "Вы делаете" даст вам возможность перенаправить пользователя на любую нужную вам страницу.

Для перенаправления после редактирования узла просто создайте новое правило и выберите "После обновления существующего содержимого" в качестве первого варианта.

 4
Author: kiamlaluno, 2013-05-16 19:24:45

При этом убедитесь, что вы также отключили возможное существующее назначение, которое обычно добавляется в URL-адрес при нажатии кнопки "Изменить" для редактирования существующего узла.

Замените article в MYMODULE_form_article_node_form_alter именем компьютера вашего типа контента.

/**
 * 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
Author: leymannx, 2018-08-16 10:35:06

Документация по этому вопросу не очень ясна, но вы должны изменить переменную $_GET['destination'], а не $_REQUEST или $form_state['redirect'].

 1
Author: Dmitry Vyal, 2011-08-18 20:40:53

В Drupal 7 вы можете изменить форму редактирования узла, чтобы "прикрепить" свою собственную функцию отправки, в которой вы можете изменить form_state формы подтверждения удаления узла, чтобы включить параметр "назначение"... просто сделал это в пользовательской теме, которую я разрабатывал как подтему темы администратора "семь"...

Документация для hook_form_FORM_ID_alter

Вы можете добавить этот крючок в шаблон/тему, а не только в модули.

Итак, в вашей теме template.php добавьте эту форму изменить крюк:

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

А затем вуаля. больше не перенаправляется на домашнюю страницу после удаления узла.

 1
Author: kris, 2012-12-12 02:23:36

Решение отсюда 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
Author: Eugene Fidelin, 2012-08-29 13:42:00