Пример редиректа на страницу my/super/page
после добавления материала типа article
:
Drupal 7:
/**
* Implements hook_form_FORM_ID_alter().
*/
function mymodule_form_article_node_form_alter(&$form, &$form_state) {
$form['actions']['submit']['#submit'][] = 'mymodule_article_node_form_submit';
}
/**
* Custom article_node_form submit callback.
*/
function mymodule_article_node_form_submit($form, &$form_state) {
$form_state['redirect'] = 'my/super/page';
}
Drupal 6:
/**
* Implements hook_form_FORM_ID_alter().
*/
function mymodule_form_article_node_form_alter(&$form) {
$form['buttons']['submit']['#submit'][] = 'mymodule_article_node_form_submit';
}
/**
* Custom article_node_form submit callback.
*/
function mymodule_article_node_form_submit($form, &$form_state) {
$form_state['redirect'] = 'my/super/page';
}
Написанное актуально для
Drupal 6, Drupal 7
Похожие записи
- Модуль Auto-Dialog — показываем контент и формы в jQuery диалоге
- Как изменить сообщение, выводимое после создания материала
- Модуль References dialog — расширение возможностей виджета у полей типа entity reference
- Уведомление пользователя об удалении его материала с указанием причины
- Человечные заголовки у форм создания материалов
Комментарии
Здравствуйте. Хотелось бы узнать как сделать редирект на авторизацию перед созданием ноды если пользователь не авторизован. И после правильного введения логина и пароля чтобы открывался оверлей.
в hook_form_alter проверяете user_is_anonymous(), если true - делаете drupal_goto('user/login'). про оверлей не знаю
Спасибо это как раз то что мне было нужно :)
а как сделать редирект после изменения комментария? например у меня для вывода ноды используется ссылка на термин таксономии, и хотелось чтобы после изменения коментария (при нажатии на кнопку "сохранить") открылась страница с которой было инициирование изменение комментария. сейчас при нажатии кнопки "сохранить" редиректит на ноду. почему так - просто создал отображение во views именно по термину таксономии
заменить
article_node_form
на id соответствующей формыэто понятно, а как сюда передать url с которого нажали на изменение комментария, ведь редиректить придется на разные url? если на пальцах то сейчас происходит так: со страницы site.ru/taxonomy/term/234 нажимаем на ссылку редактирования камента site.ru/comment/edit/128 - открывается новая страница, где редактируем камент, жмем сохранить и происходит редирект на ноду site.ru/node/64 которая и содержит в себе комментарии. а в моем конкретном случае надо чтобы вернулось на site.ru/taxonomy/term/234. вообще, можно даже на .../234/#comment-128 - т.е. на ссылку, к которой и приписан сам камент.
подскажите, а куда этот код необходимо вставить? и подойдет ли это решение для drupal 6.22? тоже задался вопросом по редиректу со страницы редактирования комментария...
http://xandeadx.ru/blog/drupal/256
да
А как сделать редирект на страницу с которой попали на страницу с формой?,
Всем привет! Подскажите, а как изменить этот код, чтобы при создании материала Гостем шел редирект на одну страницу, а остальными - как обычно. Ну чтобы незарегистрированные юзеры могли создав материал (который не публикуется), перейти на страницу с надписью "Спасибо, бла-бла-бла". А когда тоже самое делает зарегеный юзер (из какой-либо роли), то ничего ему не подсовывается.
Подозреваю, что в коде необходимо делать проверку на роль.
Уже сам догнал))
function mymodule_article_node_form_submit($form, &$form_state) {
global $user;
if (!($user->uid == '1' || in_array('Руководство',$user->roles))) {
$form_state['redirect'] = 'my/super/page';
}
}
И тогда если вы - администратор или ваш аккаунт находится в роли Руководство, то никакого редиректа не произойдет.
Но тут возникли мысли про эту функцию
function mymodule_form_article_node_form_alter(&$form) {
$form['actions']['submit']['#submit'][] = 'mymodule_article_node_form_submit';
}
Можно ли как-то проверить, что нода не просто сабмитится, а например, добавляется. Или сабмитится при редактировании. Или сабмитится при удалении.
Не подскажите как из формы установить тайтл для страницы, на которую идет редирект?
никак
Подскажите, как передать nid ноды, с которой редиректится форма? Например для произвольной переменной $id на странице my/super/page.
передавайте в GET
Не подскажите как из формы установить тайтл для страницы, на которую идет редирект?
Очень даже можно.
Через сессию.
А каким образом можно использовать это для модуля contact в Drupal 6?
таким же
То есть у меня
в самом модуле contact за редирект отвечает
function contact_mail_user_submit($form, &$form_state) {...}
. Как её переписать?custom_ВОТ_ТУТ_НЕ_ПОЙМУ -> custom_...
)) А вот где
$form['buttons']['submit']['#submit'][] = 'custom_...';
там надо писать
custom_contact_mail_user_submit
или id какой-то?что угодно
спасибо
эх, что-то нифига не работает))
вот что было contact.pages.inc
http://pastebin.com/MxC8pznB
и
http://pastebin.com/19nn6d2F
А вот что написал я в своем модуле:
Как я понимаю, при нажатии на сабмит должен происходить редирект на 'some_url', а перекидует на "user/$account->uid"
Что я не так делаю? Где ошибка?
Может кому-то будет полезно.
Вот так заработало:
Есть словарь таксономии.
Необходимо, чтобы при нажатии на термин, пользователь уходил на специально созданные страницы.
Подскажите, как это можно реализовать?
Обычно термины таксономии и есть ссылки на специально созданные для терминов страницы: /taxonomy/term/93(tid) - что вы имеете ввиду? Честно говоря, мог этого и не писать, а полениться и оставить ваш вопрос без внимания (как xandeadx....)))). Задавая вопрос - старайтесь точно его сформулировать.
Есть словарь терминов - название округов.
Для каждого округа создана своя страница. Необходимо, чтобы при нажатии на термин как раз не выкидывало на /taxonomy/term/93(tid), а созданную мной страницу.
Возможно, нужно было при создании терминов - сразу же прописывать для них нужный алиас (синоним урл). Или сейчас для каждого изменить синоним.
В крайнем случае, в шаблоне темы node.tpl.php (или для конкретного типа) - изменить вывод ссылок на термины. Это можно и в template.php в препроцессе_node...
Скажите, а такое решение не подойдет ?
Кстати, попробовал Вашим способом сделать редирект после логина на нужную страницу - почему-то не получилось
Пишет, что доступ к странице запрещен - похоже, логин не проходит.
А как отличить создание ноды от редактирования ноды?
Нужно пересылать только при создании. Бы.
http://xandeadx.ru/blog/drupal/628
hook_node_insert($node)
Реагирует на создание нового узла.
Drupal 6 Бы.
http://api.drupal.ru/api/function/hook_nodeapi/6
$op == 'insert'
Спасибочки!!
Здравствуйте! Спасибо за ваш пост. Я только начинаю друпалить, и вопрос у меня такой:
вот этот кусок кода куда надо вставить? или надо модуль свой создать?
Спасибо заранее!
function mymodule - это значит что модуль так называется - mymodule - то есть надо свой модуль сделать.
Свой подобный модуль почти у каждого друпалера на каждом сайте.
Это удобно, чтобы внедряться в хуки (функции, крючки...) изменять всё что угодно и делать(выводить) всё что хочется.
Добрый вечер!
Как сделать чтобы редирект сработал только при правильном заполнении формы?
Решение без кода
https://www.drupal.org/project/node_save_redirect
Добавить комментарий