Catalin_Seo - Version 3.2.0

Version Notes

- Added show more & search for filters
- Added go to category instead of filtering
- Fixed double escaping of urls
- Fixed max price filter
- Fixed displayed price filter

Download this release

Release Info

Developer Catalin Ciobanu
Extension Catalin_Seo
Version 3.2.0
Comparing to
See all releases


Code changes from version 3.1.0 to 3.2.0

LICENSE.txt ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2016 Catalin Ciobanu
2
+
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
README.md ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ README
2
+ ================
3
+
4
+ Requirements
5
+ ------------
6
+
7
+ The supported Magento version is 1.9.x
8
+
9
+ Features
10
+ ----------------
11
+
12
+ - ajax navigation using history pushState/popState
13
+ - price slider with submit button
14
+ - SEO URLs (http://www.example.com/men/shirts/filter/fit/regular,sharp/sleeve_length/long-sleeve.html)
15
+ - multiple filters for the same attribute
16
+ - supports Magento Configurable Swatches
17
+ - possibility to add "nofollow" on layered navigation pages
18
+
19
+ All the above features can be enabled/disabled from backend: "System -> Configuration -> Catalin SEO -> Catalog Layered Navigation"
20
+
21
+ Install via Modman
22
+ ----------------
23
+
24
+ You can install this module using [Colin Mollenhour's](https://github.com/colinmollenhour) [Modman tool](https://github.com/colinmollenhour/modman).
25
+
26
+ ```bash
27
+ $ modman init
28
+ $ modman clone https://github.com/caciobanu/improved-magento-layered-navigation.git
29
+ ```
30
+
31
+ Contribution
32
+ ------------
33
+
34
+ To contribute please issue pull requests to the `develop` branch _only_. New releases will be merged to feature branches. Bugfixes are hotfix patched to both `master` and `develop`.
app/code/community/Catalin/SEO/Block/Catalog/Layer/Filter/Category.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Catalin Ciobanu
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the MIT License (MIT)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * https://opensource.org/licenses/MIT
12
+ *
13
+ * @package Catalin_Seo
14
+ * @copyright Copyright (c) 2016 Catalin Ciobanu
15
+ * @license https://opensource.org/licenses/MIT MIT License (MIT)
16
+ */
17
+ class Catalin_SEO_Block_Catalog_Layer_Filter_Category extends Mage_Catalog_Block_Layer_Filter_Category
18
+ {
19
+
20
+ /**
21
+ * Class constructor
22
+ */
23
+ public function __construct()
24
+ {
25
+ parent::__construct();
26
+
27
+ if ($this->helper('catalin_seo')->isCategoryLinksEnabled()) {
28
+ /**
29
+ * Modify template for category filter to disable ajax when url is used.
30
+ */
31
+ $this->setTemplate('catalin_seo/catalog/layer/category.phtml');
32
+ }
33
+ }
34
+
35
+ }
app/code/community/Catalin/SEO/Helper/Data.php CHANGED
@@ -72,6 +72,19 @@ class Catalin_SEO_Helper_Data extends Mage_Core_Helper_Data
72
  return Mage::getStoreConfigFlag('catalin_seo/catalog/price_slider');
73
  }
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  /**
76
  * Retrieve routing suffix
77
  *
@@ -134,16 +147,22 @@ class Catalin_SEO_Helper_Data extends Mage_Core_Helper_Data
134
  $params = array(
135
  '_current' => true,
136
  '_use_rewrite' => true,
137
- '_query' => $query,
138
- '_escape' => true,
139
  );
140
 
141
  $url = Mage::getUrl('*/*/*', $params);
142
  $urlPath = '';
143
 
 
 
 
 
144
  if (!$noFilters) {
145
  // Add filters
146
  $layerParams = $this->getCurrentLayerParams($filters);
 
 
 
147
  foreach ($layerParams as $key => $value) {
148
  // Encode and replace escaped delimiter with the delimiter itself
149
  $value = str_replace(urlencode(self::MULTIPLE_FILTERS_DELIMITER), self::MULTIPLE_FILTERS_DELIMITER, urlencode($value));
@@ -511,4 +530,21 @@ class Catalin_SEO_Helper_Data extends Mage_Core_Helper_Data
511
  }
512
  }
513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  }
72
  return Mage::getStoreConfigFlag('catalin_seo/catalog/price_slider');
73
  }
74
 
75
+ /**
76
+ * Check if category links are enabled instead of the filter
77
+ *
78
+ * @return boolean
79
+ */
80
+ public function isCategoryLinksEnabled()
81
+ {
82
+ if (!$this->isEnabled()) {
83
+ return false;
84
+ }
85
+ return Mage::getStoreConfigFlag('catalin_seo/catalog/category_links');
86
+ }
87
+
88
  /**
89
  * Retrieve routing suffix
90
  *
147
  $params = array(
148
  '_current' => true,
149
  '_use_rewrite' => true,
150
+ '_query' => $query
 
151
  );
152
 
153
  $url = Mage::getUrl('*/*/*', $params);
154
  $urlPath = '';
155
 
156
+ if (isset($filters['cat']) && $this->isCategoryLinksEnabled()) {
157
+ $url = $filters['cat'];
158
+ }
159
+
160
  if (!$noFilters) {
161
  // Add filters
162
  $layerParams = $this->getCurrentLayerParams($filters);
163
+ if (isset($layerParams['cat']) && $this->isCategoryLinksEnabled()) {
164
+ unset($layerParams['cat']);
165
+ }
166
  foreach ($layerParams as $key => $value) {
167
  // Encode and replace escaped delimiter with the delimiter itself
168
  $value = str_replace(urlencode(self::MULTIPLE_FILTERS_DELIMITER), self::MULTIPLE_FILTERS_DELIMITER, urlencode($value));
530
  }
531
  }
532
 
533
+ public function getShowMore()
534
+ {
535
+ return Mage::getStoreConfig('catalin_seo/catalog/show_more_link');
536
+ }
537
+
538
+ public function getSearchFilter()
539
+ {
540
+ $searchFilter = Mage::getStoreConfig('catalin_seo/catalog/search_filter');
541
+ if($searchFilter && $this->getShowMore()) {
542
+ return true;
543
+ } elseif($searchFilter && !$this->getShowMore()) {
544
+ return null;
545
+ } else {
546
+ return false;
547
+ }
548
+ }
549
+
550
  }
app/code/community/Catalin/SEO/Model/Catalog/Layer/Filter/Category.php CHANGED
@@ -62,11 +62,15 @@ class Catalin_SEO_Model_Catalog_Layer_Filter_Category extends Mage_Catalog_Model
62
  $data = array();
63
  foreach ($categories as $category) {
64
  if ($category->getIsActive() && $category->getProductCount()) {
65
- $urlKey = $category->getUrlKey();
66
- if (empty($urlKey)) {
67
- $urlKey = $category->getId();
68
  } else {
69
- $urlKey = $category->getId() . '-' . $urlKey;
 
 
 
 
 
70
  }
71
 
72
  $data[] = array(
62
  $data = array();
63
  foreach ($categories as $category) {
64
  if ($category->getIsActive() && $category->getProductCount()) {
65
+ if (Mage::helper('catalin_seo')->isCategoryLinksEnabled()) {
66
+ $urlKey = $category->getUrl();
 
67
  } else {
68
+ $urlKey = $category->getUrlKey();
69
+ if (empty($urlKey)) {
70
+ $urlKey = $category->getId();
71
+ } else {
72
+ $urlKey = $category->getId() . '-' . $urlKey;
73
+ }
74
  }
75
 
76
  $data[] = array(
app/code/community/Catalin/SEO/Model/Catalog/Layer/Filter/Price.php CHANGED
@@ -45,6 +45,26 @@ class Catalin_SEO_Model_Catalog_Layer_Filter_Price extends Mage_Catalog_Model_La
45
  return $this->getData('min_price_float');
46
  }
47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  /**
49
  * Collect useful information - max and min price
50
  *
@@ -67,7 +87,7 @@ class Catalin_SEO_Model_Catalog_Layer_Filter_Price extends Mage_Catalog_Model_La
67
  $select->setPart(Zend_Db_Select::WHERE, $conditionsNoPrice);
68
 
69
  $this->setData('min_price_float', floor($collection->getMinPrice()));
70
- $this->setData('max_price_float', round($collection->getMaxPrice()));
71
 
72
  // Restore all sql conditions
73
  $select->setPart(Zend_Db_Select::WHERE, $conditions);
45
  return $this->getData('min_price_float');
46
  }
47
 
48
+ /**
49
+ * Prepare text of range label
50
+ *
51
+ * @param float|string $fromPrice
52
+ * @param float|string $toPrice
53
+ * @return string
54
+ */
55
+ protected function _renderRangeLabel($fromPrice, $toPrice)
56
+ {
57
+ $store = Mage::app()->getStore();
58
+ $formattedFromPrice = $store->formatPrice($fromPrice);
59
+ if ($toPrice === '') {
60
+ return Mage::helper('catalog')->__('%s and above', $formattedFromPrice);
61
+ } elseif ($fromPrice == $toPrice && Mage::app()->getStore()->getConfig(self::XML_PATH_ONE_PRICE_INTERVAL)) {
62
+ return $formattedFromPrice;
63
+ } else {
64
+ return Mage::helper('catalog')->__('%s - %s', $formattedFromPrice, $store->formatPrice($toPrice));
65
+ }
66
+ }
67
+
68
  /**
69
  * Collect useful information - max and min price
70
  *
87
  $select->setPart(Zend_Db_Select::WHERE, $conditionsNoPrice);
88
 
89
  $this->setData('min_price_float', floor($collection->getMinPrice()));
90
+ $this->setData('max_price_float', ceil($collection->getMaxPrice()));
91
 
92
  // Restore all sql conditions
93
  $select->setPart(Zend_Db_Select::WHERE, $conditions);
app/code/community/Catalin/SEO/Model/Catalog/Resource/Layer/Filter/Price.php CHANGED
@@ -30,7 +30,7 @@ class Catalin_SEO_Model_Catalog_Resource_Layer_Filter_Price extends Mage_Catalog
30
  && Mage::helper('catalin_seo')->isPriceSliderEnabled()
31
  ) {
32
  $currencyRate = $filter->getLayer()->getProductCollection()->getCurrencyRate();
33
- return $price / $currencyRate;
34
  }
35
 
36
  return parent::_getComparingValue($price, $filter, $decrease);
30
  && Mage::helper('catalin_seo')->isPriceSliderEnabled()
31
  ) {
32
  $currencyRate = $filter->getLayer()->getProductCollection()->getCurrencyRate();
33
+ return sprintf('%F', $price / $currencyRate);
34
  }
35
 
36
  return parent::_getComparingValue($price, $filter, $decrease);
app/code/community/Catalin/SEO/Model/Enterprise/Catalog/Layer/Filter/Attribute.php CHANGED
@@ -14,7 +14,7 @@
14
  * @copyright Copyright (c) 2016 Catalin Ciobanu
15
  * @license https://opensource.org/licenses/MIT MIT License (MIT)
16
  */
17
- class Catalin_SEO_Model_Enterprise_Catalog_Layer_Filter_Attribute extends Mage_Catalog_Model_Catalog_Layer_Filter_Attribute
18
  {
19
 
20
  protected $_values = array();
@@ -122,4 +122,4 @@ class Catalin_SEO_Model_Enterprise_Catalog_Layer_Filter_Attribute extends Mage_C
122
  return $data;
123
  }
124
 
125
- }
14
  * @copyright Copyright (c) 2016 Catalin Ciobanu
