Фильтр по параметрам для ShopModx

Добрый вечер! Нужен Фильтр по параметрам для ShopModx как это сделано в Shopkeeper. Можно как его прикрутить? Просто из за одного фильтра не хочется использовать Shopkeeper вместо ShopModx.

Заранее спасибо!!!

Comments

вот как тут demo-revo.modx-shopkeeper.ru/katalog/katalog-1/telefonyi/ слева где цена ползунок и 2 поля поднизом мин цена и макс

корректировка вот тут слева demo-revo.modx-shopkeeper.ru/katalog/katalog-2/telefonyi/

Нет, до этого мы еще не добрались (сами работаем над более важными моментами сейчас, а специально никто еще не заказывал). Но примерно такое вот здесь делалось: http://shop.ex-addicts.ru/catalog Я думаю, что полноценный такой фильтр раньше чем месяца через два ждать не придется, только если кто-то другой не сделает его.

Общий механизм поиска по параметрам описан здесь: modxclub.ru/blog/voprosy-spetsyalistov/256.html Может и сами сможете сделать.

Не нашел решилось это или нет, предлагаю свой вариант.

if($this->getProperty('sm_price')){
            $params = $this->getProperty('sm_price');
            $q = array();
            $q[] = "Product.resource_id = {$this->classKey}.id";
            foreach($params as $key=>$p){
                $q[] = 'Product.sm_price '.$key.' '.$p;
            }
            $c->innerJoin('ShopmodxProduct',  'Product', implode(' AND ',$q));                        
        }else{ $c->innerJoin('ShopmodxProduct', 'Product'); }

в процессоре web/catalog/category/products/getdata

и до вызова процессора

{$params["sm_price"] = [">=" => $prices.0, "<=" => $prices.1]}

<< $c->innerJoin('ShopmodxProduct', 'Product'); Это не требуется, так как web/catalog/category/products/getdata расширяет web/catalog/products/getdata, в котором уже добавлено условие на таблицу.

if($this->getProperty('sm_price')){ $params = $this->getProperty('sm_price');

Это тоже лучше упростить до

if($params = $this->getProperty('sm_price')){

Итоговый код (без лишних else):

if($params = $this->getProperty('sm_price')){
    $q = array();
    foreach($params as $key=>$p){
        $q[] = 'Product.sm_price '.$key.' '.$p;
    }
    $query->where($q);                       
}

Но это если рассматривать именно ваш код. А вообще правильней просто добавить where еще перед вызовом процессора. `{params.where[] = «sm_price between {prices.0} and {prices.1}»}`