Как я могу перенаправить пользователя Drupal после создания нового контента

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

Я видел упоминание об использовании hook_alter или чего-то еще, но я действительно новичок в drupal и даже не уверен, что это значит?

Спасибо!

2 ответа

Решение

Поскольку вы упоминаете, что вы новичок в Drupal, я бы посоветовал взглянуть на модуль Rules. Вы можете добавить триггер для содержимого, которое было сохранено / обновлено, и добавить действие, чтобы перенаправить пользователя на определенную страницу.

Однако вы можете сделать то же самое в легком пользовательском модуле, используя хук form_alter.

Сначала найдите идентификатор формы. Для форм узлов это [тип узла]_node_form. Затем вы можете добавить новую функцию отправки, которая будет выполняться при отправке формы. В этом обработчике отправки установите путь перенаправления.

См. Это руководство по основным инструкциям по созданию модуля. Код вашего модуля будет выглядеть примерно так:

<?php
function mymodule_mytype_node_form_alter(&$form, &$form_state) {
  $form['#submit'][] = 'mymodule_node_submit_do_redirect';
}

function mymodule_node_submit_do_redirect($form, &$form_state) {
  $form_state['redirect'] = 'my_custom_destination';
}

Намного более простой подход состоит в том, чтобы установить назначение в URL формы узла. Например, если вы открыли http://example.com/node/add/mytype?destination=my_custom_destination, вы будете перенаправлены на этот URL вместо страницы просмотра узла.

Это работает для меня, используя Drupal 7, после создания нового модуля! Поместите в файл.module следующий код PHP:

<?php
function custom_form_alter(&$form, &$form_state, $form_id) {
    if ($form_id == '[node-type]_node_form') {
        $form['actions']['submit']['#submit'][]= 'my_custom_submit_handler';
}
}

function my_custom_submit_handler($form, &$form_state) {
  $form_state['redirect'] = 'http://www.expamle.eu/?q=node/2';
}

Вам просто нужно изменить [тип-узла]_node_form с вашим именем типа узла (например: example_node_form) и http://www.expamle.eu/?q=node/2 с правильным URL-адресом.

Другие вопросы по тегам