Скажем, у вас есть следующие страницы в дереве меню:
- проектов
- Проект Один
- Проект второй
- Проект третий
Я ищу способ создания представления, которое будет встроено в страницу проекта (родительскую), которая будет отображать изображение, заголовок и текст (резюме) из дочерних страниц.
Отношения между родителем и потомками определяются в дереве меню.
Я знаю, что могу использовать ссылку на узел, но это будет означать, что каждый раз, когда кто-то создает страницу, он должен будет определить отношение меню, а затем ссылку на узел.
Также я знаю, что могу создать другой тип контента, но думаю, что это излишне, поскольку все страницы контента выглядят одинаково.
Ответы:
Одним из решений является использование терминов таксономии для определения отношений, а затем использование модуля меню таксономии для преобразования этих терминов отношений в пункты меню. Затем вы можете использовать модуль Custom Page и модули Context для управления информацией и регионами на всех страницах, если вы не хотите использовать панели.
источник
Вы можете сделать это, используя API узла меню и модули представлений узла меню .
Создайте представление с требуемым типом содержимого и выберите контекстный фильтр «Меню: идентификатор ссылки меню» (это доступно только с установленными выше модулями).
В разделе «Когда значение фильтра недоступно» выберите «Указать значение по умолчанию» и выберите «PHP-код».
Следующий фрагмент сделает это, затем вы просто выставите блок из представления и окажетесь там:
источник
menu_load_object(arg(1))
вместо того,node_load()
чтобы сэкономить некоторые расходы. 2) Вы должны убедиться, что пункт меню из того меню, которое вас интересует. Прямо сейчас, вы только что вернулись первым$mlid
. Внутри foreach вы должны добавить условие,if ($data->menu_name == 'my-menu')
чтобы исправить это. и 3) Вы можете добавить второй фильтр дляmenu: hidden
возврата только тех предметов, которые не скрыты. Используйте тот же фрагмент, но верните$data->hidden;
вместо$mlid
.Модуль иерархии узлов допускает этот тип отношений, а также обеспечивает интеграцию представлений.
источник
Возможно, это изменилось для D7 / Views 3, но вам не нужен PHP для выполнения желаемого поведения:
вуаля. Это не должно работать , но это работает.
Он отлично работает только с узлами, но преимущество использования ссылок меню по сравнению с иерархией узлов заключается в том, что вы не ограничены построением навигации по узлам. Вы даже можете включить внешние ссылки в вашем представлении.
источник
Есть сравнительно новый модуль Views Menu Node Children Filter, который, кажется, делает именно то, что вы хотите:
источник
Рассматривали ли вы использование Node Reference для этой цели?
Таким образом, вы можете достичь такого же результата, как вы, вероятно, ищете.
источник
Ответ Эмиля правильный, но мне пришлось вставить упомянутый PHP-код в контекстный фильтр типа « Меню: идентификатор ссылки на родительское меню ».
источник
Если вы используете трансляцию сущностей, а узел подключен к различным меню, здесь приведена адаптация кода, который фильтрует текущий язык. Вы должны скопировать это как код PHP для контекстного фильтра (идентификатор ссылки родительского меню) в вашем представлении, как объяснено в других ответах
источник
Из очереди выдачи представлений узлов меню у нас есть хорошее решение:
введите следующий код
источник