В целом правильно. Только надо еще дальше плясать. Там есть вызов:
{block name=content} {processor action="web/catalog/category/products/getdata" ns="modxsite" assign=result} {* Набиваем через единый шаблон листинга *} {include file="shop/catalog/list/fetch.tpl"} {/block}
Вот вложенные шаблоны и надо смотреть. И здесь два момента: 1. Во вложенном шаблоне прописан плейсхолдер [[+page.nav]], но в вызове процессора не прописан передаваемый параметр getPage => true. Без этого параметра не будет вызываться в процессоре сниппет getPage. 2. Сейчас все шаблоны некешируемые (включена настройка в шаблонах phptemplate.non-cached=true). Если некеширование выключить, то пагинация не будет корректно работать. В шаблоне tpl/category.tpl надо бы переделать на вызов некешируемого сниппета [!smarty?tpl=`...`]. Но это так, для справки.