Skip to content
  1. Extras
  2. SeoFilter
  3. Snippets
  4. sfMenu

sfMenu

Powerful menu snippet. Similar to pdoMenu. Own menu class; much taken from pdoMenu including class support.

Внимание

Output differs from pdoMenu: link in [[+url]], name in [[+name]].

Pass empty chunks to check placeholders. Menu can show result counts (on-the-fly or from DB). Many params; contact modstore support if issues.

Parameters

ParameterDefaultDescription
&rulesRule ids for menu (comma, minus to exclude)
&parentsPage ids with rules
&urlsURL table entry ids (minus to exclude)
&fast1Fast mode. Disabled if countChildren=1
&countChildren0Count resources before menu; use DB for large menus
&mincount0Min resources for link. Fast: use where {"total:>=":1}
&sortcount0Sort by count; overrides sortby
&relative0Rebuild menu from current SEO page; enables double, nesting, hideSubMenus
&onlyrelative0Show menu only on SEO pages
&nesting0Virtual nesting, tree structure
&hideSubMenus0Hide inactive branches; use with nesting
&double0Duplicate links when nesting (multi-category)
&sortbycountSort; default by page views
&sortdirDESCSort direction
&level0Max level (fields count); 0 = unlimited
&minlevel0Min level; 0 = unlimited
&limit0Link limit
&offset0Offset
&schemeLink scheme: full, abs, http, https, -1
&contextContext for link building
&cache1Cache links
&cacheTime3600Cache TTL (sec)
&groupbyrule0Group by rule; use tplGroup
&groupsortlevelGroup sort
&groupdirASCGroup sort direction
&userank0Use rule priority for groups
&showHidden1Show hidden menu items
&count_whereExtra count condition (countChildren only)
&fastMode0Passed to pdoTools
&whereJSON condition (sfUrls, sfDictionary, sfUrlWord)
&toPlaceholderOutput to placeholder

Chunks

ChunkDescription
&tplLink chunk. Default: @INLINE <li{$classes}><a href="{$url}">{$name}{if $total?} ({$total}){/if}</a>{$wrapper}</li>
&tplOuterMenu wrapper. Default: @INLINE <ul{$classes}>{$wrapper}</ul>
&tplGroupGroup wrapper. Default: @INLINE <div><h4>{$name}</h4>{$wrapper}</div>
&tplHereCurrent doc chunk
&tplInnerInner wrapper; if empty uses tplOuter
&tplInnerRowInner row wrapper
&tplInnerHereCurrent inner row
&tplParentRowParent with children
&tplParentRowActiveActive parent with children
&tplParentRowHereCurrent parent with children

CSS class params

ParamDescription
&firstClassFirst item; default first
&hereClassActive item; default active
&innerClassInner links
&lastClassLast item; default last
&levelClassLevel class; e.g. level → level1, level2
&outerClassMenu wrapper
&parentClassParent/category
&rowClassRow class
&selfClassCurrent doc

Examples

  1. Fast mode, DB counts, sort by total, mincount 5:
modx
[[!sfMenu?
  &fast=`1`
  &sortby=`total`
  &sortdir=`DESC`
  &mincount=`5`
  &outerClass=`navigation`
  &innerClass=`inner`
  &levelClass=`level`
  &parentClass=`parent`
  &rowClass=`rows`
  &selfClass=`self`
]]
  1. Grouped, countChildren, exclude empty:
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]] links</small></h4>[[+wrapper]]</div>`
  &tplOuter=`@INLINE <ul[[+classes]]>[[+wrapper]]</ul>`
  &tpl=`@INLINE <li[[+classes]]><a href="[[+url]]">[[+name]]</a> <nobr><span>([[+total]])</span><small> - [[+count]] views</small></nobr>[[+wrapper]]</li>`
]]
  1. Nesting, mincount 2:
modx
[[!sfMenu?
  &countChildren=`1`
  &nesting=`1`
  &double=`0`
  &mincount=`2`
  &parents=`9`
]]