[Решение] Вывод в блоке дочерних нод по родительскому пункту меню. Модуль Menu Node Views.

Главные вкладки

Аватар пользователя Antoniy Antoniy 18 декабря 2012 в 19:31
1

Я работаю над иерархией нод в Drupal 7 без использования терминов таксономии.
Как сделать иерархические URL в зависимости от иерархии меню, я писал >>тут<<.

Теперь нужно выводить дочерние ноды по родителю меню. Нашел такое решение:

Ставим модуль Menu Node Views (для его работы требуется Menu Node API и Views естественно).

Модуль Menu Node Views предоставляет для Views в фильтры такие варианты настройки по аргументам, как "Menu: Menu link ID", "Menu: Parent menu link id" и другие в том же духе.

После установки вышеназванных модулей создаем представление для вывода материалов в виде блока. Включаем Contextual Filter, в котором выбираем "Menu: Parent menu link id".

В настройках "Menu: Parent menu link id" в самом начале, в "When the filter value is not available" выбираем "Provide default value" и выбираем окно для ввода PHP-кода, куда вставляем следующий код:

$current = end(menu_get_active_trail());
return $current['mlid'];

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

А что должно выводить представление - тизеры, или поля, это уже вне контекста данного решения.

Источник: How can I create a view of child nodes based on the menu relationship?
За код спасибо пользователю Stefan

UPD: сейчас у меня на другом сайте заругался на вышеприведенный код.
Поставил такой (тоже из источника):

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}

Комментарии

Аватар пользователя Antoniy Antoniy 18 декабря 2012 в 21:22

"Geldora" wrote:
почему отказались от таксономии

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

О компании
- Сертификаты
- Партнеры
- Контакты и схема проезда

Услуги
- Услуга №1
- Услуга №2

Продукты
- Продукт №1
- Продукт №2

Вопросы и Ответы (тут уже таксономия с мод. FAQ)

Новости (и тут таксономия чисто для новостей, ибо как блог)

Короче, для основной иерархии таксономия нафиг не нужна.

Аватар пользователя Antoniy Antoniy 18 декабря 2012 в 22:31

У меня почему-то в этих представлениях выводится не больше пяти строк (использую вывод анонсов) и пейджер не появляется... Оч. странно.. По форуму прошелся, типа бывают такие глюки. Но я первый раз сталкиваюсь. Вот думаю, а не из-за Menu Node Views с этим решением?

Аватар пользователя Antoniy Antoniy 18 декабря 2012 в 23:44

"Айдар" wrote:
из-за совпадающих id пейджеров в вьюсах на одной странице

На той странице больше нет вьювсов.

Когда сайт был на D6 у этого родителя было только пять детей по меню, вот только они то и выводятся. Но сейчас больше (переместил еще три от другого родителя). Может это такой типа кеш. Views думает, что у родителя только пять детей, какбы по старинке. Но я кеши сбрасывал все..