Я работаю над иерархией нод в 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-кода, куда вставляем следующий код:
Сохраняем представление. Идем в раздел "Блоки" и ставим блок этого view в нужное место. Блок будет выводить дочерние ноды того узла, на страницу которого вы поставили блок.
А что должно выводить представление - тизеры, или поля, это уже вне контекста данного решения.
Источник: How can I create a view of child nodes based on the menu relationship?
За код спасибо пользователю Stefan
UPD: сейчас у меня на другом сайте заругался на вышеприведенный код.
Поставил такой (тоже из источника):
$node = node_load(intval(arg(1)));
if (isset($node->menu_node_links)){
foreach($node->menu_node_links as $mlid=>$data){
return $mlid;
}
}
}
Комментарии
спасибо за рещение.
Просто интересно - а почему отказались от таксономии?
Я не отказался. Просто для структуры небольшого корпоративного сайта, где иерархия типа такой:
О компании
- Сертификаты
- Партнеры
- Контакты и схема проезда
Услуги
- Услуга №1
- Услуга №2
Продукты
- Продукт №1
- Продукт №2
Вопросы и Ответы (тут уже таксономия с мод. FAQ)
Новости (и тут таксономия чисто для новостей, ибо как блог)
Короче, для основной иерархии таксономия нафиг не нужна.
Понятно спасибо
У меня почему-то в этих представлениях выводится не больше пяти строк (использую вывод анонсов) и пейджер не появляется... Оч. странно.. По форуму прошелся, типа бывают такие глюки. Но я первый раз сталкиваюсь. Вот думаю, а не из-за Menu Node Views с этим решением?
Глюки с пейджером бывают, насколько я знаю, из-за совпадающих id пейджеров в вьюсах на одной странице.
На той странице больше нет вьювсов.
Когда сайт был на D6 у этого родителя было только пять детей по меню, вот только они то и выводятся. Но сейчас больше (переместил еще три от другого родителя). Может это такой типа кеш. Views думает, что у родителя только пять детей, какбы по старинке. Но я кеши сбрасывал все..