Example #1
0
 public function applyFilterToCollection($filter, $value)
 {
     if (!Mage::helper('sm_shopby')->isEnabled()) {
         return parent::applyFilterToCollection($filter, $value);
     }
     $collection = $filter->getLayer()->getProductCollection();
     $attribute = $filter->getAttributeModel();
     $connection = $this->_getReadAdapter();
     $tableAlias = $attribute->getAttributeCode() . '_idx' . uniqid();
     $conditions = array("{$tableAlias}.entity_id = e.entity_id", $connection->quoteInto("{$tableAlias}.attribute_id = ?", $attribute->getAttributeId()), $connection->quoteInto("{$tableAlias}.store_id = ?", $collection->getStoreId()));
     $attrUrlKeyModel = Mage::getResourceModel('sm_shopby/attribute_urlkey');
     if (!is_array($value)) {
         foreach ($options as $option) {
             if ($option['label'] == $value) {
                 $value = $option['value'];
             }
         }
         $conditions[] = $connection->quoteInto("{$tableAlias}.value = ?", $value);
     } else {
         $conditions[] = "{$tableAlias}.value in ( ";
         foreach ($value as $v) {
             $v = $attrUrlKeyModel->getOptionId($attribute->getId(), $v);
             $conditions[count($conditions) - 1] .= $connection->quoteInto("?", $v) . ' ,';
         }
         $conditions[count($conditions) - 1] = rtrim($conditions[count($conditions) - 1], ',');
         $conditions[count($conditions) - 1] .= ')';
     }
     $collection->getSelect()->join(array($tableAlias => $this->getMainTable()), implode(' AND ', $conditions), array());
     $collection->getSelect()->distinct();
     return $this;
 }
 public function applyFilterToCollection($filter, $value)
 {
     if (!isset(self::$filtred[$value])) {
         self::$filtred[$value] = true;
         return parent::applyFilterToCollection($filter, $value);
     }
     return $this;
 }
Example #3
0
 /**
  * Apply attribute filter to product collection
  *
  * @param Mage_Catalog_Model_Layer_Filter_Attribute $filter
  * @param int $value
  * @return Mage_Catalog_Model_Resource_Layer_Filter_Attribute
  */
 public function applyFilterToCollection($filter, $value)
 {
     if (!Mage::helper('searchanise/ApiSe')->checkSearchaniseResult(true)) {
         return parent::applyFilterToCollection($filter, $value);
     }
     $collection = $filter->getLayer()->getProductCollection();
     if (!method_exists($collection, 'checkSearchaniseResult') || !$collection->checkSearchaniseResult()) {
         return parent::applyFilterToCollection($filter, $value);
     }
     // Disable internal attribute filter.
     return $this;
 }