Изменить редирект после сохранения формы

04 Сен 2009
Опубликовано VladSavitsky
Задача: 

После сохранения ноды пользователь переходит на страницу просмотра только что сохранённой ноды (вкладка 'View'). Нужно сделать редирект на произвольный URL.

Нужно создать (если нужно) модуль и в файл MODULENAME.module добавить:

function MODULENAME_form_alter(&$form, &$form_state, $form_id) {
    if ('page' == $form['#node']->type){
      $form['#redirect']  = 'thanks_page';
    }  
}

Данный код сработает перед выводом формы редактирования в браузер пользователя и в этой форме будет изменён стандартный редирект. Это делается для нод определённого типа - page. Можно использовать любые другие условия.

Если нужно в пути использовать спец. символы, то нужно использовать конструкцию подобную этой:

function MODULENAME_form_alter(&$form, &$form_state, $form_id) {
    if ('page' == $form['#node']->type){
      $form['#redirect']  = array('flex', 'component=pbrowser', 't=1');
    }  
}

Иначе Drupal заменит специальные символы (?, & и др.) на безопасные.

Полезные ссылки
Redirecting with query string

Использованные материалы: 
Авторы решений:
Версия Drupal:
Drupal API:

Комментарии

кому ломает делать модуль, не забудьте также про тематизацию, где на препроцессоре формы ноды можно также изменить редирект, акшн и всё-всё-всё :)

Nikit | Сен 5th, 2009 в 2:17 утра
 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>