Olga

Olga

С нами с 17 февраля 2019; Место в рейтинге пользователей: #1995

Фильтр по категории без использования mSearch2

Здравствуйте!
Прошу помочь в таком вопросе.
В связи с отсутствием возможности использования mSearch2 был нужен альтернативный вариант реализации фильтра по категории.
За основу взять скрипт и сниппет из примера webdesign-master.ru/blog/modx/2016-05-03-modx-ajax-filter.html
Мой сниппет catalogFilter выглядит так (количество tv-параметров в дальнейшем хочу увеличить):
<?php
//Filter Fields Settings
$filter = array();

//Radio, Select & Text Fields Type
if($_GET['n_price']) {
    $filter[] = 'n_price<='.$_GET['n_price'];
}

//End Settings

//Sort
if($_GET['sortby']) {
    $sortby = $_GET['sortby'];
} else {
    $sortby = 'pagetitle';
}
if($_GET['sortdir']) {
    $sortdir = $_GET['sortdir'];
} else {
    $sortdir = 'asc';
}
//End Sort

//Offset
$offset = 0;
if($_GET['offset']){
    $offset = $_GET['offset'];
}

if($filter) {
    $where = $modx->toJSON(array($filter));
} else {
    $where = '';
}

$params_count = array(
    'parents' => $parents,
    'limit' => 0,
    'tpl' => '@INLINE ,',
    'select' => 'id',
    'includeTVs' => $fields,
    'showHidden' => '1',
    'where' => $where
);

$count = $modx->runSnippet('pdoResources',$params_count);
$count = count(explode(',',$count))-1;
$modx->setPlaceholder('count',$count);

$params = array(
    'parents' => $parents,
    'limit' => $limit,
    'offset' => $offset,
    'tpl' => $tpl,
    'select' => 'id,pagetitle,introtext,content',
    'includeTVs' => $fields,
    'showHidden' => '1',
    'sortby' => $sortby,
    'sortdir' => $sortdir,
    'where' => $where
);

$more = $count - $offset - $limit;
$lim = $more > $limit ? $limit : $more;

$button = '';
if($more > 0){
    $button = '<div class="ajax-filter-count" data-count="'.$count.'"><a href="#" class="ajax-more">Загрузить еще '.$lim.' из '.$more.'</a></div>';
}

return $modx->runSnippet('pdoResources',$params).$button;
Далее пробую получить результат работы сниппета (использую Fenom)
{set $res = $_modx->runSnippet('!catalogFilter', [
                                'parents' => $_modx->resource.id, 
                                'fields' => 'n_price',
                                'limit' => '3',
                                'tpl' => '@FILE chunks/tplCatItem.tpl',
                                'toPlaceholder' => 'sresults'
                            ])}
                            
                            {$_modx->getPlaceholder('sresults')}
                            
                            {$res}
                            {'!pdoPage' | snippet : [
                                'parents' => $_modx->resource.id, 
                                'depth' => '1', 
                                'includeTVs' => 'n_price', 
                                'tvPrefix'=>'',
                                'tpl' => '@FILE chunks/objectTpl.tpl'
                                'resources' => $res.id
                                ]}
Выводится массив с параметрами ресурса правильно, фильтрация работает. Но вывести отфильтрованные значения в pdoPage не получается.
Подскажите, пожалуйста, что может быть неправильно?
Спасибо за участие!
Olga
10 июня 2019, 21:29
116
0