示例#1
0
 /**
  * @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();
 }