Setting Up pdoTools for MODX Optimization
pdoTools is a set of snippets and tools for MODX, replacing standard Wayfinder, getResources, Breadcrumbs with more performant alternatives. Uses PDO directly, without xPDO ORM overhead.
Installation
Package Manager → pdoTools → install. Includes: pdoResources, pdoMenu, pdoPage, pdoCrumbs, pdoNeighbors, pdoSitemap, pdoField, pdoParser.
pdoResources Instead of getResources
Standard getResources: 30–50 DB queries for 20 resources. pdoResources: 1–3 queries.
[[pdoResources?
&parents=`5`
&resources=`-10`
&showHidden=`0`
&sortby=`menuindex`
&sortdir=`ASC`
&limit=`10`
&includeTVs=`product_price,product_image`
&prepareTVs=`1`
&processTVs=`1`
&tpl=`productCard`
&tvPrefix=``
]]
&prepareTVs=1—loads TVs with single JOIN query instead of N separate queries.
pdoPage for Pagination
[[!pdoPage?
&element=`pdoResources`
&parents=`5`
&limit=`12`
&tpl=`productCard`
&includeTVs=`product_price,product_image`
&pageNavVar=`page.nav`
]]
[[!+page.nav]]
pdoPage auto-generates pagination navigation and handles GET parameter page.
pdoMenu Optimization
[[pdoMenu?
&startId=`0`
&level=`2`
&sortby=`menuindex`
&hideSubMenus=`0`
&tplOuter=`@INLINE <ul class="nav">[[+wrapper]]</ul>`
&tpl=`@INLINE <li class="[[+classes]]"><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>`
&tplInner=`@INLINE <ul class="nav__sub">[[+wrapper]]</ul>`
&hereClass=`active`
&parentClass=`has-children`
&cache=`1`
&cacheTime=`3600`
]]
&cache=1—cache menu for 1 hour. Menu is one of heaviest queries, caching critical.
pdoParser: Fast Parser
pdoParser replaces standard MODX parser. 20–40% faster with many tags per page.
// Enable in system settings:
// System → Settings → pdotools_parser_enable = 1
pdoTools Cache
[[pdoResources?
...
&cache=`1`
&cacheTime=`1800`
&cacheKey=`catalog_[[+GET.page:default=1]]_[[+GET.sort:default=price]]`
]]
Unique cache key includes GET filter parameters—different filters = different cache.
Timeline
Replacing standard snippets with pdoTools and setting up caching—3–5 hours for medium site.







