Перенаправление пользователя после добавления/редактирования узла
Я хочу перенаправлять пользователей на пользовательскую страницу после того, как они создадут узел или отредактируют его.
6 answers
Вы можете использовать hook_form_alter
чтобы добавить пользовательский обработчик отправки, в котором вы можете задать путь перенаправления.
Смотрите FAPI для получения более подробной информации о перенаправлении форм.
Вы можете создать правило, которое перенаправляет пользователя на любую страницу при создании или редактировании определенного типа контента. При добавлении правила выберите "После создания нового контента", добавьте также условие "Контент имеет тип". Раздел "Вы делаете" даст вам возможность перенаправить пользователя на любую нужную вам страницу.
Для перенаправления после редактирования узла просто создайте новое правило и выберите "После обновления существующего содержимого" в качестве первого варианта.
При этом убедитесь, что вы также отключили возможное существующее назначение, которое обычно добавляется в 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';
}
Документация по этому вопросу не очень ясна, но вы должны изменить переменную $_GET['destination']
, а не $_REQUEST
или $form_state['redirect']
.
В 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";
}
А затем вуаля. больше не перенаправляется на домашнюю страницу после удаления узла.
Решение отсюда 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,
);
}
?>