Это самый функциональный и мощный сниппет! Для тех, кто знаком с pdoMenu не покажется сложным. Для формирования меню используется собственный класс. Очень многое взято из pdoMenu, в том числе почти вся поддержка классов. Очередное спасибо Василию.
Важно! Вывод результатов отличается от pdoMenu тем, что за сформированную ссылку на страницу здесь отвечает параметр [[+url]], а за её название параметр [[+name]]. Вообще можете задавать пустые чанки и проверять доступные плейсхолдеры:)
Меню может формироваться с учётом количества результатов на странице. Для этого есть функция подсчётов на лету или использование значений из базы (которые обновляются при изменении товаров или в ручную).
Вообще параметров, которыми можно управлять меню много, что я наверно и не все проверил. Если будут проблемы - пишите в техническую поддержку на modstore, оперативно решим.
Основные параметры сниппета
Название | По умолчанию | Описание |
---|---|---|
&rules | Cписок ID правил, ссылки которых нужно использовать в меню(несколько через запятую, также можно с минусом исключить ненужные) | |
&parents | Список ID страниц, к которым привязаны правила (можно с минусом) | |
&urls | Либо отдельно id сгенерированных ссылок из Таблицы URL (можно с минусом) | |
&fast | 1 | Новый быстрый режим меню, который работает быстрее чем старый. Если включена опция countChildren=1, то быстрый режим отключается |
&countChildren | 0 | Подсчёт перед формированием меню ресурсов(товаров) которые будут на странице (на больших меню рекомендую использовать значения из базы) |
&mincount | 0 | Минимальное количество ресурсов для включения ссылки в меню. В быстром режиме можно передавать условие через параметр where {"total:>=":1} |
&sortcount | 0 | Сортировка по количеству ресурсов, приоритетнее той что в sortby. В быстром режиме можно также в sortby передавать total |
&relative | 0 | Экспериментальная перестройка меню исходя из выбранной SEO-страницы. Если активирована, то включает за собой параметры double, nesting, hideSubMenus и отключает groupbyrule |
&onlyrelative | 0 | Показывает меню только на SEO страницах |
&nesting | 0 | Виртуальное вкладывание ссылок в ссылки, построение дерева точнее |
&hideSubMenus | 0 | Позволяет спрятать неактивные ветки меню, используйте вместе с параметром nesting. |
&double | 0 | Дублирование ссылок при вкладывании, так как ссылки могут относится к нескольким правилам, так сказать мультикатегории; |
&sortby | count | Сортировка. По умолчанию, по количеству просмотров страницы. |
&sortdir | DESC | Порядок сортировки. По умолчанию, по убыванию |
&level | 0 | Максимальный уровень для ограничения ссылок. Уровень = количеству полей, из которых она состоит. 0 - не ограничен |
&minlevel | 0 | Минимальный уровень для ограничения ссылок. 0 - не ограничен. |
&limit | 0 | Лимит на выборку ссылок. При использовании подсчётов через countChildren количество ссылок на странице может быть меньше, так сначала выберутся ссылки, а потом могут быть отброшены другими условиями. При быстром режиме такого нет. |
&offset | 0 | Смещение для использования совместно с limit |
&scheme | Схема для формирования ссылок на ресурсы к ссылкам. Может принимать параметры "full", "abs", "http", "https", "-1" или пусто. | |
&context | По умолчанию не указан. Укажите, если есть какие-то проблемы при формировании адресов для ссылок | |
&cache | 1 | Кэш, по умолчанию включён. Для того чтобы каждый раз не собирать ссылки в базе. Подсчёты также сохраняются в кэш. |
&cacheTime | 3600 | Время для кэша, указывается в секундах. По умолчанию 1 час. |
&groupbyrule | 0 | Группировка по правилам (задействуется отдельный чанк-обёртка указанный в &tplGroup) |
&groupsort | level | Сортировка групп по количеству полей в правиле |
&groupdir | ASC | Направление сортировки групп |
&userank | 0 | Использование приоритетов правила для сортировки групп |
&showHidden | 1 | Показывать скрытые пункты в меню. Можно отключить, если вы в ручную прорабатываете пунты меню в таблице URL, которые нужно показывать в меню. |
&count_where | Дополнительное условие для подсчёта ресурсов. Используется только при активном countChildren | |
&fastMode | 0 | Параметр, который попадает в pdoTools для обработки чанков |
&where | Дополнительное условие в формате JSON. Можно задавать условие по классам sfUrls,sfDictionary,sfUrlWord. То есть можно ограничить всё меню только ссылками, связанными с синим цветом. | |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран. |
Доступные чанки
Почти полностью совпадают с чанками из pdoMenu | Название | Описание |
---|---|---|
&tpl | Стандартный чанк вывода одной ссылки. По умолчанию @INLINE <li{$classes}><a href="{$url}">{$name}{if $total?} ({$total}){/if}</a>{$wrapper}</li> |
|
&tplOuter | Чанк обёртка меню. По умолчанию @INLINE <ul{$classes}>{$wrapper}</ul> |
|
&tplGroup | Чанк обёртка при группировке по правилам. По умолчанию @INLINE <div><h4>{$name}</h4>{$wrapper}</div> |
|
&tplHere | Чанк текущего документа | |
&tplInner | Чанк обертки внутренних пунктов меню. Если пуст - будет использовать &tplOuter | |
&tplInnerRow | Чанк обертка внутреннего пункта меню | |
&tplInnerHere | Чанк обертка текущего внутреннего пункта меню | |
&tplParentRow | Чанк оформления ссылки, у которой есть вложенные ссылки | |
&tplParentRowActive | Чанк оформления активной ссылки, у которой есть вложенные ссылки | |
&tplParentRowHere | Чанк оформления текущей ссылки, у которой есть вложенные ссылки |
Параметры CSS классов
Эти параметры задают значение плейсхолдера [[+classes]] для различных элементов меню. | Название | Описание |
---|---|---|
&firstClass | Класс для первого пункта меню. По умолчанию: first | |
&hereClass | Класс для активного пункта меню. По умолчанию: active | |
&innerClass | Класс внутренних ссылок меню. | |
&lastClass | Класс последнего пункта меню. По умолчанию: last | |
&levelClass | Класс уровня меню. Например, если укажите «level», то будет «level1», «level2» и т.д. | |
&outerClass | Класс обертки меню | |
&parentClass | Класс категории меню | |
&rowClass | Класс одной строки меню | |
&selfClass | Класс текущего документа в меню. |
Примеры использования
- Меню быстрого варианта и подсчётами из базы, с сортировкой по ним и от пяти результатов с прописанными дополнительными классами на стандартном чанке.
[[!sfMenu?
&fast=`1`
&sortby=`total`
&sortdir=`DESC`
&mincount=`5`
&outerClass=`navigation`
&innerClass = `inner`
&levelClass = `level`
&parentClass = `parent`
&rowClass = `rows`
&selfClass = `self`
]]
- Пример с группировкой на отдельной странице с исключением «пустых» страниц. Здесь ещё используется функция подсчётов через counChildren и полностью синтаксис MODX.
[[!sfMenu?
&countChildren=`1`
&groupbyrule=`1`
&sortby=`createdon`
&sortdir=`ASC`
&mincount=`1`
&parents=`9`
&tplGroup=`@INLINE <div class="col-sm-6"><h4>[[+name]] <small>[[+total]] ссылок</small></h4>[[+wrapper]]</div>`
&tplOuter=`@INLINE <ul[[+classes]]>[[+wrapper]]</ul>`
&tpl=`@INLINE <li[[+classes]]><a href="[[+url]]">[[+name]]</a> <nobr><span>([[+total]] [[+total:units=`товар|товара|товаров`]])</span><small> - [[+count]] [[+count:units=`просмотр|просмотра|просмотров`]]</small></nobr>[[+wrapper]]</li>`
]]
- Пример с вложенностью ссылок от c результатами от двух товаров с предыдущим чанком
[[!sfMenu?
&countChildren=`1`
&nesting=`1`
&double=`0`
&mincount=`2`
&parents=`9`
]]