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; }
/** * 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; }