Перенаправлення користувача після додавання / редагування вузла


13

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

Відповіді:


6

Ви можете використовувати hook_form_alterдля додавання користувальницького обробника подання, де можна встановити шлях переадресації.

Докладнішу інформацію про перенаправлення форми див. У FAPI .


1
Дякую за вашу відповідь ! Я читав про FAPI, але все ще виникає питання, щоб продовжувати: Де я повинен розмістити функцію ho_form_alter?
ousneo

2
@ousneo У drupal 7 ви можете розмістити його у своїй темі або у створеному нестандартному модулі.
googletorp

1
дивіться відповідь @Dmitry Vyal
Capi Etheriel

1
Ось модуль, який виконує переадресацію після збереження. drupal.org/project/node_save_redirect
polyclick

1
Хоча ця відповідь занадто коротка, щоб бути корисною. Це дійсно важливо, як ви додаєте свій власний обробник подачі, і ця відповідь про це мовчить. Найкраща відповідь IMHO - це від @leymannx (але дивіться коментар щодо випадку використання редагування).
Безкоштовний радикал

4

Ви можете створити правило, яке перенаправляє користувача на будь-яку сторінку, коли він створює або редагує певний тип вмісту. Коли ви додаєте правило, виберіть "Після створення нового вмісту", додайте також умову "Тип вмісту". У розділі "Ви робите" ви зможете перенаправити користувача на будь-яку сторінку, яку ви хочете.

Для переадресації після редагування вузла просто створіть нове правило та виберіть "Після оновлення існуючого вмісту" як свій перший варіант.


Я використовував правила для переадресації після створення певного контенту, але користувач зараз не отримує зворотного зв'язку. Я хочу показати користувачеві, що "Ваш вміст створено". Як я можу це покращити?
wallace740

1
Додайте ще одну дію після дії переспрямування до "Показати на сайті повідомлення, що настроюється", і додайте звідти своє власне повідомлення.

Я додав ще одне правило, але я думаю, що мені щось не вистачає в моїй спеціальній темі, оскільки повідомлення не відображається на моїй головній сторінці Я використовую модуль "Кращі повідомлення", щоб показувати такі повідомлення у спливаючому вікні! правило config
wallace740

Мій досвід полягає в тому, що накладення порушує правила переадресації, будьте обережні.
Capi Etheriel

У моєму випадку ця форма додавання вузла була вбудована у панель інсайдерських даних. гак_форма_алтер не впіймав. Але правила спрацювали чудово!
Дружба

2

Виконуючи це, переконайтесь, що також викиньте можливе існуюче призначення, яке зазвичай додається до 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';
}

Це працює для переадресації після додавання вузла, але не після його редагування. Я розумію , що заклики до передбачається обробляти редагувати випадок використання, але вони не мають ніякого впливу на моєму Drupal 7 сайті. unsetdestination
Безкоштовний радикал

@FreeRadical - Ви праві. Я оновив відповідь, щоб замість цього використовувати гачку_форму_BASE_FORM_ID_alter , яка націлена на обидва - додавання та редагування.
leymannx


1

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


1
Змінення $ form_state ['перенаправлення'] працює чудово в Drupal 7 ...
Фелікс Єва

1

в Drupal 7 ви можете змінити форму редагування вузла, щоб "приєднати" власну функцію подання, в якій ви можете змінити form_state форми підтвердження видалення вузла, щоб включити параметр "призначення" ... щойно це було зроблено у спеціальній темі i " я розвивався як підтема теми "сім" адмін ...

Документація для гачка_форма_FORM_ID_alter

Ви можете додати цей гачок до шаблону / теми, а не лише до модулів.

тому у свою тему template.phpдодайте цю форму для зміни гачка:

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

а потім, вуаля. більше не переспрямовується на головну сторінку після видалення вузла.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.