Пример #1
0
 public function testApply()
 {
     $this->assertEmpty($this->_model->getLayer()->getState()->getFilters());
     $request = new Magento_Test_Request();
     $request->setParam('attribute', $this->_attributeOptionId);
     $this->_model->apply($request, new Mage_Core_Block_Text());
     $this->assertNotEmpty($this->_model->getLayer()->getState()->getFilters());
 }
Пример #2
0
 /**
  * Init filter model object
  *
  * @return Mage_Catalog_Block_Layer_Filter_Abstract
  */
 protected function _initFilter()
 {
     if (!$this->_filterModelName) {
         Mage::throwException(Mage::helper('catalog')->__('Filter model name must be declared.'));
     }
     $this->_filter = Mage::getModel($this->_filterModelName)->setLayer($this->getLayer());
     $this->_prepareFilter();
     $this->_filter->apply($this->getRequest(), $this);
     return $this;
 }
 /**
  * Apply attribute filter to layer
  *
  * @param Zend_Controller_Request_Abstract $request
  * @param object $filterBlock
  * @return Enterprise_Search_Model_Catalog_Layer_Filter_Attribute
  */
 public function apply(Zend_Controller_Request_Abstract $request, $filterBlock)
 {
     if (!Mage::helper('catalin_seo')->isEnabled()) {
         return parent::apply($request, $filterBlock);
     }
     $filter = $request->getParam($this->_requestVar);
     if (is_array($filter)) {
         return $this;
     }
     if (empty($filter)) {
         return $this;
     }
     $this->_values = explode(Catalin_SEO_Helper_Data::MULTIPLE_FILTERS_DELIMITER, $filter);
     if (!empty($this->_values)) {
         $attrUrlKeyModel = Mage::getResourceModel('catalin_seo/attribute_urlkey');
         $this->_getResource()->applyFilterToCollection($this, $this->_values);
         foreach ($this->_values as $filter) {
             $optionId = $attrUrlKeyModel->getOptionId($this->getAttributeModel()->getId(), $filter);
             $text = $this->_getOptionText($optionId);
             $this->getLayer()->getState()->addFilter($this->_createItem($text, $filter));
             // process all items if multiple choice is enabled
             if (!Mage::helper('catalin_seo')->isMultipleChoiceFiltersEnabled()) {
                 $this->_items = array();
             }
         }
     }
     return $this;
 }
Пример #4
0
 public function apply(Zend_Controller_Request_Abstract $request, $filterBlock)
 {
     if (Mage::getStoreConfig('mageworx_seo/seosuite/disable_layered_rewrites')) {
         return parent::apply($request, $filterBlock);
     }
     $text = $request->getParam($this->_requestVar);
     if (is_array($text)) {
         return $this;
     }
     $filter = $this->_getOptionId($text);
     if ($filter && $text) {
         $layeredNavigationCanonical = $this->getAttributeModel()->getLayeredNavigationCanonical();
         if ($layeredNavigationCanonical == 1) {
             $layerCanonicalFilter = Mage::registry('layer_canonical_filter');
             if (!$layerCanonicalFilter) {
                 $layerCanonicalFilter = array();
             }
             $attributeCode = $this->getAttributeModel()->getAttributeCode();
             $layerCanonicalFilter[$attributeCode] = $text;
             //$layeredNavigationCanonical;
             Mage::unregister('layer_canonical_filter');
             Mage::register('layer_canonical_filter', $layerCanonicalFilter);
         }
         if (method_exists($this, '_getResource')) {
             $this->_getResource()->applyFilterToCollection($this, $filter);
         } else {
             Mage::getSingleton('catalogindex/attribute')->applyFilterToCollection($this->getLayer()->getProductCollection(), $this->getAttributeModel(), $filter);
         }
         $this->getLayer()->getState()->addFilter($this->_createItem($text, $filter));
         $this->_items = array();
     }
     return $this;
 }