15
  * @license https://opensource.org/licenses/MIT MIT License (MIT)
16
  */
17
+ class Catalin_SEO_Model_Enterprise_Catalog_Layer_Filter_Attribute extends Enterprise_Search_Model_Catalog_Layer_Filter_Attribute
18
  {
19
 
20
  protected $_values = array();
122
  return $data;
123
  }
124
 
125
+ }
app/code/community/Catalin/SEO/Model/Enterprise/Catalog/Layer/Filter/Category.php CHANGED
@@ -62,11 +62,15 @@ class Catalin_SEO_Model_Enterprise_Catalog_Layer_Filter_Category extends Enterpr
62
  $data = array();
63
  foreach ($categories as $category) {
64
  if ($category->getIsActive() && $category->getProductCount()) {
65
- $urlKey = $category->getUrlKey();
66
- if (empty($urlKey)) {
67
- $urlKey = $category->getId();
68
  } else {
69
- $urlKey = $category->getId() . '-' . $urlKey;
 
 
 
 
 
70
  }
71
 
72
  $data[] = array(
62
  $data = array();
63
  foreach ($categories as $category) {
64
  if ($category->getIsActive() && $category->getProductCount()) {
65
+ if (Mage::helper('catalin_seo')->isCategoryLinksEnabled()) {
66
+ $urlKey = $category->getUrl();
 
67
  } else {
68
+ $urlKey = $category->getUrlKey();
69
+ if (empty($urlKey)) {
70
+ $urlKey = $category->getId();
71
+ } else {
72
+ $urlKey = $category->getId() . '-' . $urlKey;
73
+ }
74
  }
75
 
76
  $data[] = array(
app/code/community/Catalin/SEO/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Catalin_SEO>
5
- <version>3.1.0</version>
6
  </Catalin_SEO>
7
  </modules>
8
  <global>
@@ -57,6 +57,7 @@
57
  <layer_state>Catalin_SEO_Block_Catalog_Layer_State</layer_state>
58
  <product_list_toolbar>Catalin_SEO_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
59
  <layer_filter_attribute>Catalin_SEO_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
 
60
  <layer_filter_price>Catalin_SEO_Block_Catalog_Layer_Filter_Price</layer_filter_price>
61
  </rewrite>
62
  </catalog>
@@ -109,6 +110,15 @@
109
  </index>
110
  </global>
111
  <frontend>
 
 
 
 
 
 
 
 
 
112
  <routers>
113
  <catalog>
114
  <args>
@@ -142,6 +152,9 @@
142
  <multiple_choice_filters>1</multiple_choice_filters>
143
  <routing_suffix>filter</routing_suffix>
144
  <nofollow>0</nofollow>
 
 
 
145
  </catalog>
146
  </catalin_seo>
147
  </default>
2
  <config>
3
  <modules>
4
  <Catalin_SEO>
5
+ <version>3.2.0</version>
6
  </Catalin_SEO>
7
  </modules>
8
  <global>
57
  <layer_state>Catalin_SEO_Block_Catalog_Layer_State</layer_state>
58
  <product_list_toolbar>Catalin_SEO_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
59
  <layer_filter_attribute>Catalin_SEO_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
60
+ <layer_filter_category>Catalin_SEO_Block_Catalog_Layer_Filter_Category</layer_filter_category>
61
  <layer_filter_price>Catalin_SEO_Block_Catalog_Layer_Filter_Price</layer_filter_price>
62
  </rewrite>
63
  </catalog>
110
  </index>
111
  </global>
112
  <frontend>
113
+ <translate>
114
+ <modules>
115
+ <catalin_seo>
116
+ <files>
117
+ <default>Catalin_SEO.csv</default>
118
+ </files>
119
+ </catalin_seo>
120
+ </modules>
121
+ </translate>
122
  <routers>
123
  <catalog>
124
  <args>
152
  <multiple_choice_filters>1</multiple_choice_filters>
153
  <routing_suffix>filter</routing_suffix>
154
  <nofollow>0</nofollow>
155
+ <show_more_link>0</show_more_link>
156
+ <category_links>0</category_links>
157
+ <search_filter>0</search_filter>
158
  </catalog>
159
  </catalin_seo>
160
  </default>
app/code/community/Catalin/SEO/etc/system.xml CHANGED
@@ -1,13 +1,13 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <config>
3
  <tabs>
4
- <catalin translate="label" module="catalin_seo">
5
  <label>Catalin</label>
6
  <sort_order>300</sort_order>
7
  </catalin>
8
  </tabs>
9
  <sections>
10
- <catalin_seo translate="label" module="catalin_seo">
11
  <label>Catalin SEO</label>
12
  <tab>catalin</tab>
13
  <frontend_type>text</frontend_type>
@@ -16,7 +16,7 @@
16
  <show_in_website>1</show_in_website>
17
  <show_in_store>1</show_in_store>
18
  <groups>
19
- <catalog translate="label">
20
  <label>Catalog Layered Navigation</label>
21
  <frontend_type>text</frontend_type>
22
  <sort_order>2</sort_order>
@@ -24,7 +24,7 @@
24
  <show_in_website>1</show_in_website>
25
  <show_in_store>1</show_in_store>
26
  <fields>
27
- <enabled translate="label">
28
  <label>Enable</label>
29
  <frontend_type>select</frontend_type>
30
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -34,7 +34,7 @@
34
  <show_in_website>1</show_in_website>
35
  <show_in_store>1</show_in_store>
36
  </enabled>
37
- <ajax_enabled translate="label">
38
  <label>Enable AJAX</label>
39
  <frontend_type>select</frontend_type>
40
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -47,7 +47,7 @@
47
  <enabled>1</enabled>
48
  </depends>
49
  </ajax_enabled>
50
- <price_slider translate="label">
51
  <label>Enable Price Slider</label>
52
  <frontend_type>select</frontend_type>
53
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -60,7 +60,7 @@
60
  <enabled>1</enabled>
61
  </depends>
62
  </price_slider>
63
- <multiple_choice_filters translate="label">
64
  <label>Enable Multiple Choice Filter</label>
65
  <frontend_type>select</frontend_type>
66
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -73,7 +73,7 @@
73
  <enabled>1</enabled>
74
  </depends>
75
  </multiple_choice_filters>
76
- <routing_suffix translate="label">
77
  <label>Routing Suffix</label>
78
  <frontend_type>text</frontend_type>
79
  <comment>Used in url generation (it should be alphanumeric) - Do not use slash ( / )</comment>
@@ -86,7 +86,7 @@
86
  <enabled>1</enabled>
87
  </depends>
88
  </routing_suffix>
89
- <nofollow translate="label">
90
  <label>Enable Nofollow on Layered Navigation Links</label>
91
  <frontend_type>select</frontend_type>
92
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -98,6 +98,34 @@
98
  <enabled>1</enabled>
99
  </depends>
100
  </nofollow>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  </fields>
102
  </catalog>
103
  </groups>
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <config>
3
  <tabs>
4
+ <catalin translate="label comment" module="catalin_seo">
5
  <label>Catalin</label>
6
  <sort_order>300</sort_order>
7
  </catalin>
8
  </tabs>
9
  <sections>
10
+ <catalin_seo translate="label comment" module="catalin_seo">
11
  <label>Catalin SEO</label>
12
  <tab>catalin</tab>
13
  <frontend_type>text</frontend_type>
16
  <show_in_website>1</show_in_website>
17
  <show_in_store>1</show_in_store>
18
  <groups>
19
+ <catalog translate="label comment">
20
  <label>Catalog Layered Navigation</label>
21
  <frontend_type>text</frontend_type>
22
  <sort_order>2</sort_order>
24
  <show_in_website>1</show_in_website>
25
  <show_in_store>1</show_in_store>
26
  <fields>
27
+ <enabled translate="label comment">
28
  <label>Enable</label>
29
  <frontend_type>select</frontend_type>
30
  <source_model>adminhtml/system_config_source_yesno</source_model>
34
  <show_in_website>1</show_in_website>
35
  <show_in_store>1</show_in_store>
36
  </enabled>
37
+ <ajax_enabled translate="label comment">
38
  <label>Enable AJAX</label>
39
  <frontend_type>select</frontend_type>
40
  <source_model>adminhtml/system_config_source_yesno</source_model>
47
  <enabled>1</enabled>
48
  </depends>
49
  </ajax_enabled>
50
+ <price_slider translate="label comment">
51
  <label>Enable Price Slider</label>
52
  <frontend_type>select</frontend_type>
53
  <source_model>adminhtml/system_config_source_yesno</source_model>
60
  <enabled>1</enabled>
61
  </depends>
62
  </price_slider>
63
+ <multiple_choice_filters translate="label comment">
64
  <label>Enable Multiple Choice Filter</label>
65
  <frontend_type>select</frontend_type>
66
  <source_model>adminhtml/system_config_source_yesno</source_model>
73
  <enabled>1</enabled>
74
  </depends>
75
  </multiple_choice_filters>
76
+ <routing_suffix translate="label comment">
77
  <label>Routing Suffix</label>
78
  <frontend_type>text</frontend_type>
79
  <comment>Used in url generation (it should be alphanumeric) - Do not use slash ( / )</comment>
86
  <enabled>1</enabled>
87
  </depends>
88
  </routing_suffix>
89
+ <nofollow translate="label comment">
90
  <label>Enable Nofollow on Layered Navigation Links</label>
91
  <frontend_type>select</frontend_type>
92
  <source_model>adminhtml/system_config_source_yesno</source_model>
98
  <enabled>1</enabled>
99
  </depends>
100
  </nofollow>
101
+ <category_links translate="label comment">
102
+ <label>Category links go to category instead of applying filter</label>
103
+ <frontend_type>select</frontend_type>
104
+ <source_model>adminhtml/system_config_source_yesno</source_model>
105
+ <sort_order>10</sort_order>
106
+ <show_in_default>1</show_in_default>
107
+ <show_in_website>1</show_in_website>
108
+ <show_in_store>1</show_in_store>
109
+ </category_links>
110
+ <show_more_link translate="label comment">
111
+ <label>Use 'Show more' link</label>
112
+ <comment>Show 'Show more' link when option has more than X items (use 0 for showing all)</comment>
113
+ <frontend_type>text</frontend_type>
114
+ <sort_order>20</sort_order>
115
+ <show_in_default>1</show_in_default>
116
+ <show_in_website>1</show_in_website>
117
+ <show_in_store>1</show_in_store>
118
+ </show_more_link>
119
+ <search_filter translate="label comment">
120
+ <label>Search attribute values</label>
121
+ <comment>Show a search box for attribute values when all options are shown</comment>
122
+ <frontend_type>select</frontend_type>
123
+ <source_model>adminhtml/system_config_source_yesno</source_model>
124
+ <sort_order>30</sort_order>
125
+ <show_in_default>1</show_in_default>
126
+ <show_in_website>1</show_in_website>
127
+ <show_in_store>1</show_in_store>
128
+ </search_filter>
129
  </fields>
130
  </catalog>
131
  </groups>
app/design/frontend/base/default/template/catalin_seo/catalog/layer/category.phtml ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <ol>
2
+ <?php foreach ($this->getItems() as $_item): ?>
3
+ <li>
4
+ <?php if ($_item->getCount() > 0): ?>
5
+ <a class="no-ajax" href="<?php echo $this->urlEscape($_item->getUrl()) ?>">
6
+ <?php echo $_item->getLabel() ?>
7
+ <?php if ($this->shouldDisplayProductCount()): ?>
8
+ <span class="count">(<?php echo $_item->getCount() ?>)</span>
9
+ <?php endif; ?>
10
+ </a>
11
+ <?php else: ?>
12
+ <span>
13
+ <?php echo $_item->getLabel(); ?>
14
+ <?php if ($this->shouldDisplayProductCount()): ?>
15
+ <span class="count">(<?php echo $_item->getCount() ?>)</span>
16
+ <?php endif; ?>
17
+ </span>
18
+ <?php endif; ?>
19
+ </li>
20
+ <?php endforeach ?>
21
+ </ol>
app/design/frontend/base/default/template/catalin_seo/catalog/layer/filter.phtml CHANGED
@@ -1,17 +1,23 @@
1
  <?php
2
- $_nofollow = Mage::helper('catalin_seo')->getNofollow();
3
  ?>
4
  <ol>
5
- <?php foreach ($this->getItems() as $_item): ?>
6
- <li>
7
  <?php if ($_item->getCount() > 0): ?>
8
- <a href="<?php echo ($_item->isSelected()) ? $_item->getRemoveUrl() : $_item->getUrl() ?>" <?php echo $_nofollow; ?> >
9
- <input type="checkbox"<?php if ($_item->isSelected()): ?> checked="checked" <?php endif; ?>/>
10
- <?php echo $_item->getLabel() ?>
11
- <?php if ($this->shouldDisplayProductCount()): ?>
12
- <span class="count">(<?php echo $_item->getCount() ?>)</span>
13
- <?php endif; ?>
14
- </a>
 
 
 
 
 
 
15
  <?php else: ?>
16
  <span>
17
  <?php echo $_item->getLabel(); ?>
@@ -22,4 +28,11 @@ $_nofollow = Mage::helper('catalin_seo')->getNofollow();
22
  <?php endif; ?>
23
  </li>
24
  <?php endforeach ?>
25
- </ol>
 
 
 
 
 
 
 
1
  <?php
2
+ $_showMore = Mage::helper('catalin_seo')->getShowMore();
3
  ?>
4
  <ol>
5
+ <?php foreach ($this->getItems() as $_key=>$_item): ?>
6
+ <li<?php if($_showMore && $_key >= $_showMore): ?> class="filter_hide"<?php endif; ?>>
7
  <?php if ($_item->getCount() > 0): ?>
8
+ <?php $id = $_item->getFilter()->getRequestVar() . '-' . $_item->getValue(); ?>
9
+ <div class="layered-nav-filter">
10
+ <input type="checkbox"<?php if ($_item->isSelected()): ?> checked="checked" <?php endif; ?>
11
+ value="<?php echo $this->urlEscape(($_item->isSelected()) ? $_item->getRemoveUrl() : $_item->getUrl()) ?>"
12
+ id="<?php echo $id; ?>" />
13
+
14
+ <label for="<?php echo $id; ?>" class="layered-nav-filter-label">
15
+ <?php echo $_item->getLabel() ?>
16
+ <?php if ($this->shouldDisplayProductCount()): ?>
17
+ <span class="count">(<?php echo $_item->getCount() ?>)</span>
18
+ <?php endif; ?>
19
+ </label>
20
+ </div>
21
  <?php else: ?>
22
  <span>
23
  <?php echo $_item->getLabel(); ?>
28
  <?php endif; ?>
29
  </li>
30
  <?php endforeach ?>
31
+ <?php if($_showMore && count($this->getItems()) > $_showMore): ?>
32
+ <li>
33
+ <div class="show_more_filters">
34
+ <a data-text-more="<?php echo Mage::helper('catalin_seo')->__('Show More'); ?>" data-text-less="<?php echo Mage::helper('catalin_seo')->__('Show Less'); ?>"><?php echo Mage::helper('catalin_seo')->__('Show More'); ?></a>
35
+ </div>
36
+ </li>
37
+ <?php endif; ?>
38
+ </ol>
app/design/frontend/base/default/template/catalin_seo/catalog/layer/view.phtml CHANGED
@@ -1,4 +1,5 @@
1
  <?php if ($this->canShowBlock()): ?>
 
2
  <?php if (!$this->getRequest()->isAjax()): ?>
3
  <div id="layered-navigation">
4
  <?php endif; ?>
@@ -9,7 +10,7 @@
9
  <div class="block-content toggle-content">
10
  <?php echo $this->getStateHtml() ?>
11
  <?php if ($this->getLayer()->getState()->getFilters()): ?>
12
- <div class="actions"><a href="<?php echo $this->getClearUrl() ?>"><?php echo $this->__('Clear All') ?></a></div>
13
  <?php endif; ?>
14
  <?php if($this->canShowOptions()): ?>
15
  <p class="block-subtitle block-subtitle--filter"><?php echo $this->__('Filter') ?></p>
@@ -18,6 +19,9 @@
18
  <?php foreach ($_filters as $_filter): ?>
19
  <?php if($_filter->getItemsCount()): ?>
20
  <dt><?php echo $this->__($_filter->getName()) ?></dt>
 
 
 
21
  <dd><?php echo $_filter->getHtml() ?></dd>
22
  <?php endif; ?>
23
  <?php endforeach; ?>
1
  <?php if ($this->canShowBlock()): ?>
2
+ <?php $_searchFilter = Mage::helper('catalin_seo')->getSearchFilter(); ?>
3
  <?php if (!$this->getRequest()->isAjax()): ?>
4
  <div id="layered-navigation">
5
  <?php endif; ?>
10
  <div class="block-content toggle-content">
11
  <?php echo $this->getStateHtml() ?>
12
  <?php if ($this->getLayer()->getState()->getFilters()): ?>
13
+ <div class="actions"><a href="<?php echo $this->urlEscape($this->getClearUrl()) ?>"><?php echo $this->__('Clear All') ?></a></div>
14
  <?php endif; ?>
15
  <?php if($this->canShowOptions()): ?>
16
  <p class="block-subtitle block-subtitle--filter"><?php echo $this->__('Filter') ?></p>
19
  <?php foreach ($_filters as $_filter): ?>
20
  <?php if($_filter->getItemsCount()): ?>
21
  <dt><?php echo $this->__($_filter->getName()) ?></dt>
22
+ <?php if($_searchFilter !== false): ?>
23
+ <dt class="attribute_value_search_box<?php if($_searchFilter !== true): ?> enabled<?php endif; ?>"><input type="text" placeholder="<?php echo $this->__('Search for option'); ?>" /></dt>
24
+ <?php endif;?>
25
  <dd><?php echo $_filter->getHtml() ?></dd>
26
  <?php endif; ?>
27
  <?php endforeach; ?>
app/locale/en_US/Catalin_SEO.csv ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ "Update","Update"
2
+ "Shop By","Shop By"
3
+ "Price filter not available","Price filter not available"
4
+ "Show More","Show More"
5
+ "Show Less","Show Less"
6
+ "Clear All","Clear All"
7
+ "Filter","Filter"
app/locale/nl_NL/Catalin_SEO.csv ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ "Update","Bijwerken"
2
+ "Shop By","Filteren op"
3
+ "Price filter not available","Prijs filter niet beschikbaar"
4
+ "Show More","Toon meer"
5
+ "Show Less","Toon minder"
6
+ "Clear All","Verwijder alle filters"
7
+ "Filter","Filter"
package.xml CHANGED
@@ -1,9 +1,9 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Catalin_Seo</name>
4
- <version>3.1.0</version>
5
  <stability>stable</stability>
6
- <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Layered Navigation SEO: ajax, seo urls, price slider, multiple filters for the same attribute.</summary>
@@ -16,17 +16,19 @@
16
  &lt;li&gt;multiple filters for the same attribute&lt;/li&gt;&#xD;
17
  &lt;li&gt;supports Magento Configurable Swatches&lt;/li&gt;&#xD;
18
  &lt;li&gt;possibility to add "nofollow" on layered navigation pages&lt;/li&gt;&#xD;
 
 
19
  &lt;/ul&gt;&#xD;
20
  &lt;p&gt;All the above features can be enabled/disabled from backend from "System -&gt; Configuration -&gt; Catalin SEO -&gt; Catalog Layered Navigation"&lt;/p&gt;</description>
21
- <notes>- Added support for Magento Configurable Swatches.&#xD;
22
- - added possibility to add "nofollow" on layered navigation pages.&#xD;
23
- - Fixed issue with multiple categories having the same url key.&#xD;
24
- - Fixed issue with multiple attributes having the same label. This led to having attributes with the same url_key.&#xD;
25
- - Use the store label instead of the admin label of the attribute option to generate the url_value.</notes>
26
  <authors><author><name>Catalin Ciobanu</name><user>catalin_ciobanu</user><email>caciobanu@gmail.com</email></author></authors>
27
- <date>2016-04-14</date>
28
- <time>18:48:15</time>
29
- <contents><target name="magecommunity"><dir name="Catalin"><dir name="SEO"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="4c2ce764b158d9da57bee09ce884ef28"/><file name="Price.php" hash="17d3b442d428ab1cc06451fae7349085"/></dir><file name="State.php" hash="85509c1200f936042bccd9784fddb610"/></dir><dir name="Product"><dir name="List"><file name="Pager.php" hash="39c10d3a573b1d905fc3e63feb0d5176"/><file name="Toolbar.php" hash="0a1ed1e69818834cf3211a46ed668505"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="f8f1de9a6a90a31f86657499fb1c5b0f"/></dir></dir></dir><dir name="ConfigurableSwatches"><dir name="Catalog"><dir name="Layer"><dir name="State"><file name="Swatch.php" hash="ca03c9a37eef2a41e28f4c93935cf3c4"/></dir></dir></dir></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2626608bb00b3c1de769cff2c68a912"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3b3874577300d5b88689eedb01346712"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Router.php" hash="c8e2a69962c3220dfe5f46916922668b"/></dir><dir name="Helper"><dir name="ConfigurableSwatches"><file name="Productlist.php" hash="1b4c40c87d701192d2571a42ef4ad98c"/></dir><file name="Data.php" hash="9e77554e5277bad4f493d6331730d3c5"/><dir name="data"><file name="x00.php" hash="450182e4917ae346e6e64c17ffb63e97"/><file name="x01.php" hash="8e4880febe04e8bbc68c6ee6bc14f112"/><file name="x02.php" hash="919566cf560d5865a4f347cb0cf5ce30"/><file name="x03.php" hash="14dcbdbcde12f478d8657da808fe643d"/><file name="x04.php" hash="b4ca085c2a79244199f079d01c7e2c6b"/><file name="x05.php" hash="3797d79ee103c227f650d39da9bf0fb6"/><file name="x06.php" hash="e4faf649ef87968f2b58f9644687de2c"/><file name="x07.php" hash="5dc7d9d484aa28d77edd934c47cbb38c"/><file name="x09.php" hash="63337e20c61da6c5b5842c39bbfcd033"/><file name="x0a.php" hash="df2383cac3d3164a054d123e428a6ef0"/><file name="x0b.php" hash="55bf005378faa332a988145edfe65bfe"/><file name="x0c.php" hash="d3b45c5fd9d6794907523233e7b5ef73"/><file name="x0d.php" hash="0efd5f8911480341c1c5d9dd2cd96eab"/><file name="x0e.php" hash="00bafa974dd7e72e3cdfa84460146743"/><file name="x0f.php" hash="c5ab298134b47c79f2317ce291f29091"/><file name="x10.php" hash="db5df20e88ef152852d51108a28faf68"/><file name="x11.php" hash="6dbce9e90d9d1c2bffd476fffd9c81ad"/><file name="x12.php" hash="1911521e2aa3cc389e74b33282c80b5a"/><file name="x13.php" hash="ac373e87af343f2f39586f6e01f3bc7a"/><file name="x14.php" hash="618d7ca14ced92c68225108c1fdf3d1f"/><file name="x15.php" hash="6019f2cf672cfcf4486742d640ca0a49"/><file name="x16.php" hash="363b81373dd510f53444d2fca01500d0"/><file name="x17.php" hash="0075d26788b3147ee1b93f1fbe4abcb5"/><file name="x18.php" hash="382dcd23cdbb6a2c1585f91d528aae5c"/><file name="x1e.php" hash="e0d2195ccdb96cf4ea345715de4a2fe0"/><file name="x1f.php" hash="13fffadc97ef3445cbd4969d347b8d32"/><file name="x20.php" hash="ad43141b04fb6d7bab183e13354acb13"/><file name="x21.php" hash="eb84515b6f6be292bf81c576e6ed0b0f"/><file name="x22.php" hash="51ade912682064603ca54b20ecaa9334"/><file name="x23.php" hash="2b153cbc0e81d3151c1ec44e6accd682"/><file name="x24.php" hash="98d4b201e8c670219cc7569e28653d1c"/><file name="x25.php" hash="ee79b56b8b4c5a79af30c30e74b2de22"/><file name="x26.php" hash="88c02bafbf73d21d21c59768419b0c2a"/><file name="x27.php" hash="72bb13e4b32fbf9a174b5d35e6264159"/><file name="x28.php" hash="dcbe588e9d301c627f1dc5ebea623f35"/><file name="x2e.php" hash="a506c372cb82f9e84a514075b788914b"/><file name="x2f.php" hash="577fb5f9d9968471a95906c840c4ec97"/><file name="x30.php" hash="be9214f6b21c651fdd8a7f0ff624826e"/><file name="x31.php" hash="09cb141e4e5b15715b4eb092ff62f6ce"/><file name="x32.php" hash="5781ef2460e4fc93260899c37f3ca6af"/><file name="x33.php" hash="582fcde78a8bb85f11a4c6098b523234"/><file name="x4d.php" hash="8842aa5496002094ae68b2ddc10b3dcc"/><file name="x4e.php" hash="b0d1ed31e7268c2fe7fda95e1eba8bed"/><file name="x4f.php" hash="841625fff58304e2171fef729e6ed695"/><file name="x50.php" hash="dbcc2470e51be09e4d36b8c3ab07767d"/><file name="x51.php" hash="fd96d946cd328ac8e2041b99d64cf37d"/><file name="x52.php" hash="5e3a9fa55c4c8de7d3438b11d930c3ca"/><file name="x53.php" hash="29603023fa46a48c75a5cd5149823894"/><file name="x54.php" hash="3b8da5215b64deecc23f6b51f1c0510d"/><file name="x55.php" hash="06814d53163929c319af8c2a49edcd9b"/><file name="x56.php" hash="2b2ebbadb098a2353ddd659fb8ccb7cd"/><file name="x57.php" hash="725cd6c2ce9ecc6ceaf9aee144741984"/><file name="x58.php" hash="ac31204c457ab7a814ff53939d68447c"/><file name="x59.php" hash="48c0049cb0eb14d13f98cf6c12103db0"/><file name="x5a.php" hash="2ae0dbe06a3d97ae9bcd25fb94fd31c3"/><file name="x5b.php" hash="14f157d36788f292258ed9a83de5da73"/><file name="x5c.php" hash="50bcac83e76c63281f8985320e6e830a"/><file name="x5d.php" hash="862216f95a3590d28cebf287a25c5746"/><file name="x5e.php" hash="fbffe7592bfbe00e9999dde4c83d601d"/><file name="x5f.php" hash="9a87b39043670fdd7cfe07fd49279e22"/><file name="x60.php" hash="e160340e86644fd83c1800026dea241f"/><file name="x61.php" hash="eb3b4d5a8108ba0d1b4f9bd67fadd817"/><file name="x62.php" hash="3e558391bc4ed3768e13e0cace21bcc5"/><file name="x63.php" hash="ade79f321bb4449620e86a77b556a4c4"/><file name="x64.php" hash="664368342658a4aed7853d9a2d65d750"/><file name="x65.php" hash="a1bbc07e58b13d99ed4302ec4e67f4b2"/><file name="x66.php" hash="2f17f60177981e12be650c13f04a49e0"/><file name="x67.php" hash="3a4b21418a78042243721c98f28968d8"/><file name="x68.php" hash="1b8b4ce217986cc3f7550f16e8db1780"/><file name="x69.php" hash="6def6c5b5e469c806a6b38827d0c34f5"/><file name="x6a.php" hash="9fae911d681a0c625fc6e5151ae44d28"/><file name="x6b.php" hash="245472ec4357e0b25da3d16140bcf6d1"/><file name="x6c.php" hash="28fc6a8e4660a0b50566e850e2afc6a3"/><file name="x6d.php" hash="18f83b6b5a6f55520f975057fef4fa3a"/><file name="x6e.php" hash="df5ab12708cd053e6ec8b2228380adbb"/><file name="x6f.php" hash="866c65a813461f43324a24cb463cf4bb"/><file name="x70.php" hash="daf8e99c570287fa4bdac6c353884937"/><file name="x71.php" hash="6b136f7c2a07422d1c0120ff39677b8f"/><file name="x72.php" hash="3312f70e586836e16b3802d24f828888"/><file name="x73.php" hash="010e32351d3ee643e8b4464d391eb51f"/><file name="x74.php" hash="d9c0fb5bb46813b9fd7078d2054ca0b1"/><file name="x75.php" hash="34ee63177ea043bea198fe191327d6e0"/><file name="x76.php" hash="8e1cd7e7db6f45f2e1288ebb90eb31e6"/><file name="x77.php" hash="9e295e80d931332ace899152972f34a0"/><file name="x78.php" hash="ef15567cc00457ca734d18a021b5e52d"/><file name="x79.php" hash="41467fa793d377d10980ab2256993a29"/><file name="x7a.php" hash="bc618f669de10280de11c8678f4d651f"/><file name="x7b.php" hash="d065d37d486d53273b18b0b9f9dd86b2"/><file name="x7c.php" hash="5921121839baed16b78cc36145b52a62"/><file name="x7d.php" hash="f0077edfa1f9859d0f14d3bab15bef0c"/><file name="x7e.php" hash="63d1daf0b583b4c4a66c011894a8cc98"/><file name="x7f.php" hash="c688c38a38e171755e43e905a69e339a"/><file name="x80.php" hash="9070a439e5c0b2ea086f11863746cafb"/><file name="x81.php" hash="06f4d64caf41f3d985caea14ab3a31b0"/><file name="x82.php" hash="6cb491f40badaeaa3f9f292f5bfca217"/><file name="x83.php" hash="d9d39c5e7130705f69b46647f5af8250"/><file name="x84.php" hash="38c71fc265e5b1d431cf2b58e163eaa2"/><file name="x85.php" hash="b112d31fa357b3d3b67842a77cb5310a"/><file name="x86.php" hash="d7fa4167950da670cadd2d451f1a2edb"/><file name="x87.php" hash="80a3ab6690073fe3775ec81f2ee35013"/><file name="x88.php" hash="e05489231b1d4915c42997dec89b15cb"/><file name="x89.php" hash="19d3087264c2dbed0ffa4cd47c6f2853"/><file name="x8a.php" hash="093885354302b9898b8851e09444fd96"/><file name="x8b.php" hash="05588068116c641f70c7e459632f5394"/><file name="x8c.php" hash="b098af3f0e138b56ab8411b2cde600b9"/><file name="x8d.php" hash="a9cb4c30252f615dc452041ccf651467"/><file name="x8e.php" hash="53a2cd6937d88c19f8e1ae228a65c830"/><file name="x8f.php" hash="4e0c37fe92418505c7c4612eb8251e3a"/><file name="x90.php" hash="1112c376c17c3aba6f958dbff6d15362"/><file name="x91.php" hash="f9eeb625c3c66af15a8d82f1db0cdc15"/><file name="x92.php" hash="3be097a2d595bf46323de0661161846c"/><file name="x93.php" hash="beac90d08e9c9753c90afd26db2ad1d0"/><file name="x94.php" hash="45555c59ed7e9e9a0abc470d272835ad"/><file name="x95.php" hash="8ee187be6fbeb7fe3297baa9c89ea6dd"/><file name="x96.php" hash="57b310726908124b27f6ac0d7a5aa95b"/><file name="x97.php" hash="fcfa660695fc43f0ef974416d6417ec2"/><file name="x98.php" hash="88b0e6407503716e4e8d221f77e63f00"/><file name="x99.php" hash="a0924c478967313bd96ca5bc62b955a0"/><file name="x9a.php" hash="d8e1f4684908ffea274e7d62f9b7f210"/><file name="x9b.php" hash="ff855336ea0962b81d9410eea22a8eca"/><file name="x9c.php" hash="9866a2f684ac602cac02ba02f66bdacf"/><file name="x9d.php" hash="64b8d5235c86678f88b3adc1fff2b944"/><file name="x9e.php" hash="c9fad776841bc34fc5fd7700797b65f4"/><file name="x9f.php" hash="f1c6d6cbb8ac5fb5c76e7489bef8774d"/><file name="xa0.php" hash="f27b2025d8a2dc84d5821ee0de443243"/><file name="xa1.php" hash="9079b3e07655b0536153c70d09f2dd41"/><file name="xa2.php" hash="43abb79aa36b6575be2072aca536e770"/><file name="xa3.php" hash="ac0f7f693a8b9b15c14c7e93d16e44d4"/><file name="xa4.php" hash="673c5ca4d9faa59ae7c1fbde0618714d"/><file name="xac.php" hash="113f809d9d7c474d80588d240639dc2f"/><file name="xad.php" hash="16010ec214c0bd856ff4880aba557b18"/><file name="xae.php" hash="c01cb4a18ef68ae1e793e947857e6a72"/><file name="xaf.php" hash="98f242cb0bc7429a5a450e9c82d462db"/><file name="xb0.php" hash="7f37bfe7e9782a8702a8bac106a45627"/><file name="xb1.php" hash="f7105123854bb619b232c2fd9502715a"/><file name="xb2.php" hash="824a10352cf082b71df114bc9362eb3c"/><file name="xb3.php" hash="fabb7f1a18d2632127f405ed5b419f61"/><file name="xb4.php" hash="eff9e802c59769e6f6255ebe3e4c5cb6"/><file name="xb5.php" hash="cbf6d291c99528a3564c1d3ff3a777b3"/><file name="xb6.php" hash="b0d1ab9d95e1e6e82c69a399311df856"/><file name="xb7.php" hash="a685d5656e8f31212e01f64afc6298fc"/><file name="xb8.php" hash="fd7a9295e32870eec0889695a6be3f6c"/><file name="xb9.php" hash="abb9c74fe83846f07826bf6044640e23"/><file name="xba.php" hash="36d7426647eedf90b52cf38f54c1cb0e"/><file name="xbb.php" hash="d547091bb8a6390ef90957c7687b0ab4"/><file name="xbc.php" hash="078a5499d2429ae0460d0277bbdb525d"/><file name="xbd.php" hash="bd9b10559360179d75cd84a389c75f15"/><file name="xbe.php" hash="624c0d43f2f9cf75a1e7da423ef46b07"/><file name="xbf.php" hash="51213b7f0991eb46aee2a1ce730b76e7"/><file name="xc0.php" hash="1a8012c0f8d16de7a93deb57d9907fc0"/><file name="xc1.php" hash="17faeb0f134d296e73b87d31820c7b45"/><file name="xc2.php" hash="95182ef9085fceca36ca1fcd60b6532f"/><file name="xc3.php" hash="a472ff382a6d1b5b43535f0ea339a06d"/><file name="xc4.php" hash="9afbcb6b0f0664ff70f896472dd699cf"/><file name="xc5.php" hash="141d244dc5372cd0abb688106041166e"/><file name="xc6.php" hash="a938470c97c22df1333b1f4de59d10fc"/><file name="xc7.php" hash="6e9e2dbc3b5f8d102ea63fc5599900d2"/><file name="xc8.php" hash="e6a8179a9e4b497e8d04e8ca6240a5d8"/><file name="xc9.php" hash="bf4e9f9324133fa15dd925b4558f258e"/><file name="xca.php" hash="897dd8dd4c588ca9cd34f5b61b1323a9"/><file name="xcb.php" hash="0df0f5b354a5c251e985dad8b7eafdd3"/><file name="xcc.php" hash="910fed76843cbed1b83bdc42b0217768"/><file name="xcd.php" hash="517dd294b9680ef27979cf492274d91b"/><file name="xce.php" hash="e5039314ab0cc94966820e1a7f986e40"/><file name="xcf.php" hash="b346e1ec9989d5c9995330982bbf1247"/><file name="xd0.php" hash="03586ec3fe0a918af9a5b2e0deec7177"/><file name="xd1.php" hash="a817a0340fbc8600e578218ffedd8f6d"/><file name="xd2.php" hash="41024477c699d431f68d8f56c3f6e85b"/><file name="xd3.php" hash="58fb27e572fa053f32920df9e7cd5a34"/><file name="xd4.php" hash="cd0e76107f22781373ed430500c38fc8"/><file name="xd5.php" hash="5d2258b3806920efde76e95838d5f4c3"/><file name="xd6.php" hash="673fe086f96039b1eb010fcb22ef5028"/><file name="xd7.php" hash="e23e0c525b319c846f92fc43bbb482ba"/><file name="xf9.php" hash="5ce24abde1c4f80a24f9af851fd5ae52"/><file name="xfa.php" hash="0beca78d4119f03af6f6af953239ed40"/><file name="xfb.php" hash="add34b1f16d2a6d2beb6eb9d42a89e32"/><file name="xfc.php" hash="04c1d8d478177fa22b4ccfd75a6f7083"/><file name="xfd.php" hash="6e99507389f70dc22fc5b88086edcaa5"/><file name="xfe.php" hash="6172c6780c7a848d8529e65fb08ccfa6"/><file name="xff.php" hash="6731af770a26cad1dcb3c370aa50aea8"/></dir></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="44a44ede29dd12f68210c9aa39172a60"/><file name="Category.php" hash="fd05470a5f02ed91423e6fc6cbe74268"/><file name="Item.php" hash="fa1a01ea22b04b07994552f77165ed71"/><file name="Price.php" hash="e0baffe4f0771904435bbcdb7d26d334"/></dir></dir><file name="Layer.php" hash="fe8cceb7cddd3614232a33741244f0dd"/><dir name="Resource"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="ec5b16e7ac8f3114e5597a840a82557e"/><file name="Price.php" hash="cf7596cfdc1c07d617471c53a38b7bc7"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="b9c50e30741608e5ea40595e13f38f50"/></dir></dir><file name="Layer.php" hash="3b694b045f339ac1646935902dab41ca"/></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="af25932ecdbabc53ab09d0cc3f5dabc7"/><file name="Category.php" hash="51e3df2a35b6ac6d890c5078ffd5d0ee"/></dir></dir></dir></dir><dir name="Indexer"><file name="Attribute.php" hash="2f83425173480b1c6ec3b7a11bb0776c"/></dir><dir name="Resource"><dir name="Attribute"><file name="Urlkey.php" hash="6d71d3b665104255cca241c231f37dc9"/></dir><dir name="Indexer"><file name="Attribute.php" hash="d16d6548876c91398c2b860e8e87a35c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Seo"><file name="Catalog.php" hash="0440edbcf687f5655f5014c0324ef947"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="CategoryController.php" hash="7d3d5b463d7123d3c0c368c4e08bab19"/><file name="ResultController.php" hash="f6b8f3403117641da37dbe1dd5771fb0"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1719b869d3153268f6d020da7fd25544"/><file name="config.xml" hash="bb98330af5f606223c80b28972aafa96"/><file name="system.xml" hash="c801a1108dfc1de78f55a2e586f8afee"/></dir><dir name="sql"><dir name="catalin_seo_setup"><file name="install-2.0.0.php" hash="999b376f81cf088a6004d1d0ff6c69fb"/><file name="upgrade-2.0.0-3.0.0.php" hash="c40909daa09e186e6bd4893b59d28ef1"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="catalin_seo.xml" hash="60c6a543b4c4c1e256154cf8f51b027a"/></dir><dir name="template"><dir name="catalin_seo"><dir><dir name="catalog"><dir name="layer"><dir name="filter"><file name="swatches.phtml" hash="0636741f47a3e0b09943f05b1dd02014"/></dir><file name="filter.phtml" hash="bfe0fce228c84d439e2c76632d125dab"/><file name="price.phtml" hash="9c14c521b8cfef1c9b3e0ecc88ac0d95"/><file name="view.phtml" hash="561a2287bdbea3653c6a003706819b07"/></dir><dir name="product"><file name="list.phtml" hash="82a01442249b0a06f460fcb8cbecfbcb"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="catalin_seo"><file name="style.css" hash="fca26e893de5054621ad8f8722371fc7"/></dir></dir><dir name="images"><dir name="catalin_seo"><file name="bkg_slider.png" hash="898eb55265200836a479588ed54e1309"/><file name="slider.png" hash="b95e0855075c3a854a220dc886445ea0"/></dir></dir><dir name="js"><dir name="catalin_seo"><file name="handler-ee-rwd.js" hash="36355a43f5ba94b67895f72fa1b0c852"/><file name="handler.js" hash="9e1b5d1def9f6ea60adee2840a53abf3"/><file name="native.history.js" hash="5d8d6becc18cc0c370aa1a562e532ade"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Catalin_SEO.xml" hash="d8056befe6d816e8a3f9db445f22670a"/></dir></target></contents>
30
  <compatible/>
31
  <dependencies><required><php><min>5.3.0</min><max>7.0.0</max></php></required></dependencies>
32
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Catalin_Seo</name>
4
+ <version>3.2.0</version>
5
  <stability>stable</stability>
6
+ <license uri="http://www.opensource.org/licenses/mit-license.php">MIT</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Layered Navigation SEO: ajax, seo urls, price slider, multiple filters for the same attribute.</summary>
16
  &lt;li&gt;multiple filters for the same attribute&lt;/li&gt;&#xD;
17
  &lt;li&gt;supports Magento Configurable Swatches&lt;/li&gt;&#xD;
18
  &lt;li&gt;possibility to add "nofollow" on layered navigation pages&lt;/li&gt;&#xD;
19
+ &lt;li&gt;show more &amp; search for filters&lt;/li&gt;&#xD;
20
+ &lt;li&gt;go to category instead of filtering&lt;/li&gt;&#xD;
21
  &lt;/ul&gt;&#xD;
22
  &lt;p&gt;All the above features can be enabled/disabled from backend from "System -&gt; Configuration -&gt; Catalin SEO -&gt; Catalog Layered Navigation"&lt;/p&gt;</description>
23
+ <notes>- Added show more &amp; search for filters&lt;/li&gt;&#xD;
24
+ - Added go to category instead of filtering&#xD;
25
+ - Fixed double escaping of urls&#xD;
26
+ - Fixed max price filter&#xD;
27
+ - Fixed displayed price filter</notes>
28
  <authors><author><name>Catalin Ciobanu</name><user>catalin_ciobanu</user><email>caciobanu@gmail.com</email></author></authors>
29
+ <date>2016-10-11</date>
30
+ <time>17:03:48</time>
31
+ <contents><target name="magecommunity"><dir name="Catalin"><dir name="SEO"><dir name="Block"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="4c2ce764b158d9da57bee09ce884ef28"/><file name="Category.php" hash="f65c53d439f7a387ed21069a60800e07"/><file name="Price.php" hash="17d3b442d428ab1cc06451fae7349085"/></dir><file name="State.php" hash="85509c1200f936042bccd9784fddb610"/></dir><dir name="Product"><dir name="List"><file name="Pager.php" hash="39c10d3a573b1d905fc3e63feb0d5176"/><file name="Toolbar.php" hash="0a1ed1e69818834cf3211a46ed668505"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="f8f1de9a6a90a31f86657499fb1c5b0f"/></dir></dir></dir><dir name="ConfigurableSwatches"><dir name="Catalog"><dir name="Layer"><dir name="State"><file name="Swatch.php" hash="ca03c9a37eef2a41e28f4c93935cf3c4"/></dir></dir></dir></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e2626608bb00b3c1de769cff2c68a912"/></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="3b3874577300d5b88689eedb01346712"/></dir></dir></dir></dir></dir><dir name="Controller"><file name="Router.php" hash="c8e2a69962c3220dfe5f46916922668b"/></dir><dir name="Helper"><dir name="ConfigurableSwatches"><file name="Productlist.php" hash="1b4c40c87d701192d2571a42ef4ad98c"/></dir><file name="Data.php" hash="cd2c5ae7097907d2f2fed4ecea9c214a"/><dir name="data"><file name="x00.php" hash="450182e4917ae346e6e64c17ffb63e97"/><file name="x01.php" hash="8e4880febe04e8bbc68c6ee6bc14f112"/><file name="x02.php" hash="919566cf560d5865a4f347cb0cf5ce30"/><file name="x03.php" hash="14dcbdbcde12f478d8657da808fe643d"/><file name="x04.php" hash="b4ca085c2a79244199f079d01c7e2c6b"/><file name="x05.php" hash="3797d79ee103c227f650d39da9bf0fb6"/><file name="x06.php" hash="e4faf649ef87968f2b58f9644687de2c"/><file name="x07.php" hash="5dc7d9d484aa28d77edd934c47cbb38c"/><file name="x09.php" hash="63337e20c61da6c5b5842c39bbfcd033"/><file name="x0a.php" hash="df2383cac3d3164a054d123e428a6ef0"/><file name="x0b.php" hash="55bf005378faa332a988145edfe65bfe"/><file name="x0c.php" hash="d3b45c5fd9d6794907523233e7b5ef73"/><file name="x0d.php" hash="0efd5f8911480341c1c5d9dd2cd96eab"/><file name="x0e.php" hash="00bafa974dd7e72e3cdfa84460146743"/><file name="x0f.php" hash="c5ab298134b47c79f2317ce291f29091"/><file name="x10.php" hash="db5df20e88ef152852d51108a28faf68"/><file name="x11.php" hash="6dbce9e90d9d1c2bffd476fffd9c81ad"/><file name="x12.php" hash="1911521e2aa3cc389e74b33282c80b5a"/><file name="x13.php" hash="ac373e87af343f2f39586f6e01f3bc7a"/><file name="x14.php" hash="618d7ca14ced92c68225108c1fdf3d1f"/><file name="x15.php" hash="6019f2cf672cfcf4486742d640ca0a49"/><file name="x16.php" hash="363b81373dd510f53444d2fca01500d0"/><file name="x17.php" hash="0075d26788b3147ee1b93f1fbe4abcb5"/><file name="x18.php" hash="382dcd23cdbb6a2c1585f91d528aae5c"/><file name="x1e.php" hash="e0d2195ccdb96cf4ea345715de4a2fe0"/><file name="x1f.php" hash="13fffadc97ef3445cbd4969d347b8d32"/><file name="x20.php" hash="ad43141b04fb6d7bab183e13354acb13"/><file name="x21.php" hash="eb84515b6f6be292bf81c576e6ed0b0f"/><file name="x22.php" hash="51ade912682064603ca54b20ecaa9334"/><file name="x23.php" hash="2b153cbc0e81d3151c1ec44e6accd682"/><file name="x24.php" hash="98d4b201e8c670219cc7569e28653d1c"/><file name="x25.php" hash="ee79b56b8b4c5a79af30c30e74b2de22"/><file name="x26.php" hash="88c02bafbf73d21d21c59768419b0c2a"/><file name="x27.php" hash="72bb13e4b32fbf9a174b5d35e6264159"/><file name="x28.php" hash="dcbe588e9d301c627f1dc5ebea623f35"/><file name="x2e.php" hash="a506c372cb82f9e84a514075b788914b"/><file name="x2f.php" hash="577fb5f9d9968471a95906c840c4ec97"/><file name="x30.php" hash="be9214f6b21c651fdd8a7f0ff624826e"/><file name="x31.php" hash="09cb141e4e5b15715b4eb092ff62f6ce"/><file name="x32.php" hash="5781ef2460e4fc93260899c37f3ca6af"/><file name="x33.php" hash="582fcde78a8bb85f11a4c6098b523234"/><file name="x4d.php" hash="8842aa5496002094ae68b2ddc10b3dcc"/><file name="x4e.php" hash="b0d1ed31e7268c2fe7fda95e1eba8bed"/><file name="x4f.php" hash="841625fff58304e2171fef729e6ed695"/><file name="x50.php" hash="dbcc2470e51be09e4d36b8c3ab07767d"/><file name="x51.php" hash="fd96d946cd328ac8e2041b99d64cf37d"/><file name="x52.php" hash="5e3a9fa55c4c8de7d3438b11d930c3ca"/><file name="x53.php" hash="29603023fa46a48c75a5cd5149823894"/><file name="x54.php" hash="3b8da5215b64deecc23f6b51f1c0510d"/><file name="x55.php" hash="06814d53163929c319af8c2a49edcd9b"/><file name="x56.php" hash="2b2ebbadb098a2353ddd659fb8ccb7cd"/><file name="x57.php" hash="725cd6c2ce9ecc6ceaf9aee144741984"/><file name="x58.php" hash="ac31204c457ab7a814ff53939d68447c"/><file name="x59.php" hash="48c0049cb0eb14d13f98cf6c12103db0"/><file name="x5a.php" hash="2ae0dbe06a3d97ae9bcd25fb94fd31c3"/><file name="x5b.php" hash="14f157d36788f292258ed9a83de5da73"/><file name="x5c.php" hash="50bcac83e76c63281f8985320e6e830a"/><file name="x5d.php" hash="862216f95a3590d28cebf287a25c5746"/><file name="x5e.php" hash="fbffe7592bfbe00e9999dde4c83d601d"/><file name="x5f.php" hash="9a87b39043670fdd7cfe07fd49279e22"/><file name="x60.php" hash="e160340e86644fd83c1800026dea241f"/><file name="x61.php" hash="eb3b4d5a8108ba0d1b4f9bd67fadd817"/><file name="x62.php" hash="3e558391bc4ed3768e13e0cace21bcc5"/><file name="x63.php" hash="ade79f321bb4449620e86a77b556a4c4"/><file name="x64.php" hash="664368342658a4aed7853d9a2d65d750"/><file name="x65.php" hash="a1bbc07e58b13d99ed4302ec4e67f4b2"/><file name="x66.php" hash="2f17f60177981e12be650c13f04a49e0"/><file name="x67.php" hash="3a4b21418a78042243721c98f28968d8"/><file name="x68.php" hash="1b8b4ce217986cc3f7550f16e8db1780"/><file name="x69.php" hash="6def6c5b5e469c806a6b38827d0c34f5"/><file name="x6a.php" hash="9fae911d681a0c625fc6e5151ae44d28"/><file name="x6b.php" hash="245472ec4357e0b25da3d16140bcf6d1"/><file name="x6c.php" hash="28fc6a8e4660a0b50566e850e2afc6a3"/><file name="x6d.php" hash="18f83b6b5a6f55520f975057fef4fa3a"/><file name="x6e.php" hash="df5ab12708cd053e6ec8b2228380adbb"/><file name="x6f.php" hash="866c65a813461f43324a24cb463cf4bb"/><file name="x70.php" hash="daf8e99c570287fa4bdac6c353884937"/><file name="x71.php" hash="6b136f7c2a07422d1c0120ff39677b8f"/><file name="x72.php" hash="3312f70e586836e16b3802d24f828888"/><file name="x73.php" hash="010e32351d3ee643e8b4464d391eb51f"/><file name="x74.php" hash="d9c0fb5bb46813b9fd7078d2054ca0b1"/><file name="x75.php" hash="34ee63177ea043bea198fe191327d6e0"/><file name="x76.php" hash="8e1cd7e7db6f45f2e1288ebb90eb31e6"/><file name="x77.php" hash="9e295e80d931332ace899152972f34a0"/><file name="x78.php" hash="ef15567cc00457ca734d18a021b5e52d"/><file name="x79.php" hash="41467fa793d377d10980ab2256993a29"/><file name="x7a.php" hash="bc618f669de10280de11c8678f4d651f"/><file name="x7b.php" hash="d065d37d486d53273b18b0b9f9dd86b2"/><file name="x7c.php" hash="5921121839baed16b78cc36145b52a62"/><file name="x7d.php" hash="f0077edfa1f9859d0f14d3bab15bef0c"/><file name="x7e.php" hash="63d1daf0b583b4c4a66c011894a8cc98"/><file name="x7f.php" hash="c688c38a38e171755e43e905a69e339a"/><file name="x80.php" hash="9070a439e5c0b2ea086f11863746cafb"/><file name="x81.php" hash="06f4d64caf41f3d985caea14ab3a31b0"/><file name="x82.php" hash="6cb491f40badaeaa3f9f292f5bfca217"/><file name="x83.php" hash="d9d39c5e7130705f69b46647f5af8250"/><file name="x84.php" hash="38c71fc265e5b1d431cf2b58e163eaa2"/><file name="x85.php" hash="b112d31fa357b3d3b67842a77cb5310a"/><file name="x86.php" hash="d7fa4167950da670cadd2d451f1a2edb"/><file name="x87.php" hash="80a3ab6690073fe3775ec81f2ee35013"/><file name="x88.php" hash="e05489231b1d4915c42997dec89b15cb"/><file name="x89.php" hash="19d3087264c2dbed0ffa4cd47c6f2853"/><file name="x8a.php" hash="093885354302b9898b8851e09444fd96"/><file name="x8b.php" hash="05588068116c641f70c7e459632f5394"/><file name="x8c.php" hash="b098af3f0e138b56ab8411b2cde600b9"/><file name="x8d.php" hash="a9cb4c30252f615dc452041ccf651467"/><file name="x8e.php" hash="53a2cd6937d88c19f8e1ae228a65c830"/><file name="x8f.php" hash="4e0c37fe92418505c7c4612eb8251e3a"/><file name="x90.php" hash="1112c376c17c3aba6f958dbff6d15362"/><file name="x91.php" hash="f9eeb625c3c66af15a8d82f1db0cdc15"/><file name="x92.php" hash="3be097a2d595bf46323de0661161846c"/><file name="x93.php" hash="beac90d08e9c9753c90afd26db2ad1d0"/><file name="x94.php" hash="45555c59ed7e9e9a0abc470d272835ad"/><file name="x95.php" hash="8ee187be6fbeb7fe3297baa9c89ea6dd"/><file name="x96.php" hash="57b310726908124b27f6ac0d7a5aa95b"/><file name="x97.php" hash="fcfa660695fc43f0ef974416d6417ec2"/><file name="x98.php" hash="88b0e6407503716e4e8d221f77e63f00"/><file name="x99.php" hash="a0924c478967313bd96ca5bc62b955a0"/><file name="x9a.php" hash="d8e1f4684908ffea274e7d62f9b7f210"/><file name="x9b.php" hash="ff855336ea0962b81d9410eea22a8eca"/><file name="x9c.php" hash="9866a2f684ac602cac02ba02f66bdacf"/><file name="x9d.php" hash="64b8d5235c86678f88b3adc1fff2b944"/><file name="x9e.php" hash="c9fad776841bc34fc5fd7700797b65f4"/><file name="x9f.php" hash="f1c6d6cbb8ac5fb5c76e7489bef8774d"/><file name="xa0.php" hash="f27b2025d8a2dc84d5821ee0de443243"/><file name="xa1.php" hash="9079b3e07655b0536153c70d09f2dd41"/><file name="xa2.php" hash="43abb79aa36b6575be2072aca536e770"/><file name="xa3.php" hash="ac0f7f693a8b9b15c14c7e93d16e44d4"/><file name="xa4.php" hash="673c5ca4d9faa59ae7c1fbde0618714d"/><file name="xac.php" hash="113f809d9d7c474d80588d240639dc2f"/><file name="xad.php" hash="16010ec214c0bd856ff4880aba557b18"/><file name="xae.php" hash="c01cb4a18ef68ae1e793e947857e6a72"/><file name="xaf.php" hash="98f242cb0bc7429a5a450e9c82d462db"/><file name="xb0.php" hash="7f37bfe7e9782a8702a8bac106a45627"/><file name="xb1.php" hash="f7105123854bb619b232c2fd9502715a"/><file name="xb2.php" hash="824a10352cf082b71df114bc9362eb3c"/><file name="xb3.php" hash="fabb7f1a18d2632127f405ed5b419f61"/><file name="xb4.php" hash="eff9e802c59769e6f6255ebe3e4c5cb6"/><file name="xb5.php" hash="cbf6d291c99528a3564c1d3ff3a777b3"/><file name="xb6.php" hash="b0d1ab9d95e1e6e82c69a399311df856"/><file name="xb7.php" hash="a685d5656e8f31212e01f64afc6298fc"/><file name="xb8.php" hash="fd7a9295e32870eec0889695a6be3f6c"/><file name="xb9.php" hash="abb9c74fe83846f07826bf6044640e23"/><file name="xba.php" hash="36d7426647eedf90b52cf38f54c1cb0e"/><file name="xbb.php" hash="d547091bb8a6390ef90957c7687b0ab4"/><file name="xbc.php" hash="078a5499d2429ae0460d0277bbdb525d"/><file name="xbd.php" hash="bd9b10559360179d75cd84a389c75f15"/><file name="xbe.php" hash="624c0d43f2f9cf75a1e7da423ef46b07"/><file name="xbf.php" hash="51213b7f0991eb46aee2a1ce730b76e7"/><file name="xc0.php" hash="1a8012c0f8d16de7a93deb57d9907fc0"/><file name="xc1.php" hash="17faeb0f134d296e73b87d31820c7b45"/><file name="xc2.php" hash="95182ef9085fceca36ca1fcd60b6532f"/><file name="xc3.php" hash="a472ff382a6d1b5b43535f0ea339a06d"/><file name="xc4.php" hash="9afbcb6b0f0664ff70f896472dd699cf"/><file name="xc5.php" hash="141d244dc5372cd0abb688106041166e"/><file name="xc6.php" hash="a938470c97c22df1333b1f4de59d10fc"/><file name="xc7.php" hash="6e9e2dbc3b5f8d102ea63fc5599900d2"/><file name="xc8.php" hash="e6a8179a9e4b497e8d04e8ca6240a5d8"/><file name="xc9.php" hash="bf4e9f9324133fa15dd925b4558f258e"/><file name="xca.php" hash="897dd8dd4c588ca9cd34f5b61b1323a9"/><file name="xcb.php" hash="0df0f5b354a5c251e985dad8b7eafdd3"/><file name="xcc.php" hash="910fed76843cbed1b83bdc42b0217768"/><file name="xcd.php" hash="517dd294b9680ef27979cf492274d91b"/><file name="xce.php" hash="e5039314ab0cc94966820e1a7f986e40"/><file name="xcf.php" hash="b346e1ec9989d5c9995330982bbf1247"/><file name="xd0.php" hash="03586ec3fe0a918af9a5b2e0deec7177"/><file name="xd1.php" hash="a817a0340fbc8600e578218ffedd8f6d"/><file name="xd2.php" hash="41024477c699d431f68d8f56c3f6e85b"/><file name="xd3.php" hash="58fb27e572fa053f32920df9e7cd5a34"/><file name="xd4.php" hash="cd0e76107f22781373ed430500c38fc8"/><file name="xd5.php" hash="5d2258b3806920efde76e95838d5f4c3"/><file name="xd6.php" hash="673fe086f96039b1eb010fcb22ef5028"/><file name="xd7.php" hash="e23e0c525b319c846f92fc43bbb482ba"/><file name="xf9.php" hash="5ce24abde1c4f80a24f9af851fd5ae52"/><file name="xfa.php" hash="0beca78d4119f03af6f6af953239ed40"/><file name="xfb.php" hash="add34b1f16d2a6d2beb6eb9d42a89e32"/><file name="xfc.php" hash="04c1d8d478177fa22b4ccfd75a6f7083"/><file name="xfd.php" hash="6e99507389f70dc22fc5b88086edcaa5"/><file name="xfe.php" hash="6172c6780c7a848d8529e65fb08ccfa6"/><file name="xff.php" hash="6731af770a26cad1dcb3c370aa50aea8"/></dir></dir><dir name="Model"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="44a44ede29dd12f68210c9aa39172a60"/><file name="Category.php" hash="9633748abc5f9153a5697622fc59a3ee"/><file name="Item.php" hash="fa1a01ea22b04b07994552f77165ed71"/><file name="Price.php" hash="9ee809fd86b19e6b833a40176a888aa7"/></dir></dir><file name="Layer.php" hash="fe8cceb7cddd3614232a33741244f0dd"/><dir name="Resource"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="ec5b16e7ac8f3114e5597a840a82557e"/><file name="Price.php" hash="db13a76dbe216fb2df2e12ef09b836df"/></dir></dir></dir></dir><dir name="CatalogSearch"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="b9c50e30741608e5ea40595e13f38f50"/></dir></dir><file name="Layer.php" hash="3b694b045f339ac1646935902dab41ca"/></dir><dir name="Enterprise"><dir name="Catalog"><dir name="Layer"><dir name="Filter"><file name="Attribute.php" hash="e641c473a15cf651e304612afd3a40d2"/><file name="Category.php" hash="01823903fc22406610bd7a7c176bbf89"/></dir></dir></dir></dir><dir name="Indexer"><file name="Attribute.php" hash="2f83425173480b1c6ec3b7a11bb0776c"/></dir><dir name="Resource"><dir name="Attribute"><file name="Urlkey.php" hash="6d71d3b665104255cca241c231f37dc9"/></dir><dir name="Indexer"><file name="Attribute.php" hash="d16d6548876c91398c2b860e8e87a35c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Seo"><file name="Catalog.php" hash="0440edbcf687f5655f5014c0324ef947"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="CategoryController.php" hash="7d3d5b463d7123d3c0c368c4e08bab19"/><file name="ResultController.php" hash="f6b8f3403117641da37dbe1dd5771fb0"/></dir><dir name="etc"><file name="adminhtml.xml" hash="1719b869d3153268f6d020da7fd25544"/><file name="config.xml" hash="516890f684247e9ab607b4bded691033"/><file name="system.xml" hash="6fcd245de0baac7dc3b6a8669252d4e4"/></dir><dir name="sql"><dir name="catalin_seo_setup"><file name="install-2.0.0.php" hash="999b376f81cf088a6004d1d0ff6c69fb"/><file name="upgrade-2.0.0-3.0.0.php" hash="c40909daa09e186e6bd4893b59d28ef1"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="catalin_seo.xml" hash="60c6a543b4c4c1e256154cf8f51b027a"/></dir><dir name="template"><dir name="catalin_seo"><dir><dir name="catalog"><dir name="layer"><file name="category.phtml" hash="c13939781e34c1b1dfa8bf1ea6858e11"/><dir name="filter"><file name="swatches.phtml" hash="0636741f47a3e0b09943f05b1dd02014"/></dir><file name="filter.phtml" hash="84db44ce1fbc1085dd04e83fec2e6574"/><file name="price.phtml" hash="9c14c521b8cfef1c9b3e0ecc88ac0d95"/><file name="view.phtml" hash="ed534667bfed08b0dd5d62f4409bdadc"/></dir><dir name="product"><file name="list.phtml" hash="82a01442249b0a06f460fcb8cbecfbcb"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="catalin_seo"><file name="style.css" hash="31d3747d0e69fc67a54758e0cc4fcf12"/></dir></dir><dir name="images"><dir name="catalin_seo"><file name="bkg_slider.png" hash="898eb55265200836a479588ed54e1309"/><file name="slider.png" hash="b95e0855075c3a854a220dc886445ea0"/></dir></dir><dir name="js"><dir name="catalin_seo"><file name="handler-ee-rwd.js" hash="11e3b32ed62edb3af1af973125ca2d0e"/><file name="handler.js" hash="2861ee21abad40ffe184c906fd0cf0c8"/><file name="native.history.js" hash="5d8d6becc18cc0c370aa1a562e532ade"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Catalin_SEO.xml" hash="d8056befe6d816e8a3f9db445f22670a"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Catalin_SEO.csv" hash="169f6d8822b0c79f5cbc08bccb97d96f"/></dir><dir name="nl_NL"><file name="Catalin_SEO.csv" hash="6701ce3f9a7e5ffaa2fff7634376af29"/></dir></target><target name="mage"><dir name="."><file name="LICENSE.txt" hash="dc87fafdb09d4c9000774eb7afcee2bd"/><file name="README.md" hash="958948f251595ef20c2241dca4457fce"/></dir></target></contents>
32
  <compatible/>
33
  <dependencies><required><php><min>5.3.0</min><max>7.0.0</max></php></required></dependencies>
34
  </package>
skin/frontend/base/default/css/catalin_seo/style.css CHANGED
@@ -18,4 +18,45 @@ div.price-slider .price-slider-to {
18
  background: url("../../images/catalin_seo/slider.png") no-repeat scroll -26px 0 transparent;
19
  cursor: w-resize;
20
  margin-top: -17px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  }
18
  background: url("../../images/catalin_seo/slider.png") no-repeat scroll -26px 0 transparent;
19
  cursor: w-resize;
20
  margin-top: -17px;
21
+ }
22
+
23
+ .block-layered-nav .layered-nav-filter {
24
+ padding: 5px 15px;
25
+ color: #3399cc;
26
+ }
27
+
28
+ .block-layered-nav .layered-nav-filter .layered-nav-filter-label {
29
+ font-weight: normal;
30
+ font-family: "Helvetica Neue", Verdana, Arial, sans-serif;
31
+ font-size: 14px;
32
+ }
33
+
34
+ .block-layered-nav .layered-nav-filter .layered-nav-filter-label:hover {
35
+ text-decoration: underline;
36
+ cursor: pointer;
37
+ }
38
+
39
+ li.filter_hide {
40
+ display:none;
41
+ }
42
+
43
+ div.show_more_filters {
44
+ text-align: right;
45
+ }
46
+
47
+ div.show_more_filters a {
48
+ cursor: pointer;
49
+ }
50
+
51
+ .sidebar .block-layered-nav .attribute_value_search_box {
52
+ display:none;
53
+ }
54
+
55
+ .sidebar .block-layered-nav .attribute_value_search_box.enabled {
56
+ display:block;
57
+ }
58
+
59
+ .sidebar .block-layered-nav .attribute_value_search_box input {
60
+ width:90%;
61
+ padding:3px;
62
  }
skin/frontend/base/default/js/catalin_seo/handler-ee-rwd.js CHANGED
@@ -27,10 +27,15 @@ var CatalinSeoHandler = {
27
  url = el;
28
  } else if (el.tagName.toLowerCase() === 'a') {
29
  url = $(el).readAttribute('href');
30
- } else if (el.tagName.toLowerCase() === 'select') {
31
  url = $(el).getValue();
32
  }
33
 
 
 
 
 
 
34
  fullUrl = self.prepareAjaxUrl(url);
35
 
36
  $('loading').show();
@@ -38,12 +43,16 @@ var CatalinSeoHandler = {
38
 
39
  self.pushState(null, url, false);
40
 
 
 
 
 
41
  new Ajax.Request(fullUrl, {
42
  method: 'get',
43
  onSuccess: function (transport) {
44
  if (transport.responseJSON) {
45
  $('catalog-listing').update(transport.responseJSON.listing);
46
- $$('.block-layered-nav')[0].update(transport.responseJSON.layer);
47
  self.pushState({
48
  listing: transport.responseJSON.listing,
49
  layer: transport.responseJSON.layer
@@ -133,14 +142,16 @@ var CatalinSeoHandler = {
133
  $$('div.sorter a'),
134
  $$('div.pager select'),
135
  $$('div.sorter select'),
136
- $$('div.block-layered-nav a')
 
137
  );
138
  els.each(function (el) {
139
- if (el.tagName.toLowerCase() === 'a') {
 
140
  $(el).observe('click', function (event) {
141
  self.handleEvent(this, event);
142
  });
143
- } else if (el.tagName.toLowerCase() === 'select') {
144
  $(el).setAttribute('onchange', '');
145
  $(el).observe('change', function (event) {
146
  self.handleEvent(this, event);
@@ -178,13 +189,14 @@ var CatalinSeoHandler = {
178
  self.ajaxListener();
179
 
180
  (function (History) {
181
- if (!History.enabled) {
 
182
  return false;
183
  }
184
 
185
  self.pushState({
186
  listing: $('catalog-listing').innerHTML,
187
- layer: $$('.block-layered-nav')[0].innerHTML
188
  }, document.location.href, true);
189
 
190
  // Bind to StateChange Event
@@ -192,7 +204,7 @@ var CatalinSeoHandler = {
192
  if (event.type == 'popstate') {
193
  var State = History.getState();
194
  $('catalog-listing').update(State.data.listing);
195
- $$('.block-layered-nav')[0].update(State.data.layer);
196
  self.ajaxListener();
197
  self.toggleContent();
198
  self.alignProductGridActions();
@@ -206,6 +218,10 @@ var CatalinSeoHandler = {
206
  }
207
  });
208
  })(window.History);
 
 
 
 
209
  });
210
  },
211
  toggleContent: function() {
@@ -375,5 +391,35 @@ var CatalinSeoHandler = {
375
  this.toggleElements.toggleSingle({destruct: true});
376
  }
377
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
378
  }
379
  }
27
  url = el;
28
  } else if (el.tagName.toLowerCase() === 'a') {
29
  url = $(el).readAttribute('href');
30
+ } else if (el.tagName.toLowerCase() === 'select' || el.tagName.toLowerCase() === 'input') {
31
  url = $(el).getValue();
32
  }
33
 
34
+ if ($j(el).hasClass('no-ajax')) {
35
+ window.location.href = url;
36
+ return;
37
+ }
38
+
39
  fullUrl = self.prepareAjaxUrl(url);
40
 
41
  $('loading').show();
43
 
44
  self.pushState(null, url, false);
45
 
46
+ self.showMoreListener();
47
+
48
+ self.searchBoxListener();
49
+
50
  new Ajax.Request(fullUrl, {
51
  method: 'get',
52
  onSuccess: function (transport) {
53
  if (transport.responseJSON) {
54
  $('catalog-listing').update(transport.responseJSON.listing);
55
+ $$('.block-layered-nav')[0].replace(transport.responseJSON.layer);
56
  self.pushState({
57
  listing: transport.responseJSON.listing,
58
  layer: transport.responseJSON.layer
142
  $$('div.sorter a'),
143
  $$('div.pager select'),
144
  $$('div.sorter select'),
145
+ $$('div.block-layered-nav a'),
146
+ $$('div.block-layered-nav input[type="checkbox"]')
147
  );
148
  els.each(function (el) {
149
+ var tagName = el.tagName.toLowerCase();
150
+ if (tagName === 'a') {
151
  $(el).observe('click', function (event) {
152
  self.handleEvent(this, event);
153
  });
154
+ } else if (tagName === 'select' || tagName === 'input') {
155
  $(el).setAttribute('onchange', '');
156
  $(el).observe('change', function (event) {
157
  self.handleEvent(this, event);
189
  self.ajaxListener();
190
 
191
  (function (History) {
192
+ // Skip empty categories.
193
+ if (!History.enabled || !$('catalog-listing')) {
194
  return false;
195
  }
196
 
197
  self.pushState({
198
  listing: $('catalog-listing').innerHTML,
199
+ layer: $$('.block-layered-nav')[0].outerHTML
200
  }, document.location.href, true);
201
 
202
  // Bind to StateChange Event
204
  if (event.type == 'popstate') {
205
  var State = History.getState();
206
  $('catalog-listing').update(State.data.listing);
207
+ $$('.block-layered-nav')[0].replace(State.data.layer);
208
  self.ajaxListener();
209
  self.toggleContent();
210
  self.alignProductGridActions();
218
  }
219
  });
220
  })(window.History);
221
+
222
+ self.showMoreListener();
223
+
224
+ self.searchBoxListener();
225
  });
226
  },
227
  toggleContent: function() {
391
  this.toggleElements.toggleSingle({destruct: true});
392
  }
393
  });
394
+ },
395
+ showMoreListener: function() {
396
+ $j('div.show_more_filters').on('click', function (e) {
397
+ $j(e.target).parent().parent().parent().find('.filter_hide').toggle();
398
+ $j(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
399
+ if($j(e.target).text() == $j(e.target).data('text-more')) {
400
+ $j(e.target).text($j(e.target).data('text-less'));
401
+ } else {
402
+ $j(e.target).text($j(e.target).data('text-more'));
403
+ }
404
+ });
405
+ },
406
+ searchBoxListener: function() {
407
+ /* Make CSS contains psuedo selector case insensitive */
408
+ $j.expr[":"].contains = $j.expr.createPseudo(function(arg) {
409
+ return function( elem ) {
410
+ return $j(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
411
+ };
412
+ });
413
+
414
+ $j('.attribute_value_search_box input').on('keyup', function (e) {
415
+ if($j(e.target).val()) {
416
+ $j(e.target).parent().next('dd').find('li').hide();
417
+ $j(e.target).parent().next('dd').find('li:contains("' + $j(e.target).val() + '")').each(function (i, li) {
418
+ $j(li).show();
419
+ });
420
+ } else {
421
+ $j(e.target).parent().next('dd').find('li').show();
422
+ }
423
+ });
424
  }
425
  }
skin/frontend/base/default/js/catalin_seo/handler.js CHANGED
@@ -26,10 +26,15 @@ var CatalinSeoHandler = {
26
  url = el;
27
  } else if (el.tagName.toLowerCase() === 'a') {
28
  url = $(el).readAttribute('href');
29
- } else if (el.tagName.toLowerCase() === 'select') {
30
  url = $(el).getValue();
31
  }
32
 
 
 
 
 
 
33
  // Add this to query string for full page caching systems
34
  if (url.indexOf('?') != -1) {
35
  fullUrl = url + '&isLayerAjax=1';
@@ -42,6 +47,10 @@ var CatalinSeoHandler = {
42
 
43
  self.pushState(null, url, false);
44
 
 
 
 
 
45
  new Ajax.Request(fullUrl, {
46
  method: 'get',
47
  onSuccess: function (transport) {
@@ -96,14 +105,16 @@ var CatalinSeoHandler = {
96
  $$('div.sorter a'),
97
  $$('div.pager select'),
98
  $$('div.sorter select'),
99
- $$('div.block-layered-nav a')
 
100
  );
101
  els.each(function (el) {
102
- if (el.tagName.toLowerCase() === 'a') {
 
103
  $(el).observe('click', function (event) {
104
  self.handleEvent(this, event);
105
  });
106
- } else if (el.tagName.toLowerCase() === 'select') {
107
  $(el).setAttribute('onchange', '');
108
  $(el).observe('change', function (event) {
109
  self.handleEvent(this, event);
@@ -141,7 +152,8 @@ var CatalinSeoHandler = {
141
  self.ajaxListener();
142
 
143
  (function (History) {
144
- if (!History.enabled) {
 
145
  return false;
146
  }
147
 
@@ -169,6 +181,10 @@ var CatalinSeoHandler = {
169
  }
170
  });
171
  })(window.History);
 
 
 
 
172
  });
173
  },
174
  toggleContent: function() {
@@ -338,5 +354,35 @@ var CatalinSeoHandler = {
338
  this.toggleElements.toggleSingle({destruct: true});
339
  }
340
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  }
342
- }
26
  url = el;
27
  } else if (el.tagName.toLowerCase() === 'a') {
28
  url = $(el).readAttribute('href');
29
+ } else if (el.tagName.toLowerCase() === 'select' || el.tagName.toLowerCase() === 'input') {
30
  url = $(el).getValue();
31
  }
32
 
33
+ if ($j(el).hasClass('no-ajax')) {
34
+ window.location.href = url;
35
+ return;
36
+ }
37
+
38
  // Add this to query string for full page caching systems
39
  if (url.indexOf('?') != -1) {
40
  fullUrl = url + '&isLayerAjax=1';
47
 
48
  self.pushState(null, url, false);
49
 
50
+ self.showMoreListener();
51
+
52
+ self.searchBoxListener();
53
+
54
  new Ajax.Request(fullUrl, {
55
  method: 'get',
56
  onSuccess: function (transport) {
105
  $$('div.sorter a'),
106
  $$('div.pager select'),
107
  $$('div.sorter select'),
108
+ $$('div.block-layered-nav a'),
109
+ $$('div.block-layered-nav input[type="checkbox"]')
110
  );
111
  els.each(function (el) {
112
+ var tagName = el.tagName.toLowerCase();
113
+ if (tagName === 'a') {
114
  $(el).observe('click', function (event) {
115
  self.handleEvent(this, event);
116
  });
117
+ } else if (tagName === 'select' || tagName === 'input') {
118
  $(el).setAttribute('onchange', '');
119
  $(el).observe('change', function (event) {
120
  self.handleEvent(this, event);
152
  self.ajaxListener();
153
 
154
  (function (History) {
155
+ // Skip empty categories.
156
+ if (!History.enabled || !$('catalog-listing')) {
157
  return false;
158
  }
159
 
181
  }
182
  });
183
  })(window.History);
184
+
185
+ self.showMoreListener();
186
+
187
+ self.searchBoxListener();
188
  });
189
  },
190
  toggleContent: function() {
354
  this.toggleElements.toggleSingle({destruct: true});
355
  }
356
  });
357
+ },
358
+ showMoreListener: function() {
359
+ $j('div.show_more_filters a').on('click', function (e) {
360
+ $j(e.target).parent().parent().parent().find('.filter_hide').toggle();
361
+ $j(e.target).parent().parent().parent().parent().prev('.attribute_value_search_box').toggle().find('input').focus();
362
+ if($j(e.target).text() == $j(e.target).data('text-more')) {
363
+ $j(e.target).text($j(e.target).data('text-less'));
364
+ } else {
365
+ $j(e.target).text($j(e.target).data('text-more'));
366
+ }
367
+ });
368
+ },
369
+ searchBoxListener: function() {
370
+ /* Make CSS contains psuedo selector case insensitive */
371
+ $j.expr[":"].contains = $j.expr.createPseudo(function(arg) {
372
+ return function( elem ) {
373
+ return $j(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
374
+ };
375
+ });
376
+
377
+ $j('.attribute_value_search_box input').on('keyup', function (e) {
378
+ if($j(e.target).val()) {
379
+ $j(e.target).parent().next('dd').find('li').hide();
380
+ $j(e.target).parent().next('dd').find('li:contains("' + $j(e.target).val() + '")').each(function (i, li) {
381
+ $j(li).show();
382
+ });
383
+ } else {
384
+ $j(e.target).parent().next('dd').find('li').show();
385
+ }
386
+ });
387
  }
388
+ }