@juniorspecialist
Джуниор

Как сделать правильную сортировку товаров modx revo?

Всем привет.
Пытаюсь сделать в Modx Revo вывод товаров с пагинацией и возможностью сортировки.
Если использовать сниппет "pdoPage" для вывода товаров, то будет и пагинация, но сортировка по цене работает не корректно(отрабатывает сортировка как по строковым значениям, видимо параметр - sortbyTVType=integer в этом сниппете не работает).
Если использовать сниппет "pdoResources" - сортировка отрабатывает по цене норм, но нет пагинации.
Подскажите как быть ? Что использовать, чтобы получить вывод товаров, с пагинацией и корректной сортировкой по цене.
$limit = $scriptProperties['limit'];
$where = $scriptProperties['where'];
$tpl = $scriptProperties['tpl'];
$includeTVs = $scriptProperties['includeTVs'];
$depth = $scriptProperties['depth'];
$parents = $scriptProperties['parents'];
$resources = $scriptProperties['resources'];
$paginate = $scriptProperties['paginate'];

$sortby = '';
$sortdir = '';

$arParams = array(
    'tpl'=> $tpl,
    'includeTVs'=> $includeTVs,
    'limit' => $limit,
    'depth' => $depth,
);
if($_REQUEST['ditto_sortDir']){
    $arParams['sortdir'] = $_REQUEST['ditto_sortDir'];
}
if($_REQUEST['ditto_sortBy']){
    $arParams['sortby'] = $_REQUEST['ditto_sortBy'];
}
if($where){
    $arParams['where'] = $where;
}
if(isset($parents)){
    $arParams['parents'] = $parents;
}
if($resources){
    $arParams['resources'] = $resources;
}
$arParams['sortbyTVType'] = 'integer';

if($paginate){
    $arParams['pageLimit']='6';
    $output = $modx->runSnippet('pdoPage', $arParams);
}else{
    
    $output = $modx->runSnippet('pdoResources', $arParams);
}
if(!$output){$output = 'Результатов нет';};
  • Вопрос задан
  • 931 просмотр
Пригласить эксперта
Ответы на вопрос 1
@juniorspecialist Автор вопроса
Джуниор
Вызов сниппета:
[[!pdoResourcesSort?        &tpl=`goods_list_row`        &includeTVs=`image,price,capacity, rotation_type, size`        &depth=`0`        &pageLimit=`6`        &limit=`6`        &paginate=`1`    ]]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы