Случайный выбор победителя «Вконтакте»   •   Online-инструменты
724 просм
0 комм
Поделиться:

Скрываем только дочерние пункты определенного ресурса в pdoMenu в MODX Revo

Я думаю, что многие знают такой сниппет, как «pdoMenu» для MODX Revolution, который помогает без особого труда и с тонкими настройками сформировать меню на вашем сайте.

Я же (а точнее заказчик) использовал этот сниппет для генерации карты сайта на своем проекте. А почему бы и нет? Но вся проблема заключалась в том, что в этой карте нужно было скрыть большое количество дочерних элементов у нескольких ресурсов.

Конечно, организовать это можно через стандартную функцию «Не показывать в меню», но когда речь идет о скрытии сотен таких ресурсов – этот способ является не совсем рациональным.

По умолчанию, чтобы скрыть сам элемент и его дочерние ресурсы, существует параметр «&parents» с отрицательным значением или же параметр «&resources» (также с отрицательным значением), который позволяет точечно скрыть ненужные нам ресурсы.

Но как быть, если нам нужно как можно проще скрыть дочерние ресурсы определенного элемента?

Этим вопросом задался и я, и первым делом отправился на поиски в великий Google. Ответов на этот вопрос было мало, и самый популярный из них – это использовать параметр «&where», где указать ID главного элемента, у которого нужно скрыть дочерние ресурсы.

На примере простого меню это будет выглядеть так:

[[pdoMenu?
	&parents=`0`
	&level=`0`
	&where=`{"parent:!=": "3"}`
]]

Где 3 – главный элемент меню, у которого нужно скрыть дочерние ресурсы.

Но мне этого было мало, и я задался вопросом: а как же скрыть дочерние элементы сразу у нескольких ресурсов?

Как таковой документации к сниппету я не нашел и, просидев чуть меньше часа (А если быть точным – то 57 минут. Порой решение задач требует большого времени, но именно это отличает нас от многих похожих ресурсов – мы сами ищем для вас наиболее эффективные способы решения), я нашел решение.

Использовать мы все так же будем параметр «&where», но только с немного другим условием. А именно:

[[pdoMenu?
	&parents=`0`
	&level=`0`
	&where=`(parent != '1' AND parent != '2' AND parent != '3' AND parent != '4')`
]]

Все числа в параметре «&where», как вы уже догадались – это список всех родительских ресурсов, где нужно скрыть дочерние элементы, оставив при этом сам ресурс.

0
комментарий
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария