У меня реализовано так:
1)
#snippet AdvancedFilters
if (isset($_GET['ditto_page_display']))
{
$onPage = '&ditto_page_display='.$_GET['ditto_page_display'];
}
else
{
$onPage = '';
}
if (isset($_GET['ditto_page_sortBy']) && isset($_GET['ditto_page_sortDir']))
{
$sortBy = '&ditto_page_sortBy='.$_GET['ditto_page_sortBy'].'&ditto_page_sortDir='.$_GET['ditto_page_sortDir'];
}
else
{
$sortBy = '';
}
$f10 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=10'.$sortBy);
$f30 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=30'.$sortBy);
$f50 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=50'.$sortBy);
$f100 = $modx->makeUrl($modx->documentIdentifier,'','?ditto_page_display=100'.$sortBy);
$sortAsc = $modx->makeUrl($modx->documentIdentifier,'',$onPage.'&ditto_page_sortBy=price&ditto_page_sortDir=ASC');
$sortDesc = $modx->makeUrl($modx->documentIdentifier,'',$onPage.'&ditto_page_sortBy=price&ditto_page_sortDir=DESC');
$onPageOutput = array($f10 =>10 ,$f30 => 30 ,$f50 => 50,$f100 => 100);
$output = 'Показать на странице: ';
foreach($onPageOutput as $key => $value)
{
$output .= "<a href='$key'>$value</a> / ";
}
$output .= "Отфильтровать по: Цене ( <a href='$sortAsc'>возрастание</a> / <a href='$sortDesc'>убывание</a> )";
return $output;
?>
2) На странице каталога
[!Ditto? &id=`page` &parent=`[*id*]` &extenders=`summary,request` &depth=`5` &paginate=`1` &tplPaginateCurrentPage=`currentPageSplitter` &tplPaginatePage=`pageSplitter` &paginateAlwaysShowLinks=`1` &language=`russian-UTF8` &display=`10` &filter=`isfolder,1,2` &truncLen=`100` &truncText=`...` &truncOffset=`0` &tpl=`shopStuff` &noResults=` ` &showInMenuOnly=`1` &orderBy=`menuindex ASC` &ignoreHidden=`0`!]
[!DittoPageSplit? &id=`page` &output=`1`!]
Важно:
1) В Ditto можно работать с GET параметрами, в формате ditto_ID_PARAMETER
Ditto &id=`page` должно совпадать с GET параметром, например:
ditto_page_display=20 - параметр &display - количество выводить на странице
ditto_page_sortBy=price - параметр &sortBy - сортировать по TV параметру, или параметру документа
2) Сниппет работает совместно с пагинацией, и написан для того, чтобы корректно обрабатывалась строка запроса, и при пагинации не сбивалось.. Сниппет написан как попало, писал очень давно, но работает так, как нужно! Пробуйте