/** * @return Hackathon_ElasticgentoCore_Model_Resource_Collection */ protected function _renderFiltersBefore() { //apply category filters if (true === isset($this->_productLimitationFilters['category_id']) && (int) $this->_productLimitationFilters['category_id'] > 0) { //check if category is anchor if (false === isset($this->_productLimitationFilters['category_is_anchor'])) { $filter = new Elastica\Filter\BoolOr(); $filterAnchors = new Elastica\Filter\Term(); $filterAnchors->setTerm('anchors', $this->_productLimitationFilters['category_id']); } $filterCategory = new Elastica\Filter\Term(); $filterCategory->setTerm('categories', $this->_productLimitationFilters['category_id']); if (false === isset($this->_productLimitationFilters['category_is_anchor'])) { $filter->addFilter($filterCategory); $filter->addFilter($filterAnchors); $filter->setName('category'); $this->_queryAttributeFilters['category'] = $filter; } else { $filterCategory->setName('category'); $this->_queryAttributeFilters['category'] = $filterCategory; } } //apply visibility filters if (true === isset($this->_productLimitationFilters['visibility'])) { if (true === is_array($this->_productLimitationFilters['visibility'])) { $visibilityFilters = new Elastica\Filter\BoolOr(); foreach ($this->_productLimitationFilters['visibility'] as $visibility) { $visibilityFilter = new Elastica\Filter\Term(); $visibilityFilter->setTerm('visibility', $visibility); $visibilityFilters->addFilter($visibilityFilter); } $visibilityFilters->setName('visibility'); $this->_queryAttributeFilters['visibility'] = $visibilityFilters; } } return parent::_renderFiltersBefore(); }