Вернитесь к списку навигации по узлам "просмотры" после редактирования узла в списке


Я использую Модуль навигации по представлениям . Я создал список статей с использованием представлений и выбрал "Добавить ссылки навигации на страницы узлов, доступные из этого представления" в разделе "Навигация по представлениям" в разделе "Дополнительно". Навигация по представлениям работает нормально, и я могу переходить туда и обратно в списке просмотров статей.

Теперь, если я отредактирую узел (при просмотре списка навигации по представлениям) и отправлю отредактированный узел, я вернусь обратно на страницу узла без "представления навигация" ссылки, добавленные к URL-адресу. Следовательно, я не могу двигаться вперед в списке (список исчез; он ведет себя как простое представление узла).

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

Одним из решений, о котором я думаю, является изменение ссылки редактирования узла с помощью функции hook_menu_alter(). Есть ли непрограммный как это сделать? Я попробовал правила и записал добавленные параметры URL-адреса, но я не знаю, как изменить ссылку для редактирования узла. Может кто-нибудь, пожалуйста, указать мне правильное направление?

Большое спасибо

Author: Nonix, 2015-04-10

1 answers

Я нашел решение, к сожалению, с помощью кода, используя hook_url_outbound_alter().

Для всех, кто пытается это сделать, я реализовал следующий код, и он работает отлично:

function mymodule_url_outbound_alter(&$path, &$options, $original_path) {
// get current position and list token
$position = isset($_GET['position']) ? $_GET['position'] : NULL;
$list = isset($_GET['list']) ? $_GET['list'] : NULL;

// only when viewing nodes through views navigation
if ( $position && $list && preg_match('|^node/([0-9]*)/edit(/.*)?|', $path, $matches)) {
    $path = 'node/'.$matches[1].'/edit';
    $options['query']['destination'] = 'node/' . $matches[1] . '?position=' . $position. '&list=' .$list;
    }
}

Спасибо

 0
Author: Nonix, 2015-07-01 07:56:07