Skip to content
  1. Компоненты
  2. SeoFilter
  3. Сниппеты
  4. sfMenu

sfMenu

Это самый функциональный и мощный сниппет! Для тех, кто знаком с pdoMenu не покажется сложным. Для формирования меню используется собственный класс. Очень многое взято из pdoMenu, в том числе почти вся поддержка классов. Очередное спасибо Василию.

Важно

Вывод результатов отличается от pdoMenu тем, что за сформированную ссылку на страницу здесь отвечает параметр [[+url]], а за её название параметр [[+name]].

Вообще можете задавать пустые чанки и проверять доступные плейсхолдеры:

Меню может формироваться с учётом количества результатов на странице. Для этого есть функция подсчётов на лету или использование значений из базы (которые обновляются при изменении товаров или в ручную).

Вообще параметров, которыми можно управлять меню много, что я наверно и не все проверил. Если будут проблемы - пишите в техническую поддержку на modstore, оперативно решим.

Основные параметры сниппета

НазваниеПо умолчаниюОписание
&rulesСписок ID правил, ссылки которых нужно использовать в меню(несколько через запятую, также можно с минусом исключить ненужные)
&parentsСписок ID страниц, к которым привязаны правила (можно с минусом)
&urlsЛибо отдельно id сгенерированных ссылок из Таблицы URL (можно с минусом)
&fast1Новый быстрый режим меню, который работает быстрее чем старый. Если включена опция countChildren=1, то быстрый режим отключается
&countChildren0Подсчёт перед формированием меню ресурсов(товаров) которые будут на странице (на больших меню рекомендую использовать значения из базы)
&mincount0Минимальное количество ресурсов для включения ссылки в меню. В быстром режиме можно передавать условие через параметр where {"total:>=":1}
&sortcount0Сортировка по количеству ресурсов, приоритетнее той что в sortby. В быстром режиме можно также в sortby передавать total
&relative0Экспериментальная перестройка меню исходя из выбранной SEO-страницы. Если активирована, то включает за собой параметры double, nesting, hideSubMenus и отключает groupbyrule
&onlyrelative0Показывает меню только на SEO страницах
&nesting0Виртуальное вкладывание ссылок в ссылки, построение дерева точнее
&hideSubMenus0Позволяет спрятать неактивные ветки меню, используйте вместе с параметром nesting.
&double0Дублирование ссылок при вкладывании, так как ссылки могут относится к нескольким правилам, так сказать мультикатегории;
&sortbycountСортировка. По умолчанию, по количеству просмотров страницы.
&sortdirDESCПорядок сортировки. По умолчанию, по убыванию
&level0Максимальный уровень для ограничения ссылок. Уровень = количеству полей, из которых она состоит. 0 - не ограничен
&minlevel0Минимальный уровень для ограничения ссылок. 0 - не ограничен.
&limit0Лимит на выборку ссылок. При использовании подсчётов через countChildren количество ссылок на странице может быть меньше, так сначала выберутся ссылки, а потом могут быть отброшены другими условиями. При быстром режиме такого нет.
&offset0Смещение для использования совместно с limit
&schemeСхема для формирования ссылок на ресурсы к ссылкам. Может принимать параметры "full", "abs", "http", "https", "-1" или пусто.
&contextПо умолчанию не указан. Укажите, если есть какие-то проблемы при формировании адресов для ссылок
&cache1Кэш, по умолчанию включён. Для того чтобы каждый раз не собирать ссылки в базе. Подсчёты также сохраняются в кэш.
&cacheTime3600Время для кэша, указывается в секундах. По умолчанию 1 час.
&groupbyrule0Группировка по правилам (задействуется отдельный чанк-обёртка указанный в &tplGroup)
&groupsortlevelСортировка групп по количеству полей в правиле
&groupdirASCНаправление сортировки групп
&userank0Использование приоритетов правила для сортировки групп
&showHidden1Показывать скрытые пункты в меню. Можно отключить, если вы в ручную прорабатываете пункты меню в таблице URL, которые нужно показывать в меню.
&count_whereДополнительное условие для подсчёта ресурсов. Используется только при активном countChildren
&fastMode0Параметр, который попадает в 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Класс текущего документа в меню.

Примеры использования

  1. Меню быстрого варианта и подсчётами из базы, с сортировкой по ним и от пяти результатов с прописанными дополнительными классами на стандартном чанке.

    Примеры использования

    modx
    [[!sfMenu?
      &fast=`1`
      &sortby=`total`
      &sortdir=`DESC`
      &mincount=`5`
      &outerClass=`navigation`
      &innerClass = `inner`
      &levelClass = `level`
      &parentClass = `parent`
      &rowClass = `rows`
      &selfClass = `self`
    ]]
  2. Пример с группировкой на отдельной странице с исключением «пустых» страниц. Здесь ещё используется функция подсчётов через countChildren и полностью синтаксис MODX.

    Пример с группировкой на отдельной странице

    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>`
    ]]
  3. Пример с вложенностью ссылок от c результатами от двух товаров с предыдущим чанком

    Пример с вложенностью ссылок от c результатами

    modx
    [[!sfMenu?
      &countChildren=`1`
      &nesting=`1`
      &double=`0`
      &mincount=`2`
      &parents=`9`
    ]]