11 дек. 2013 г., 14:51

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

Добрый вечер нужен Фильтр по параметрам для ShopModx как это сделано в Shopkeeper можно как его прикрутить? просто из за одного фильтра не хочеться использовать Shopkeeper вместо ShopModx
Заранее спасибо!!!
Добрый день! Вы имеете ввиду смарт-фильтры, или просто поиск по параметрам?
вот как тут demo-revo.modx-shopkeeper.ru/katalog/katalog-1/telefonyi/ слева где цена ползунок и 2 поля поднизом мин цена и макс
Нет, до этого мы еще не добрались (сами работаем над более важными моментами сейчас, а специально никто еще не заказывал). Но примерно такое вот здесь делалось: 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}»}

Добавить комментарий