<< $c->innerJoin('ShopmodxProduct', 'Product'); Э

<< $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}»}`