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