Уважаемое сообщество!
Возникла необходимость после создания комментария, перенаправлять пользователя на определенную станицу. Решение взял на примере: http://drupal.stackexchange.com/questions/72307/how-do-i-redirect-back-t....
Например, пользователь оставляет комментарий на странице site. ru/comment/reply/23?q=[nid]. После создания комментария его должно перенаправить на страницу site .ru/node/[nid]. Одако этого не происходит. Выдает что аргумент отсутствует.
Может кто сталкивался с подобной проблемой и может подсказать решение?
Испробованы решения:
- $nid = arg(3) - вариант не подходит;
- $nid = $_GET['q']; - говорит что нет аргумента
- request_uri(); - выдает ссылку без ?q=[nid]
Комментарии
$nid = arg(2);
$form_state['redirect'] = 'mymodule/' . $nid;
}
Есть подозрение, что у вас не отрабатывает вот этот кусок кода.
Я же правильно вас понимаю, что вы создали свой модуль, вставили этот код, переименовав название хука, потом его включили, сбросили кеш - и не работает?
Создал свой модуль, вставил измененный код, на основе этого, сбросили кеш и не работает.
Если подставить статическое значение, например: $form_state['redirect'] = 'node/1';, то хук отрабатывает как надо. Значит проблема с получением аргумента.
Аргумент получаю так: $form_state['redirect'] = 'node/'.$_GET['q'];
Все это дело работает если я хочу перенаправить пользователя после создания ноды. Если же делать тоже самое для комментария - аргумент почему-то не передается.
по идее должно быть arg(1), ибо ссылка на ноду node/$nid
А, стоп, стоп.
Есть замечательная функция
которая позволит вам получить значение q после саммой ссылки. Хотя я бы не рекомендовал вам использовать q, так как эта переменная (название) служит для системных ссылок.
Далее вы через нее получите массив, в котором будет ваше значение.
Можете передавать nid или что-то другое (я вообще умудряюсь там пихать все - начиная от дат, заканчивая...).
Только добавьте check_plain для значения. Мало ли..
Спасибо! Наконец заработало. Еще был небольшой косяк: функцию нужно было называть не function MYMODULE_custom_comment_submit_handler, а MYMODULE_custom_comment_form_submit.
Ну это само собой )