Настройка pdoTools для оптимизации MODX
pdoTools — набор сниппетов и инструментов для MODX, заменяющих стандартные Wayfinder, getResources, Breadcrumbs более производительными аналогами. Использует PDO напрямую, без ORM-оверхеда xPDO.
Установка
Package Manager → pdoTools → установить. Включает: pdoResources, pdoMenu, pdoPage, pdoCrumbs, pdoNeighbors, pdoSitemap, pdoField, pdoParser.
pdoResources вместо getResources
Стандартный getResources: 30–50 запросов к БД для списка из 20 ресурсов. pdoResources: 1–3 запроса.
[[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 — загружает TV одним JOIN-запросом вместо N отдельных запросов.
pdoPage для пагинации
[[!pdoPage?
&element=`pdoResources`
&parents=`5`
&limit=`12`
&tpl=`productCard`
&includeTVs=`product_price,product_image`
&pageNavVar=`page.nav`
]]
[[!+page.nav]]
pdoPage автоматически генерирует навигацию по страницам и обрабатывает GET-параметр page.
pdoMenu оптимизация
[[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 — кэшировать меню на 1 час. Меню одно из самых тяжёлых запросов, кэш критичен.
pdoParser: быстрый парсер
pdoParser заменяет стандартный парсер MODX. Быстрее на 20–40% при большом количестве тегов на странице.
// Включить в системных настройках:
// Система → Настройки → pdotools_parser_enable = 1
Кэш pdoTools
[[pdoResources?
...
&cache=`1`
&cacheTime=`1800`
&cacheKey=`catalog_[[+GET.page:default=1]]_[[+GET.sort:default=price]]`
]]
Уникальный ключ кэша включает GET-параметры фильтрации — разные фильтры = разный кэш.
Сроки
Замена стандартных сниппетов на pdoTools с настройкой кэширования — 3–5 часов для среднего сайта.







