algoliasearch - Version 1.6.1

Version Notes

Change Log: https://github.com/algolia/algoliasearch-magento/blob/master/CHANGELOG.md

Download this release

Release Info

Developer Algolia Team
Extension algoliasearch
Version 1.6.1
Comparing to
See all releases


Code changes from version 1.6.0 to 1.6.1

Files changed (23) hide show
  1. app/code/community/Algolia/Algoliasearch/Helper/Algoliahelper.php +1 -1
  2. app/code/community/Algolia/Algoliasearch/Helper/Data.php +14 -1
  3. app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php +8 -0
  4. app/code/community/Algolia/Algoliasearch/etc/config.xml +1 -1
  5. app/code/community/Algolia/Algoliasearch/etc/system.xml +1 -1
  6. app/design/frontend/base/default/layout/algoliasearch.xml +20 -6
  7. app/design/frontend/base/default/template/algoliasearch/autocomplete.phtml +7 -147
  8. app/design/frontend/base/default/template/algoliasearch/autocomplete/attribute.phtml +9 -0
  9. app/design/frontend/base/default/template/algoliasearch/autocomplete/category.phtml +37 -0
  10. app/design/frontend/base/default/template/algoliasearch/autocomplete/menu.phtml +16 -0
  11. app/design/frontend/base/default/template/algoliasearch/autocomplete/page.phtml +14 -0
  12. app/design/frontend/base/default/template/algoliasearch/autocomplete/product.phtml +54 -0
  13. app/design/frontend/base/default/template/algoliasearch/autocomplete/suggestion.phtml +20 -0
  14. app/design/frontend/base/default/template/algoliasearch/instantsearch.phtml +11 -243
  15. app/design/frontend/base/default/template/algoliasearch/instantsearch/facet.phtml +8 -0
  16. app/design/frontend/base/default/template/algoliasearch/instantsearch/hit.phtml +76 -0
  17. app/design/frontend/base/default/template/algoliasearch/instantsearch/refinements.phtml +16 -0
  18. app/design/frontend/base/default/template/algoliasearch/instantsearch/stats.phtml +6 -0
  19. app/design/frontend/base/default/template/algoliasearch/instantsearch/wrapper.phtml +132 -0
  20. app/design/frontend/base/default/template/algoliasearch/internals/templateloader.phtml +1 -2
  21. app/etc/modules/Algolia_Algoliasearch.xml +1 -1
  22. app/locale/{en_GB → en_US}/Algolia_Algoliasearch.csv +0 -0
  23. package.xml +4 -4
app/code/community/Algolia/Algoliasearch/Helper/Algoliahelper.php CHANGED
@@ -18,7 +18,7 @@ class Algolia_Algoliasearch_Helper_Algoliahelper extends Mage_Core_Helper_Abstra
18
  $this->resetCredentialsFromConfig();
19
 
20
  $version = $this->config->getExtensionVersion();
21
- \AlgoliaSearch\Version::$custom_value = ' Magento ('.$version.')';
22
  }
23
 
24
  public function resetCredentialsFromConfig()
18
  $this->resetCredentialsFromConfig();
19
 
20
  $version = $this->config->getExtensionVersion();
21
+ \AlgoliaSearch\Version::$custom_value = '; Magento integration '.$version.'; PHP '.phpversion().'; Magento '.Mage::getVersion();
22
  }
23
 
24
  public function resetCredentialsFromConfig()
app/code/community/Algolia/Algoliasearch/Helper/Data.php CHANGED
@@ -430,7 +430,7 @@ class Algolia_Algoliasearch_Helper_Data extends Mage_Core_Helper_Abstract
430
  }
431
  }
432
 
433
- protected function getProductsRecords($storeId, $collection, $potentiallyDeletedProductsIds = null)
434
  {
435
  $productsToIndex = [];
436
  $productsToRemove = [];
@@ -438,6 +438,8 @@ class Algolia_Algoliasearch_Helper_Data extends Mage_Core_Helper_Abstract
438
  // In $potentiallyDeletedProductsIds there might be IDs of deleted products which will not be in a collection
439
  if (is_array($potentiallyDeletedProductsIds)) {
440
  $potentiallyDeletedProductsIds = array_combine($potentiallyDeletedProductsIds, $potentiallyDeletedProductsIds);
 
 
441
  }
442
 
443
  $this->logger->start('CREATE RECORDS '.$this->logger->getStoreName($storeId));
@@ -613,4 +615,15 @@ class Algolia_Algoliasearch_Helper_Data extends Mage_Core_Helper_Abstract
613
  $appEmulation->stopEnvironmentEmulation($info);
614
  $this->logger->stop('STOP EMULATION');
615
  }
 
 
 
 
 
 
 
 
 
 
 
616
  }
430
  }
431
  }
432
 
433
+ protected function getProductsRecords($storeId, $collection, $potentiallyDeletedProductsIds = [])
434
  {
435
  $productsToIndex = [];
436
  $productsToRemove = [];
438
  // In $potentiallyDeletedProductsIds there might be IDs of deleted products which will not be in a collection
439
  if (is_array($potentiallyDeletedProductsIds)) {
440
  $potentiallyDeletedProductsIds = array_combine($potentiallyDeletedProductsIds, $potentiallyDeletedProductsIds);
441
+ } else {
442
+ $potentiallyDeletedProductsIds = [];
443
  }
444
 
445
  $this->logger->start('CREATE RECORDS '.$this->logger->getStoreName($storeId));
615
  $appEmulation->stopEnvironmentEmulation($info);
616
  $this->logger->stop('STOP EMULATION');
617
  }
618
+
619
+ public function escapeJsTranslatedString(Mage_Core_Block_Template $template, $string, $useAddSlashes = false)
620
+ {
621
+ $translated = $template->__($string);
622
+
623
+ if ($useAddSlashes === true) {
624
+ return addslashes($translated);
625
+ }
626
+
627
+ return json_encode($translated);
628
+ }
629
  }
app/code/community/Algolia/Algoliasearch/Helper/Entity/Producthelper.php CHANGED
@@ -338,6 +338,10 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
338
 
339
  $synonyms = $this->config->getSynonyms($storeId);
340
  foreach ($synonyms as $objectID => $synonym) {
 
 
 
 
341
  $synonymsToSet[] = [
342
  'objectID' => $objectID,
343
  'type' => 'synonym',
@@ -347,6 +351,10 @@ class Algolia_Algoliasearch_Helper_Entity_Producthelper extends Algolia_Algolias
347
 
348
  $onewaySynonyms = $this->config->getOnewaySynonyms($storeId);
349
  foreach ($onewaySynonyms as $objectID => $onewaySynonym) {
 
 
 
 
350
  $synonymsToSet[] = [
351
  'objectID' => $objectID,
352
  'type' => 'oneWaySynonym',
338
 
339
  $synonyms = $this->config->getSynonyms($storeId);
340
  foreach ($synonyms as $objectID => $synonym) {
341
+ if (!trim($synonym['synonyms'])) {
342
+ continue;
343
+ }
344
+
345
  $synonymsToSet[] = [
346
  'objectID' => $objectID,
347
  'type' => 'synonym',
351
 
352
  $onewaySynonyms = $this->config->getOnewaySynonyms($storeId);
353
  foreach ($onewaySynonyms as $objectID => $onewaySynonym) {
354
+ if (!trim($onewaySynonym['input']) || !trim($onewaySynonym['synonyms'])) {
355
+ continue;
356
+ }
357
+
358
  $synonymsToSet[] = [
359
  'objectID' => $objectID,
360
  'type' => 'oneWaySynonym',
app/code/community/Algolia/Algoliasearch/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Algolia_Algoliasearch>
5
- <version>1.6.0</version>
6
  </Algolia_Algoliasearch>
7
  </modules>
8
  <frontend>
2
  <config>
3
  <modules>
4
  <Algolia_Algoliasearch>
5
+ <version>1.6.1</version>
6
  </Algolia_Algoliasearch>
7
  </modules>
8
  <frontend>
app/code/community/Algolia/Algoliasearch/etc/system.xml CHANGED
@@ -4,7 +4,7 @@
4
  <algoliasearch translate="label" module="algoliasearch">
5
  <label>
6
  <![CDATA[
7
- Algolia Search 1.6.0
8
  <style>
9
  .algoliasearch-admin-menu span {
10
  padding-left: 38px !important;
4
  <algoliasearch translate="label" module="algoliasearch">
5
  <label>
6
  <![CDATA[
7
+ Algolia Search 1.6.1
8
  <style>
9
  .algoliasearch-admin-menu span {
10
  padding-left: 38px !important;
app/design/frontend/base/default/layout/algoliasearch.xml CHANGED
@@ -17,18 +17,32 @@
17
  </reference>
18
  <reference name="before_body_end">
19
  <block type="core/template" template="algoliasearch/internals/frontjs.phtml" name="algolia-beforebodyend"/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  </reference>
21
  <reference name="content">
22
  <block type="core/template" before="content" template="algoliasearch/internals/beforecontent.phtml" name="algolia-beforecontent"/>
23
  </reference>
24
  </algolia_search_handle>
25
  <algolia_search_handle_with_topsearch>
26
- <reference name="header">
27
- <block type="core/template" name="top.search" as="topSearch" template="algoliasearch/internals/templateloader.phtml">
28
- <!-- Autocomplete.phtml must be loaded after Instantsearch.phtml to be able to bind to the recreated <div id="algolia-autocomplete-container"></div> -->
29
- <block type="core/template" template="algoliasearch/instantsearch.phtml" as="algolia-instantsearch" name="algolia-instantsearch"/>
30
- <block type="core/template" template="algoliasearch/autocomplete.phtml" as="algolia-autocomplete" name="algolia-autocomplete"/>
31
- </block>
32
  </reference>
33
  </algolia_search_handle_with_topsearch>
34
  <algolia_search_handle_no_topsearch>
17
  </reference>
18
  <reference name="before_body_end">
19
  <block type="core/template" template="algoliasearch/internals/frontjs.phtml" name="algolia-beforebodyend"/>
20
+
21
+ <!-- Multi-category Autocomplete templates -->
22
+ <block type="core/template" template="algoliasearch/autocomplete/product.phtml" name="algolia-autocomplete-product"/>
23
+ <block type="core/template" template="algoliasearch/autocomplete/category.phtml" name="algolia-autocomplete-category"/>
24
+ <block type="core/template" template="algoliasearch/autocomplete/page.phtml" name="algolia-autocomplete-page"/>
25
+ <block type="core/template" template="algoliasearch/autocomplete/attribute.phtml" name="algolia-autocomplete-attribute"/>
26
+ <block type="core/template" template="algoliasearch/autocomplete/suggestion.phtml" name="algolia-autocomplete-suggestion"/>
27
+ <block type="core/template" template="algoliasearch/autocomplete/menu.phtml" name="algolia-autocomplete-menu"/>
28
+
29
+ <!-- Instant search results page templates -->
30
+ <block type="core/template" template="algoliasearch/instantsearch/wrapper.phtml" name="algolia-instantsearch-wrapper"/>
31
+ <block type="core/template" template="algoliasearch/instantsearch/hit.phtml" name="algolia-instantsearch-hit"/>
32
+ <block type="core/template" template="algoliasearch/instantsearch/stats.phtml" name="algolia-instantsearch-stats"/>
33
+ <block type="core/template" template="algoliasearch/instantsearch/facet.phtml" name="algolia-instantsearch-facet"/>
34
+ <block type="core/template" template="algoliasearch/instantsearch/refinements.phtml" name="algolia-instantsearch-refinements"/>
35
  </reference>
36
  <reference name="content">
37
  <block type="core/template" before="content" template="algoliasearch/internals/beforecontent.phtml" name="algolia-beforecontent"/>
38
  </reference>
39
  </algolia_search_handle>
40
  <algolia_search_handle_with_topsearch>
41
+ <reference name="top.search">
42
+ <action method="setTemplate"><template>algoliasearch/internals/templateloader.phtml</template></action>
43
+
44
+ <block type="core/template" template="algoliasearch/instantsearch.phtml" as="algolia-instantsearch" name="algolia-instantsearch"/>
45
+ <block type="core/template" template="algoliasearch/autocomplete.phtml" as="algolia-autocomplete" name="algolia-autocomplete"/>
 
46
  </reference>
47
  </algolia_search_handle_with_topsearch>
48
  <algolia_search_handle_no_topsearch>
app/design/frontend/base/default/template/algoliasearch/autocomplete.phtml CHANGED
@@ -3,18 +3,12 @@
3
  /** @var Algolia_Algoliasearch_Helper_Config $config */
4
  $config = Mage::helper('algoliasearch/config');
5
 
 
 
 
6
  /** @var Mage_CatalogSearch_Helper_Data $catalogSearchHelper */
7
  $catalogSearchHelper = $this->helper('catalogsearch');
8
 
9
- /** @var Mage_Customer_Model_Session $session */
10
- $session = Mage::getSingleton('customer/session');
11
- $group_id = $session->getCustomerGroupId();
12
-
13
- $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
14
- $price_key = $config->isCustomerGroupsEnabled(Mage::app()->getStore()->getStoreId()) ? '.'.$currency_code.'.group_'.$group_id : '.'.$currency_code.'.default';
15
-
16
- $image_base_url = Mage::getBaseUrl();
17
-
18
  $placeholder = $this->__('Search for products, categories, ...');
19
 
20
  /** Render form with autocomplete input **/
@@ -35,140 +29,6 @@ if ($config->isDefaultSelector()): ?>
35
  </form>
36
  <?php endif; ?>
37
 
38
- <!-- Product hit template -->
39
- <script type="text/template" id="autocomplete_products_template">
40
- <a class="algoliasearch-autocomplete-hit" href="{{url}}">
41
- {{#thumbnail_url}}
42
- <div class="thumb"><img src="<?php echo $image_base_url; ?>{{thumbnail_url}}" /></div>
43
- {{/thumbnail_url}}
44
-
45
- <div class="info">
46
- {{{_highlightResult.name.value}}}
47
-
48
- <div class="algoliasearch-autocomplete-category">
49
- {{#categories_without_path}}
50
- <?php echo $this->__('in'); ?> {{{categories_without_path}}}
51
- {{/categories_without_path}}
52
-
53
- {{#_highlightResult.color}}
54
- {{#_highlightResult.color.value}}
55
- <span>
56
- {{#categories_without_path}} | {{/categories_without_path}} Color: {{{_highlightResult.color.value}}}
57
- </span>
58
- {{/_highlightResult.color.value}}
59
- {{/_highlightResult.color}}
60
- </div>
61
-
62
- <div class="algoliasearch-autocomplete-price">
63
- <span class="after_special {{#price<?php echo $price_key; ?>_original_formated}}promotion{{/price<?php echo $price_key; ?>_original_formated}}">
64
- {{price<?php echo $price_key; ?>_formated}}
65
- </span>
66
-
67
- {{#price<?php echo $price_key; ?>_original_formated}}
68
- <span class="before_special">
69
- {{price<?php echo $price_key; ?>_original_formated}}
70
- </span>
71
- {{/price<?php echo $price_key; ?>_original_formated}}
72
- </div>
73
- </div>
74
- </a>
75
- </script>
76
-
77
- <!-- Category hit template -->
78
- <script type="text/template" id="autocomplete_categories_template">
79
- <a class="algoliasearch-autocomplete-hit" href="{{url}}">
80
- {{#image_url}}
81
- <div class="thumb">
82
- <img src="<?php echo $image_base_url; ?>{{image_url}}" />
83
- </div>
84
- {{/image_url}}
85
-
86
- {{#image_url}}
87
- <div class="info">
88
- {{/image_url}}
89
- {{^image_url}}
90
- <div class="info-without-thumb">
91
- {{#_highlightResult.path}}
92
- {{{_highlightResult.path.value}}}
93
- {{/_highlightResult.path}}
94
- {{^_highlightResult.path}}
95
- {{{path}}}
96
- {{/_highlightResult.path}}
97
-
98
- {{#product_count}}
99
- <small>({{product_count}})</small>
100
- {{/product_count}}
101
-
102
- </div>
103
- <div class="clearfix"></div>
104
- {{/image_url}}
105
- </div>
106
- </a>
107
- </script>
108
-
109
- <!-- Page hit template -->
110
- <script type="text/template" id="autocomplete_pages_template">
111
- <a class="algoliasearch-autocomplete-hit" href="{{url}}">
112
- <div class="info-without-thumb">
113
- {{{_highlightResult.name.value}}}
114
- {{#content}}
115
- <div class="details">
116
- {{{content}}}
117
- </div>
118
- {{/content}}
119
- </div>
120
- <div class="clearfix"></div>
121
- </a>
122
- </script>
123
-
124
- <!-- Extra attribute hit template -->
125
- <script type="text/template" id="autocomplete_extra_template">
126
- <a class="algoliasearch-autocomplete-hit" href="{{url}}">
127
- <div class="info-without-thumb">
128
- {{{_highlightResult.value.value}}}
129
- </div>
130
- <div class="clearfix"></div>
131
- </a>
132
- </script>
133
-
134
- <!-- Suggestion hit template -->
135
- <script type="text/template" id="autocomplete_suggestions_template">
136
- <a class="algoliasearch-autocomplete-hit" href="{{url}}">
137
- <svg xmlns="http://www.w3.org/2000/svg" class="algolia-glass-suggestion magnifying-glass" width="24" height="24" viewBox="0 0 128 128" >
138
- <g transform="scale(2.5)">
139
- <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
140
- <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
141
- <path d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z" ></path>
142
- </g>
143
- </svg>
144
- <div class="info-without-thumb">
145
- {{{_highlightResult.query.value}}}
146
-
147
- {{#category}}
148
- <span class="text-muted"><?php echo $this->__('in'); ?></span> <span class="category-tag">{{category}}</span>
149
- {{/category}}
150
- </div>
151
- <div class="clearfix"></div>
152
- </a>
153
- </script>
154
-
155
- <!-- General autocomplete menu template -->
156
- <script type="text/template" id="menu-template">
157
- <div class="autocomplete-wrapper">
158
- <div class="col9">
159
- <div class="aa-dataset-products"></div>
160
- </div>
161
- <div class="col3">
162
- <div class="other-sections">
163
- <div class="aa-dataset-suggestions"></div>
164
- <?php for ($i = 0; $i < 10; $i++): ?>
165
- <div class="aa-dataset-<?php echo $i; ?>"></div>
166
- <?php endfor; ?>
167
- </div>
168
- </div>
169
- </div>
170
- </script>
171
-
172
  <script type="text/javascript">
173
  //<![CDATA[
174
 
@@ -194,7 +54,7 @@ if ($config->isDefaultSelector()): ?>
194
  };
195
 
196
  /**
197
- * Initialise Algolia client
198
  * Docs: https://www.algolia.com/doc/javascript
199
  **/
200
  var algolia_client = algoliaBundle.algoliasearch(algoliaConfig.applicationId, algoliaConfig.apiKey);
@@ -209,8 +69,8 @@ if ($config->isDefaultSelector()): ?>
209
  algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_que, label: '', name: "suggestions"});
210
  }
211
 
212
- algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_cat, label: <?php echo json_encode($this->__('Categories')); ?>, name: "categories"});
213
- algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_pro, label: <?php echo json_encode($this->__('Products')); ?>, name: "products"});
214
 
215
  /** Setup autocomplete data sources **/
216
  var sources = [],
@@ -245,7 +105,7 @@ if ($config->isDefaultSelector()): ?>
245
  };
246
 
247
  if (algoliaConfig.removeBranding === false) {
248
- options.templates.footer = '<div class="footer_algolia"><span><?php echo $this->__('Search by'); ?></span> <a href="https://www.algolia.com/?utm_source=magento&utm_medium=link&utm_campaign=magento_autocompletion_menu" target="_blank"><img src="<?php echo $this->getSkinUrl('algoliasearch/algolia-logo.png'); ?>" /></a></div>';
249
  }
250
 
251
  /** Bind autocomplete feature to the input */
3
  /** @var Algolia_Algoliasearch_Helper_Config $config */
4
  $config = Mage::helper('algoliasearch/config');
5
 
6
+ /** @var Algolia_Algoliasearch_Helper_Data $helper */
7
+ $helper = Mage::helper('algoliasearch');
8
+
9
  /** @var Mage_CatalogSearch_Helper_Data $catalogSearchHelper */
10
  $catalogSearchHelper = $this->helper('catalogsearch');
11
 
 
 
 
 
 
 
 
 
 
12
  $placeholder = $this->__('Search for products, categories, ...');
13
 
14
  /** Render form with autocomplete input **/
29
  </form>
30
  <?php endif; ?>
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  <script type="text/javascript">
33
  //<![CDATA[
34
 
54
  };
55
 
56
  /**
57
+ * Initialise Algolia client
58
  * Docs: https://www.algolia.com/doc/javascript
59
  **/
60
  var algolia_client = algoliaBundle.algoliasearch(algoliaConfig.applicationId, algoliaConfig.apiKey);
69
  algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_que, label: '', name: "suggestions"});
70
  }
71
 
72
+ algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_cat, label: <?php echo $helper->escapeJsTranslatedString($this, 'Categories'); ?>, name: "categories"});
73
+ algoliaConfig.autocomplete.sections.unshift({ hitsPerPage: nb_pro, label: <?php echo $helper->escapeJsTranslatedString($this, 'Products'); ?>, name: "products"});
74
 
75
  /** Setup autocomplete data sources **/
76
  var sources = [],
105
  };
106
 
107
  if (algoliaConfig.removeBranding === false) {
108
+ options.templates.footer = '<div class="footer_algolia"><span><?php echo $helper->escapeJsTranslatedString($this, 'Search by', true); ?></span> <a href="https://www.algolia.com/?utm_source=magento&utm_medium=link&utm_campaign=magento_autocompletion_menu" target="_blank"><img src="<?php echo $this->getSkinUrl('algoliasearch/algolia-logo.png'); ?>" /></a></div>';
109
  }
110
 
111
  /** Bind autocomplete feature to the input */
app/design/frontend/base/default/template/algoliasearch/autocomplete/attribute.phtml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <!-- Extra attribute hit template -->
2
+ <script type="text/template" id="autocomplete_extra_template">
3
+ <a class="algoliasearch-autocomplete-hit" href="{{url}}">
4
+ <div class="info-without-thumb">
5
+ {{{_highlightResult.value.value}}}
6
+ </div>
7
+ <div class="clearfix"></div>
8
+ </a>
9
+ </script>
app/design/frontend/base/default/template/algoliasearch/autocomplete/category.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $image_base_url = Mage::getBaseUrl();
4
+
5
+ ?>
6
+
7
+ <!-- Category hit template -->
8
+ <script type="text/template" id="autocomplete_categories_template">
9
+ <a class="algoliasearch-autocomplete-hit" href="{{url}}">
10
+ {{#image_url}}
11
+ <div class="thumb">
12
+ <img src="<?php echo $image_base_url; ?>{{image_url}}" />
13
+ </div>
14
+ {{/image_url}}
15
+
16
+ {{#image_url}}
17
+ <div class="info">
18
+ {{/image_url}}
19
+ {{^image_url}}
20
+ <div class="info-without-thumb">
21
+ {{#_highlightResult.path}}
22
+ {{{_highlightResult.path.value}}}
23
+ {{/_highlightResult.path}}
24
+ {{^_highlightResult.path}}
25
+ {{{path}}}
26
+ {{/_highlightResult.path}}
27
+
28
+ {{#product_count}}
29
+ <small>({{product_count}})</small>
30
+ {{/product_count}}
31
+
32
+ </div>
33
+ <div class="clearfix"></div>
34
+ {{/image_url}}
35
+ </div>
36
+ </a>
37
+ </script>
app/design/frontend/base/default/template/algoliasearch/autocomplete/menu.phtml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- General autocomplete menu template -->
2
+ <script type="text/template" id="menu-template">
3
+ <div class="autocomplete-wrapper">
4
+ <div class="col9">
5
+ <div class="aa-dataset-products"></div>
6
+ </div>
7
+ <div class="col3">
8
+ <div class="other-sections">
9
+ <div class="aa-dataset-suggestions"></div>
10
+ <?php for ($i = 0; $i < 10; $i++): ?>
11
+ <div class="aa-dataset-<?php echo $i; ?>"></div>
12
+ <?php endfor; ?>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ </script>
app/design/frontend/base/default/template/algoliasearch/autocomplete/page.phtml ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- Page hit template -->
2
+ <script type="text/template" id="autocomplete_pages_template">
3
+ <a class="algoliasearch-autocomplete-hit" href="{{url}}">
4
+ <div class="info-without-thumb">
5
+ {{{_highlightResult.name.value}}}
6
+ {{#content}}
7
+ <div class="details">
8
+ {{{content}}}
9
+ </div>
10
+ {{/content}}
11
+ </div>
12
+ <div class="clearfix"></div>
13
+ </a>
14
+ </script>
app/design/frontend/base/default/template/algoliasearch/autocomplete/product.phtml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /** @var Algolia_Algoliasearch_Helper_Config $config */
4
+ $config = Mage::helper('algoliasearch/config');
5
+
6
+ /** @var Mage_Customer_Model_Session $session */
7
+ $session = Mage::getSingleton('customer/session');
8
+ $group_id = $session->getCustomerGroupId();
9
+
10
+ $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
11
+ $price_key = $config->isCustomerGroupsEnabled(Mage::app()->getStore()->getStoreId()) ? '.'.$currency_code.'.group_'.$group_id : '.'.$currency_code.'.default';
12
+
13
+ $image_base_url = Mage::getBaseUrl();
14
+
15
+ ?>
16
+
17
+ <!-- Product hit template -->
18
+ <script type="text/template" id="autocomplete_products_template">
19
+ <a class="algoliasearch-autocomplete-hit" href="{{url}}">
20
+ {{#thumbnail_url}}
21
+ <div class="thumb"><img src="<?php echo $image_base_url; ?>{{thumbnail_url}}" /></div>
22
+ {{/thumbnail_url}}
23
+
24
+ <div class="info">
25
+ {{{_highlightResult.name.value}}}
26
+
27
+ <div class="algoliasearch-autocomplete-category">
28
+ {{#categories_without_path}}
29
+ <?php echo $this->__('in'); ?> {{{categories_without_path}}}
30
+ {{/categories_without_path}}
31
+
32
+ {{#_highlightResult.color}}
33
+ {{#_highlightResult.color.value}}
34
+ <span>
35
+ {{#categories_without_path}} | {{/categories_without_path}} Color: {{{_highlightResult.color.value}}}
36
+ </span>
37
+ {{/_highlightResult.color.value}}
38
+ {{/_highlightResult.color}}
39
+ </div>
40
+
41
+ <div class="algoliasearch-autocomplete-price">
42
+ <span class="after_special {{#price<?php echo $price_key; ?>_original_formated}}promotion{{/price<?php echo $price_key; ?>_original_formated}}">
43
+ {{price<?php echo $price_key; ?>_formated}}
44
+ </span>
45
+
46
+ {{#price<?php echo $price_key; ?>_original_formated}}
47
+ <span class="before_special">
48
+ {{price<?php echo $price_key; ?>_original_formated}}
49
+ </span>
50
+ {{/price<?php echo $price_key; ?>_original_formated}}
51
+ </div>
52
+ </div>
53
+ </a>
54
+ </script>
app/design/frontend/base/default/template/algoliasearch/autocomplete/suggestion.phtml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- Suggestion hit template -->
2
+ <script type="text/template" id="autocomplete_suggestions_template">
3
+ <a class="algoliasearch-autocomplete-hit" href="{{url}}">
4
+ <svg xmlns="http://www.w3.org/2000/svg" class="algolia-glass-suggestion magnifying-glass" width="24" height="24" viewBox="0 0 128 128" >
5
+ <g transform="scale(2.5)">
6
+ <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
7
+ <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
8
+ <path d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z" ></path>
9
+ </g>
10
+ </svg>
11
+ <div class="info-without-thumb">
12
+ {{{_highlightResult.query.value}}}
13
+
14
+ {{#category}}
15
+ <span class="text-muted"><?php echo $this->__('in'); ?></span> <span class="category-tag">{{category}}</span>
16
+ {{/category}}
17
+ </div>
18
+ <div class="clearfix"></div>
19
+ </a>
20
+ </script>
app/design/frontend/base/default/template/algoliasearch/instantsearch.phtml CHANGED
@@ -1,242 +1,10 @@
1
  <?php
2
 
3
- /** @var Algolia_Algoliasearch_Helper_Config $config */
4
- $config = Mage::helper('algoliasearch/config');
5
-
6
- /** @var Mage_CatalogSearch_Helper_Data $catalogSearchHelper */
7
- $catalogSearchHelper = $this->helper('catalogsearch');
8
-
9
- /** @var Mage_Customer_Model_Session $session */
10
- $session = Mage::getSingleton('customer/session');
11
- $group_id = $session->getCustomerGroupId();
12
-
13
- $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
14
- $price_key = $config->isCustomerGroupsEnabled(Mage::app()->getStore()->getStoreId()) ? '.'.$currency_code.'.group_'.$group_id : '.'.$currency_code.'.default';
15
-
16
- $image_base_url = Mage::getBaseUrl();
17
-
18
- $title = '';
19
- $description = '';
20
- $content = '';
21
- $imgHtml = '';
22
-
23
- if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->getRequest()->getControllerName() == 'category') {
24
- $category = Mage::registry('current_category');
25
- $title = $category->getName();
26
-
27
- if ($category && $category->getDisplayMode() !== 'PAGE') {
28
- $category->getUrlInstance()->setStore(Mage::app()->getStore()->getStoreId());
29
-
30
- if ($category->getDisplayMode() == 'PRODUCTS_AND_PAGE') {
31
- $page = $category->getLandingPage();
32
- $cms_block = Mage::getModel('cms/block')->load($page);
33
-
34
- $description = $category->getDescription();
35
- $content = $this->getLayout()->createBlock('cms/block')->setBlockId($page)->toHtml();
36
-
37
- if ($category->getImageUrl()) {
38
- $imgHtml = '<p class="category-image"><img src="'.$category->getImageUrl().'" alt="'.$this->escapeHtml($category->getName()).'" title="'.$this->escapeHtml($category->getName()).'" /></p>';
39
- $imgHtml = $this->helper('catalog/output')->categoryAttribute($category, $imgHtml, 'image');
40
- }
41
- }
42
- }
43
- }
44
 
45
  ?>
46
 
47
- <!-- Instantsearch wrapper template -->
48
- <script type="text/template" id="instant_wrapper_template">
49
- {{#findAutocomplete}}
50
- <div id="algolia-autocomplete-container"></div>
51
- {{/findAutocomplete}}
52
- <div id="algolia_instant_selector" class="<?php echo count($config->getFacets()) > 0 ? ' with-facets' : '' ?>">
53
-
54
- <?php if ($title || $imgHtml || $description || $content): ?>
55
- <div class="row">
56
- <div class="col-md-12">
57
- <div id="algolia-static-content">
58
- <div class="page-title category-title">
59
- <h1><?php echo $title; ?></h1>
60
- </div>
61
- <div>
62
- <?php echo $imgHtml; ?>
63
- </div>
64
- <div class="category-description std">
65
- <?php echo $description; ?>
66
- </div>
67
- <?php echo $content; ?>
68
- </div>
69
- </div>
70
- </div>
71
- <?php endif; ?>
72
-
73
- <div class="row">
74
- <div class="col-md-3" id="algolia-left-container">
75
- <div id="refine-toggle" class="visible-xs visible-sm">+ <?php echo $this->__('Refine'); ?></div>
76
- <div class="hidden-xs hidden-sm" id="instant-search-facets-container">
77
- <div id="current-refinements"></div>
78
- </div>
79
- </div>
80
-
81
- <div class="col-md-9" id="algolia-right-container">
82
- <div class="row">
83
- <div class="col-md-12">
84
- <div>
85
- {{#second_bar}}
86
- <div id="instant-search-bar-container">
87
- <div id="instant-search-box">
88
- <div class="instant-search-bar-label">
89
- <svg xmlns="http://www.w3.org/2000/svg" class="magnifying-glass" width="24"
90
- height="24" viewBox="0 0 128 128">
91
- <g transform="scale(4)">
92
- <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
93
- <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
94
- <path
95
- d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z"></path>
96
- </g>
97
- </svg>
98
- <span><?php echo $this->__('Current search'); ?></span>
99
- </div>
100
- <div class="instant-search-bar-wrapper">
101
- <label for="instant-search-bar">
102
- <?php echo $this->__('Search:'); ?>
103
- </label>
104
-
105
- <input placeholder="<?php echo $this->__('Search for products'); ?>"
106
- id="instant-search-bar" type="text" autocomplete="off" spellcheck="false"
107
- autocorrect="off" autocapitalize="off"/>
108
-
109
- <img class="clear-query-instant"
110
- src="<?php echo $this->getSkinUrl('algoliasearch/cross.png') ?>"/>
111
- </div>
112
- </div>
113
- </div>
114
- {{/second_bar}}
115
- </div>
116
- </div>
117
- </div>
118
- <div class="row">
119
- <div>
120
- <div class="hits">
121
- <div class="infos">
122
- <div class="pull-left" id="algolia-stats"></div>
123
- <div class="pull-right">
124
- <div class="sort-by-label pull-left">
125
- <?php echo $this->__('SORT BY'); ?>
126
- </div>
127
- <div class="pull-left" id="algolia-sorts"></div>
128
- </div>
129
- <div class="clearfix"></div>
130
- </div>
131
- <div id="instant-search-results-container"></div>
132
- </div>
133
- </div>
134
- <div class="clearfix"></div>
135
- </div>
136
-
137
- <div class="text-center">
138
- <div id="instant-search-pagination-container"></div>
139
- </div>
140
- </div>
141
- </div>
142
-
143
- </div>
144
- </script>
145
-
146
- <!-- Product hit template -->
147
- <script type="text/template" id="instant-hit-template">
148
- <div class="col-md-4 col-sm-6">
149
- <div class="result-wrapper">
150
- <a href="{{url}}" class="result">
151
- <div class="result-content">
152
- <div class="result-thumbnail">
153
- {{#image_url}}<img src="<?php echo $image_base_url; ?>{{{ image_url }}}"/>{{/image_url}}
154
- {{^image_url}}<span class="no-image"></span>{{/image_url}}
155
- </div>
156
- <div class="result-sub-content">
157
- <h3 class="result-title text-ellipsis">
158
- {{{ _highlightResult.name.value }}}
159
- </h3>
160
- <div class="ratings">
161
- <div class="result-sub-content">
162
- <div class="ratings">
163
- <div class="rating-box">
164
- <div class="rating" style="width:{{rating_summary}}%" width="148"
165
- height="148"></div>
166
- </div>
167
- </div>
168
- <div class="price">
169
- <div class="price-wrapper">
170
- <div>
171
- <span
172
- class="after_special {{#price<?php echo $price_key; ?>_original_formated}}promotion{{/price<?php echo $price_key; ?>_original_formated}}">
173
- {{price<?php echo $price_key; ?>_formated}}
174
- </span>
175
-
176
- {{#price<?php echo $price_key; ?>_original_formated}}
177
- <span class="before_special">
178
- {{price<?php echo $price_key; ?>_original_formated}}
179
- </span>
180
- {{/price<?php echo $price_key; ?>_original_formated}}
181
- </div>
182
- </div>
183
- </div>
184
- </div>
185
- </div>
186
- <div class="result-description text-ellipsis">{{{ _highlightResult.description.value }}}</div>
187
-
188
- {{#isAddToCartEnabled}}
189
- {{#in_stock}}
190
- <form action="<?php echo Mage::getBaseUrl(); ?>/checkout/cart/add/product/{{objectID}}"
191
- method="post">
192
- <input type="hidden" name="form_key"
193
- value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>
194
- <input type="hidden" name="qty" value="1">
195
- <button type="submit"><?php echo $this->__('Add to Cart'); ?></button>
196
- </form>
197
- {{/in_stock}}
198
- {{/isAddToCartEnabled}}
199
- </div>
200
- </div>
201
- <div class="clearfix"></div>
202
- </a>
203
- </div>
204
- </div>
205
- </script>
206
-
207
- <!-- Search statistics template (used for displaying hits' count and time of query) -->
208
- <script type="text/template" id="instant-stats-template">
209
- {{#hasOneResult}}<strong>1</strong> <?php echo $this->__('result'); ?> found{{/hasOneResult}}
210
- {{#hasManyResults}}{{^hasNoResults}}{{first}}-{{last}} out of{{/hasNoResults}} <strong>{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}} <?php echo $this->__('results found'); ?></strong>{{/hasManyResults}}
211
- <?php echo $this->__('in'); ?> {{seconds}} <?php echo $this->__('seconds'); ?>
212
- </script>
213
-
214
- <!-- Basic facet template -->
215
- <script type="text/template" id="facet-template">
216
- <div class="sub_facet {{#isRefined}}checked{{/isRefined}}">
217
- <input class="facet_value" {{#isRefined}}checked{{/isRefined}} type="checkbox">
218
- {{name}}
219
- <span class="count">{{count}}</span>
220
- </div>
221
- </script>
222
-
223
- <!-- Current refinements template -->
224
- <script type="text/template" id="current-refinements-template">
225
- <div class="cross-wrapper">
226
- <img src="<?php echo $this->getSkinUrl('algoliasearch/cross.png') ?>"/>
227
- </div>
228
- <div class="current-refinement-wrapper">
229
- {{#label}}
230
- <span class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span>
231
- {{/label}}
232
- {{#operator}}
233
- {{{displayOperator}}}
234
- {{/operator}}
235
- {{#exclude}}-{{/exclude}}
236
- <span class="current-refinement-name">{{name}}</span>
237
- </div>
238
- </script>
239
-
240
  <script type="text/javascript">
241
  //<![CDATA[
242
 
@@ -344,7 +112,7 @@ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->
344
  search.addWidget(
345
  algoliaBundle.instantsearch.widgets.searchBox({
346
  container: instant_selector,
347
- placeholder: '<?php echo $this->__('Search for products'); ?>'
348
  })
349
  );
350
 
@@ -374,7 +142,7 @@ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->
374
  **/
375
  algoliaConfig.sortingIndices.unshift({
376
  name: algoliaConfig.indexName + '_products',
377
- label: '<?php echo $this->__('Relevance'); ?>'
378
  });
379
 
380
  search.addWidget(
@@ -427,15 +195,15 @@ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->
427
  render: function (data) {
428
  if (data.results.hits.length === 0) {
429
  var content = '<div class="no-results">';
430
- content += '<div><b><?php echo $this->__('No products for query'); ?> "' + $("<div>").text(data.results.query).html() + '</b>"</div>';
431
  content += '<div class="popular-searches">';
432
 
433
  if (algoliaConfig.showSuggestionsOnNoResultsPage && this.suggestions.length > 0) {
434
- content += '<div><?php echo $this->__('You can try one of the popular search queries'); ?></div>' + this.suggestions.join(', ');
435
  }
436
 
437
  content += '</div>';
438
- content += '<?php echo $this->__('or'); ?> <a href="' + algoliaConfig.baseUrl + '/catalogsearch/result/?q=__empty__"><?php echo $this->__('See all products'); ?></a>'
439
 
440
  content += '</div>';
441
 
@@ -478,8 +246,8 @@ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->
478
  root: 'facet'
479
  },
480
  templates: {
481
- header: '<div class="name">' + '<?php echo $this->__('Selected Filters'); ?>' + '</div>',
482
- clearAll: '<?php echo $this->__('Clear all'); ?>',
483
  item: $('#current-refinements-template').html()
484
  },
485
  attributes: attributes,
@@ -559,8 +327,8 @@ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->
559
  showFirstLast: false,
560
  maxPages: 1000,
561
  labels: {
562
- previous: '<?php echo $this->__('Previous page'); ?>',
563
- next: '<?php echo $this->__('Next page'); ?>'
564
  },
565
  scrollTo: 'body'
566
  })
1
  <?php
2
 
3
+ /** @var Algolia_Algoliasearch_Helper_Data $helper */
4
+ $helper = Mage::helper('algoliasearch');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  ?>
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  <script type="text/javascript">
9
  //<![CDATA[
10
 
112
  search.addWidget(
113
  algoliaBundle.instantsearch.widgets.searchBox({
114
  container: instant_selector,
115
+ placeholder: '<?php echo $helper->escapeJsTranslatedString($this, 'Search for products'); ?>'
116
  })
117
  );
118
 
142
  **/
143
  algoliaConfig.sortingIndices.unshift({
144
  name: algoliaConfig.indexName + '_products',
145
+ label: '<?php echo $helper->escapeJsTranslatedString($this, 'Relevance'); ?>'
146
  });
147
 
148
  search.addWidget(
195
  render: function (data) {
196
  if (data.results.hits.length === 0) {
197
  var content = '<div class="no-results">';
198
+ content += '<div><b><?php echo $helper->escapeJsTranslatedString($this, 'No products for query', true); ?> "' + $("<div>").text(data.results.query).html() + '</b>"</div>';
199
  content += '<div class="popular-searches">';
200
 
201
  if (algoliaConfig.showSuggestionsOnNoResultsPage && this.suggestions.length > 0) {
202
+ content += '<div><?php echo $helper->escapeJsTranslatedString($this, 'You can try one of the popular search queries', true); ?></div>' + this.suggestions.join(', ');
203
  }
204
 
205
  content += '</div>';
206
+ content += '<?php echo $helper->escapeJsTranslatedString($this, 'or', true); ?> <a href="' + algoliaConfig.baseUrl + '/catalogsearch/result/?q=__empty__"><?php echo $helper->escapeJsTranslatedString($this, 'See all products', true); ?></a>'
207
 
208
  content += '</div>';
209
 
246
  root: 'facet'
247
  },
248
  templates: {
249
+ header: '<div class="name">' + '<?php echo $helper->escapeJsTranslatedString($this, 'Selected Filters', true); ?>' + '</div>',
250
+ clearAll: '<?php echo $helper->escapeJsTranslatedString($this, 'Clear all'); ?>',
251
  item: $('#current-refinements-template').html()
252
  },
253
  attributes: attributes,
327
  showFirstLast: false,
328
  maxPages: 1000,
329
  labels: {
330
+ previous: '<?php echo $helper->escapeJsTranslatedString($this, 'Previous page'); ?>',
331
+ next: '<?php echo $helper->escapeJsTranslatedString($this, 'Next page'); ?>'
332
  },
333
  scrollTo: 'body'
334
  })
app/design/frontend/base/default/template/algoliasearch/instantsearch/facet.phtml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <!-- Basic facet template -->
2
+ <script type="text/template" id="facet-template">
3
+ <div class="sub_facet {{#isRefined}}checked{{/isRefined}}">
4
+ <input class="facet_value" {{#isRefined}}checked{{/isRefined}} type="checkbox">
5
+ {{name}}
6
+ <span class="count">{{count}}</span>
7
+ </div>
8
+ </script>
app/design/frontend/base/default/template/algoliasearch/instantsearch/hit.phtml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /** @var Algolia_Algoliasearch_Helper_Config $config */
4
+ $config = Mage::helper('algoliasearch/config');
5
+
6
+ /** @var Mage_Customer_Model_Session $session */
7
+ $session = Mage::getSingleton('customer/session');
8
+ $group_id = $session->getCustomerGroupId();
9
+
10
+ $currency_code = Mage::app()->getStore()->getCurrentCurrencyCode();
11
+ $price_key = $config->isCustomerGroupsEnabled(Mage::app()->getStore()->getStoreId()) ? '.'.$currency_code.'.group_'.$group_id : '.'.$currency_code.'.default';
12
+
13
+ $image_base_url = Mage::getBaseUrl();
14
+
15
+ ?>
16
+
17
+ <!-- Product hit template -->
18
+ <script type="text/template" id="instant-hit-template">
19
+ <div class="col-md-4 col-sm-6">
20
+ <div class="result-wrapper">
21
+ <a href="{{url}}" class="result">
22
+ <div class="result-content">
23
+ <div class="result-thumbnail">
24
+ {{#image_url}}<img src="<?php echo $image_base_url; ?>{{{ image_url }}}"/>{{/image_url}}
25
+ {{^image_url}}<span class="no-image"></span>{{/image_url}}
26
+ </div>
27
+ <div class="result-sub-content">
28
+ <h3 class="result-title text-ellipsis">
29
+ {{{ _highlightResult.name.value }}}
30
+ </h3>
31
+ <div class="ratings">
32
+ <div class="ratings-wrapper">
33
+ <div class="ratings-sub-content">
34
+ <div class="rating-box">
35
+ <div class="rating" style="width:{{rating_summary}}%" width="148"
36
+ height="148"></div>
37
+ </div>
38
+ </div>
39
+ <div class="price">
40
+ <div class="price-wrapper">
41
+ <div>
42
+ <span
43
+ class="after_special {{#price<?php echo $price_key; ?>_original_formated}}promotion{{/price<?php echo $price_key; ?>_original_formated}}">
44
+ {{price<?php echo $price_key; ?>_formated}}
45
+ </span>
46
+
47
+ {{#price<?php echo $price_key; ?>_original_formated}}
48
+ <span class="before_special">
49
+ {{price<?php echo $price_key; ?>_original_formated}}
50
+ </span>
51
+ {{/price<?php echo $price_key; ?>_original_formated}}
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ <div class="result-description text-ellipsis">{{{ _highlightResult.description.value }}}</div>
58
+
59
+ {{#isAddToCartEnabled}}
60
+ {{#in_stock}}
61
+ <form action="<?php echo Mage::getBaseUrl(); ?>/checkout/cart/add/product/{{objectID}}"
62
+ method="post">
63
+ <input type="hidden" name="form_key"
64
+ value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>
65
+ <input type="hidden" name="qty" value="1">
66
+ <button type="submit"><?php echo $this->__('Add to Cart'); ?></button>
67
+ </form>
68
+ {{/in_stock}}
69
+ {{/isAddToCartEnabled}}
70
+ </div>
71
+ </div>
72
+ <div class="clearfix"></div>
73
+ </a>
74
+ </div>
75
+ </div>
76
+ </script>
app/design/frontend/base/default/template/algoliasearch/instantsearch/refinements.phtml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!-- Current refinements template -->
2
+ <script type="text/template" id="current-refinements-template">
3
+ <div class="cross-wrapper">
4
+ <img src="<?php echo $this->getSkinUrl('algoliasearch/cross.png') ?>"/>
5
+ </div>
6
+ <div class="current-refinement-wrapper">
7
+ {{#label}}
8
+ <span class="current-refinement-label">{{label}}{{^operator}}:{{/operator}}</span>
9
+ {{/label}}
10
+ {{#operator}}
11
+ {{{displayOperator}}}
12
+ {{/operator}}
13
+ {{#exclude}}-{{/exclude}}
14
+ <span class="current-refinement-name">{{name}}</span>
15
+ </div>
16
+ </script>
app/design/frontend/base/default/template/algoliasearch/instantsearch/stats.phtml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <!-- Search statistics template (used for displaying hits' count and time of query) -->
2
+ <script type="text/template" id="instant-stats-template">
3
+ {{#hasOneResult}}<strong>1</strong> <?php echo $this->__('result'); ?> found{{/hasOneResult}}
4
+ {{#hasManyResults}}{{^hasNoResults}}{{first}}-{{last}} out of{{/hasNoResults}} <strong>{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}} <?php echo $this->__('results found'); ?></strong>{{/hasManyResults}}
5
+ <?php echo $this->__('in'); ?> {{seconds}} <?php echo $this->__('seconds'); ?>
6
+ </script>
app/design/frontend/base/default/template/algoliasearch/instantsearch/wrapper.phtml ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /** @var Algolia_Algoliasearch_Helper_Config $config */
4
+ $config = Mage::helper('algoliasearch/config');
5
+
6
+ $title = '';
7
+ $description = '';
8
+ $content = '';
9
+ $imgHtml = '';
10
+
11
+ if ($config->isInstantEnabled() && $config->replaceCategories() && Mage::app()->getRequest()->getControllerName() == 'category') {
12
+ $category = Mage::registry('current_category');
13
+ $title = $category->getName();
14
+
15
+ if ($category && $category->getDisplayMode() !== 'PAGE') {
16
+ $category->getUrlInstance()->setStore(Mage::app()->getStore()->getStoreId());
17
+
18
+ if ($category->getDisplayMode() == 'PRODUCTS_AND_PAGE') {
19
+ $page = $category->getLandingPage();
20
+ $cms_block = Mage::getModel('cms/block')->load($page);
21
+
22
+ $description = $category->getDescription();
23
+ $content = $this->getLayout()->createBlock('cms/block')->setBlockId($page)->toHtml();
24
+
25
+ if ($category->getImageUrl()) {
26
+ $imgHtml = '<p class="category-image"><img src="'.$category->getImageUrl().'" alt="'.$this->escapeHtml($category->getName()).'" title="'.$this->escapeHtml($category->getName()).'" /></p>';
27
+ $imgHtml = $this->helper('catalog/output')->categoryAttribute($category, $imgHtml, 'image');
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ ?>
34
+
35
+ <!-- Instantsearch wrapper template -->
36
+ <script type="text/template" id="instant_wrapper_template">
37
+ {{#findAutocomplete}}
38
+ <div id="algolia-autocomplete-container"></div>
39
+ {{/findAutocomplete}}
40
+ <div id="algolia_instant_selector" class="<?php echo count($config->getFacets()) > 0 ? ' with-facets' : '' ?>">
41
+
42
+ <?php if ($title || $imgHtml || $description || $content): ?>
43
+ <div class="row">
44
+ <div class="col-md-12">
45
+ <div id="algolia-static-content">
46
+ <div class="page-title category-title">
47
+ <h1><?php echo $title; ?></h1>
48
+ </div>
49
+ <div>
50
+ <?php echo $imgHtml; ?>
51
+ </div>
52
+ <div class="category-description std">
53
+ <?php echo $description; ?>
54
+ </div>
55
+ <?php echo $content; ?>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ <?php endif; ?>
60
+
61
+ <div class="row">
62
+ <div class="col-md-3" id="algolia-left-container">
63
+ <div id="refine-toggle" class="visible-xs visible-sm">+ <?php echo $this->__('Refine'); ?></div>
64
+ <div class="hidden-xs hidden-sm" id="instant-search-facets-container">
65
+ <div id="current-refinements"></div>
66
+ </div>
67
+ </div>
68
+
69
+ <div class="col-md-9" id="algolia-right-container">
70
+ <div class="row">
71
+ <div class="col-md-12">
72
+ <div>
73
+ {{#second_bar}}
74
+ <div id="instant-search-bar-container">
75
+ <div id="instant-search-box">
76
+ <div class="instant-search-bar-label">
77
+ <svg xmlns="http://www.w3.org/2000/svg" class="magnifying-glass" width="24"
78
+ height="24" viewBox="0 0 128 128">
79
+ <g transform="scale(4)">
80
+ <path stroke-width="3" d="M19.5 19.582l9.438 9.438"></path>
81
+ <circle stroke-width="3" cx="12" cy="12" r="10.5" fill="none"></circle>
82
+ <path
83
+ d="M23.646 20.354l-3.293 3.293c-.195.195-.195.512 0 .707l7.293 7.293c.195.195.512.195.707 0l3.293-3.293c.195-.195.195-.512 0-.707l-7.293-7.293c-.195-.195-.512-.195-.707 0z"></path>
84
+ </g>
85
+ </svg>
86
+ <span><?php echo $this->__('Current search'); ?></span>
87
+ </div>
88
+ <div class="instant-search-bar-wrapper">
89
+ <label for="instant-search-bar">
90
+ <?php echo $this->__('Search:'); ?>
91
+ </label>
92
+
93
+ <input placeholder="<?php echo $this->__('Search for products'); ?>"
94
+ id="instant-search-bar" type="text" autocomplete="off" spellcheck="false"
95
+ autocorrect="off" autocapitalize="off"/>
96
+
97
+ <img class="clear-query-instant"
98
+ src="<?php echo $this->getSkinUrl('algoliasearch/cross.png') ?>"/>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ {{/second_bar}}
103
+ </div>
104
+ </div>
105
+ </div>
106
+ <div class="row">
107
+ <div>
108
+ <div class="hits">
109
+ <div class="infos">
110
+ <div class="pull-left" id="algolia-stats"></div>
111
+ <div class="pull-right">
112
+ <div class="sort-by-label pull-left">
113
+ <?php echo $this->__('SORT BY'); ?>
114
+ </div>
115
+ <div class="pull-left" id="algolia-sorts"></div>
116
+ </div>
117
+ <div class="clearfix"></div>
118
+ </div>
119
+ <div id="instant-search-results-container"></div>
120
+ </div>
121
+ </div>
122
+ <div class="clearfix"></div>
123
+ </div>
124
+
125
+ <div class="text-center">
126
+ <div id="instant-search-pagination-container"></div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+
131
+ </div>
132
+ </script>
app/design/frontend/base/default/template/algoliasearch/internals/templateloader.phtml CHANGED
@@ -1,4 +1,3 @@
1
  <?php
2
 
3
- echo $this->getChildHtml('algolia-instantsearch');
4
- echo $this->getChildHtml('algolia-autocomplete');
1
  <?php
2
 
3
+ echo $this->getChildHtml();
 
app/etc/modules/Algolia_Algoliasearch.xml CHANGED
@@ -4,7 +4,7 @@
4
  <Algolia_Algoliasearch>
5
  <active>true</active>
6
  <codePool>community</codePool>
7
- <version>1.6.0</version>
8
  </Algolia_Algoliasearch>
9
  </modules>
10
  </config>
4
  <Algolia_Algoliasearch>
5
  <active>true</active>
6
  <codePool>community</codePool>
7
+ <version>1.6.1</version>
8
  </Algolia_Algoliasearch>
9
  </modules>
10
  </config>
app/locale/{en_GB → en_US}/Algolia_Algoliasearch.csv RENAMED
File without changes
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>algoliasearch</name>
4
- <version>1.6.0</version>
5
  <stability>stable</stability>
6
  <license uri="https://github.com/algolia/algoliasearch-magento/blob/master/LICENSE.txt">MIT</license>
7
  <channel>community</channel>
@@ -15,9 +15,9 @@
15
  </description>
16
  <notes>Change Log: https://github.com/algolia/algoliasearch-magento/blob/master/CHANGELOG.md</notes>
17
  <authors><author><name>Algolia Team</name><user>algolia</user><email>support@algolia.com</email></author></authors>
18
- <date>2016-06-29</date>
19
- <time>14:37:18</time>
20
- <contents><target name="mageetc"><dir name="modules"><file name="Algolia_Algoliasearch.xml" hash="875a4d2d658ef926044a409106d1a13c"/></dir></target><target name="magecommunity"><dir name="Algolia"><dir name="Algoliasearch"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="AbstractField.php" hash="0c1eab3d33b22a4d817a11784255ec7a"/><file name="AdditionalSections.php" hash="4bbb38cd0f0c2f541db06251921d00f9"/><file name="CategoryAdditionalAttributes.php" hash="154cb5608a72b3878168d0bbb0f6a396"/><file name="CustomRankingCategoryAttributes.php" hash="3ffb61daa1cba35d9b614d61bae86236"/><file name="CustomRankingProductAttributes.php" hash="3e60003894f6590362e4cd84e64dbc22"/><file name="ExcludedPages.php" hash="a3b438416d257db0cfc08d0e60cfcdcf"/><file name="Facets.php" hash="3bb21770e697fc9fd8c92db1b149873c"/><file name="OnewaySynonyms.php" hash="92f4fa0f6d2ba0edb4bdc10f7e925b58"/><file name="ProductAdditionalAttributes.php" hash="88df9e805d2b9d44b50793aee5d9be60"/><file name="Select.php" hash="e9521a9c869b427bca0fe57ea92288a1"/><file name="Sorts.php" hash="943490e9ba84b4849c96f83d83cc0822"/><file name="Synonyms.php" hash="e1e97c828539adfafcd42b4a94151286"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Algoliahelper.php" hash="1b6fe0ebd96bdcbbbcb63d428b9fb4d3"/><file name="Config.php" hash="507393691b2297f63fe2fe93e944e78d"/><file name="Data.php" hash="ac5d99d2374a7433992502f5aff93e44"/><dir name="Entity"><file name="Additionalsectionshelper.php" hash="acef0a12e00e38307350e06f40130760"/><file name="Categoryhelper.php" hash="8214e4df55433d3dffb93870e5081507"/><file name="Helper.php" hash="006cf5808d03e84000eac2036beb952e"/><file name="Pagehelper.php" hash="aadee63593e70838193d5f2f1ef310be"/><file name="Producthelper.php" hash="de60406f35b975f3b2f35e404cd4c547"/><file name="Suggestionhelper.php" hash="2280c36852e2eae2b36c62b5d0bd5c3f"/></dir><file name="Image.php" hash="ea9d4709be4b267470c00a5916231d7e"/><file name="Logger.php" hash="5ea15edd520a6df07ac1c14bbdeebcad"/></dir><dir name="Model"><dir name="Indexer"><file name="Abstract.php" hash="de73aca20c5105738c158f2ffee3d1c4"/><file name="Algolia.php" hash="5c0a6ee8a1d7f4ad95997d721ce047db"/><file name="Algoliaadditionalsections.php" hash="d8becb2de717726f6af5a9d97bae82de"/><file name="Algoliacategories.php" hash="a9c60970186c9400e21c60d7acd1ae81"/><file name="Algoliapages.php" hash="9d5ec1bc999b30abe1ed8c6efe5ccda1"/><file name="Algoliaqueuerunner.php" hash="9a937caa7fce7ec76c8ccc99dceb4070"/><file name="Algoliasuggestions.php" hash="a7415df589b6ae638a20efad51362736"/></dir><file name="Observer.php" hash="33288dcb47f9bd75c9bd6cfcac947db1"/><file name="Queue.php" hash="17feb2971bdca4517979f40025c28101"/><dir name="Resource"><file name="Engine.php" hash="68918831b54e6492a9a09838ba894b0b"/><dir name="Fulltext"><file name="Collection.php" hash="427390734028a51c07933af668a8f4da"/></dir><file name="Fulltext.php" hash="71ec55e2add4468d1f05d3c65aa4ed77"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="SynonymsFile.php" hash="efa50a5c34a7eda9c3620a8e9a5bc60a"/></dir></dir><file name="Imagetype.php" hash="464ef18a457d636fe3fa122ecec7a8bd"/><file name="Removewords.php" hash="a5fdd6efc3e4375669391be58ce2f604"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="07edd7bca541d4dbeba73c2b70ec53a2"/><file name="config.xml" hash="e0c290027d24e9387508a6fad701b9fc"/><file name="system.xml" hash="b35bdf870efcc9f3503e696857836a30"/></dir><dir name="sql"><dir name="algoliasearch_setup"><file name="mysql4-install-0.1.0.php" hash="561f4f9e9f7021061964330a6c1eccec"/><file name="mysql4-upgrade-0.1.0-1.4.8.php" hash="1fae6deaf608f812844c8639b178cbc7"/><file name="mysql4-upgrade-1.4.8-1.5.0.php" hash="a7eaf9d86daeb0686b1cf03f9ed9c817"/><file name="mysql4-upgrade-1.5.5-1.6.0.php" hash="3aeb056f347896a0ddf888cefd21bfeb"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="algoliasearch.xml" hash="3b29b496938986bdd9bf5cf6fed9dfd3"/></dir><dir name="template"><dir name="algoliasearch"><file name="autocomplete.phtml" hash="9d4d264784fe6c6a407823bda7a677c2"/><file name="instantsearch.phtml" hash="91d7b2c0a51e761dac5190af2ab9d33f"/><dir name="internals"><file name="beforecontent.phtml" hash="19f2ee9532f4e46c77ade0157976b780"/><file name="commonjs.phtml" hash="3d4b7238311d1e8b7f29b9b3c971f21d"/><file name="frontjs.phtml" hash="7d2cdf7bb5c2f47c0f118eac0ba1ead1"/><file name="templateloader.phtml" hash="9dc5f9959d9d257ed4501ad13f143bf3"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="algoliasearch"><file name="adminjs.phtml" hash="d2eef1e2bb7250c76b9bfe5631e07cb2"/></dir></dir><dir name="layout"><file name="algoliasearch.xml" hash="32cf23b67990132a19a13c5c06e1d899"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="algoliasearch"><file name="algolia-admin-menu.png" hash="9202a559c30a43d4d4bbc2f9ee774fd9"/><file name="algolia-logo.png" hash="190884b3e8652f3517754ae15bca31de"/><file name="algoliasearch.css" hash="d7c32abcd1151b88c156bd92253ec5f9"/><file name="cross-circle.png" hash="a9ae2fa7ec458ffaf7c32613ca9593da"/><file name="cross.png" hash="a046cd95cba9761c824063fbd30a26b5"/><dir name="images"><file name="ui-bg_diagonals-thick_18_b81900_40x40.png" hash="62568c006bb1066f40fd5f9cfe4489be"/><file name="ui-bg_diagonals-thick_20_666666_40x40.png" hash="406541454ec466d93217826588335194"/><file name="ui-bg_flat_10_000000_40x100.png" hash="85243ed808c91ae60d33bda3a6bdee3c"/><file name="ui-bg_glass_100_f6f6f6_1x400.png" hash="f912ffca9b1919ab26c64cf1332c5322"/><file name="ui-bg_glass_100_fdf5ce_1x400.png" hash="a9b41e3f4db0fb9be1cd2c649deb253f"/><file name="ui-bg_glass_65_ffffff_1x400.png" hash="ff9e9b45e03f11808144324fd5350612"/><file name="ui-bg_gloss-wave_35_f6a828_500x100.png" hash="08ece8908c07b1c0d18b8db076ff50fc"/><file name="ui-bg_highlight-soft_100_eeeeee_1x100.png" hash="72fe4b0e1bbb83dfd6787989d3583fbe"/><file name="ui-bg_highlight-soft_75_ffe45c_1x100.png" hash="81262299ac7f591fd1763c1ccee0691f"/><file name="ui-icons_222222_256x240.png" hash="3a3c5468f484f07ac4a320d9e22acb8c"/><file name="ui-icons_228ef1_256x240.png" hash="92b29683b6a48eae7de7eb4b1cfa039c"/><file name="ui-icons_ef8c08_256x240.png" hash="f492970693640894fb54166c75dd2925"/><file name="ui-icons_ffd27a_256x240.png" hash="dda1b6f694b0d196aefc66a1d6d758f6"/><file name="ui-icons_ffffff_256x240.png" hash="41612b0f4a034424f8321c9f824a94da"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="algoliasearch"><file name="Function.prototype.bind.js" hash="eb15975feb0cc976face88cb194294ae"/><file name="admin_scripts.js" hash="51e00406b77fd348c8ec0e2b5b31ca9d"/><file name="algoliaAdminBundle.min.js" hash="3fbc3f03f3a1dc6066bd1a2dcd83f9b7"/><file name="algoliaAdminBundle.min.js.map" hash="123220f166565d2cb78f10dce33665a0"/><file name="algoliaBundle.min.js" hash="e65d00e8450c2359c533013446dc9b1b"/><file name="algoliaBundle.min.js.map" hash="73b9d11a497113f5aa1bc837426bd425"/></dir></dir><dir name="lib"><dir name="AlgoliaSearch"><file name="AlgoliaException.php" hash="47e71cc8e04b8be4d1787580179004d2"/><file name="Client.php" hash="10be70e45bcfcb1c0b7fd306d44d1cfa"/><file name="ClientContext.php" hash="86bdbc600f771a2beaead4ee85374d6e"/><file name="Index.php" hash="6347b571f9f400c530ee63b5be8ea3e8"/><file name="IndexBrowser.php" hash="0264b1fb79575229a43627c1c12273ec"/><file name="Json.php" hash="b8790ee1406037369803fa606f258699"/><file name="PlacesIndex.php" hash="bd5f8c04de2573528d44e5277250212a"/><file name="SynonymType.php" hash="9d561527010de52acf1b88daa3100570"/><file name="Version.php" hash="86f6257115eb814164257be2d1c7356f"/><file name="loader.php" hash="7263343ae5271480b7a5ee92b451ca09"/><dir name="resources"><file name="ca-bundle.crt" hash="47961e7ef15667c93cd99be01b51f00a"/></dir></dir></dir></target><target name="magelocale"><dir name="en_GB"><file name="Algolia_Algoliasearch.csv" hash="7f0ef4700cd16726af57270977029528"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.16.2</min><max/></extension><extension><name>json</name><min/><max/></extension></required></dependencies>
23
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>algoliasearch</name>
4
+ <version>1.6.1</version>
5
  <stability>stable</stability>
6
  <license uri="https://github.com/algolia/algoliasearch-magento/blob/master/LICENSE.txt">MIT</license>
7
  <channel>community</channel>
15
  </description>
16
  <notes>Change Log: https://github.com/algolia/algoliasearch-magento/blob/master/CHANGELOG.md</notes>
17
  <authors><author><name>Algolia Team</name><user>algolia</user><email>support@algolia.com</email></author></authors>
18
+ <date>2016-07-18</date>
19
+ <time>12:23:53</time>
20
+ <contents><target name="mageetc"><dir name="modules"><file name="Algolia_Algoliasearch.xml" hash="ec92a66d74344bf1fab9e20ecb3ee4d0"/></dir></target><target name="magecommunity"><dir name="Algolia"><dir name="Algoliasearch"><dir name="Block"><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="AbstractField.php" hash="0c1eab3d33b22a4d817a11784255ec7a"/><file name="AdditionalSections.php" hash="4bbb38cd0f0c2f541db06251921d00f9"/><file name="CategoryAdditionalAttributes.php" hash="154cb5608a72b3878168d0bbb0f6a396"/><file name="CustomRankingCategoryAttributes.php" hash="3ffb61daa1cba35d9b614d61bae86236"/><file name="CustomRankingProductAttributes.php" hash="3e60003894f6590362e4cd84e64dbc22"/><file name="ExcludedPages.php" hash="a3b438416d257db0cfc08d0e60cfcdcf"/><file name="Facets.php" hash="3bb21770e697fc9fd8c92db1b149873c"/><file name="OnewaySynonyms.php" hash="92f4fa0f6d2ba0edb4bdc10f7e925b58"/><file name="ProductAdditionalAttributes.php" hash="88df9e805d2b9d44b50793aee5d9be60"/><file name="Select.php" hash="e9521a9c869b427bca0fe57ea92288a1"/><file name="Sorts.php" hash="943490e9ba84b4849c96f83d83cc0822"/><file name="Synonyms.php" hash="e1e97c828539adfafcd42b4a94151286"/></dir></dir></dir></dir></dir><dir name="Helper"><file name="Algoliahelper.php" hash="a546057f5f589278787dfb58eeb51d0c"/><file name="Config.php" hash="507393691b2297f63fe2fe93e944e78d"/><file name="Data.php" hash="4a73a595a29d794148147c1052cb588f"/><dir name="Entity"><file name="Additionalsectionshelper.php" hash="acef0a12e00e38307350e06f40130760"/><file name="Categoryhelper.php" hash="8214e4df55433d3dffb93870e5081507"/><file name="Helper.php" hash="006cf5808d03e84000eac2036beb952e"/><file name="Pagehelper.php" hash="aadee63593e70838193d5f2f1ef310be"/><file name="Producthelper.php" hash="91e7c1c556be55a9329a716a39a9e2c3"/><file name="Suggestionhelper.php" hash="2280c36852e2eae2b36c62b5d0bd5c3f"/></dir><file name="Image.php" hash="ea9d4709be4b267470c00a5916231d7e"/><file name="Logger.php" hash="5ea15edd520a6df07ac1c14bbdeebcad"/></dir><dir name="Model"><dir name="Indexer"><file name="Abstract.php" hash="de73aca20c5105738c158f2ffee3d1c4"/><file name="Algolia.php" hash="5c0a6ee8a1d7f4ad95997d721ce047db"/><file name="Algoliaadditionalsections.php" hash="d8becb2de717726f6af5a9d97bae82de"/><file name="Algoliacategories.php" hash="a9c60970186c9400e21c60d7acd1ae81"/><file name="Algoliapages.php" hash="9d5ec1bc999b30abe1ed8c6efe5ccda1"/><file name="Algoliaqueuerunner.php" hash="9a937caa7fce7ec76c8ccc99dceb4070"/><file name="Algoliasuggestions.php" hash="a7415df589b6ae638a20efad51362736"/></dir><file name="Observer.php" hash="33288dcb47f9bd75c9bd6cfcac947db1"/><file name="Queue.php" hash="17feb2971bdca4517979f40025c28101"/><dir name="Resource"><file name="Engine.php" hash="68918831b54e6492a9a09838ba894b0b"/><dir name="Fulltext"><file name="Collection.php" hash="427390734028a51c07933af668a8f4da"/></dir><file name="Fulltext.php" hash="71ec55e2add4468d1f05d3c65aa4ed77"/></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="SynonymsFile.php" hash="efa50a5c34a7eda9c3620a8e9a5bc60a"/></dir></dir><file name="Imagetype.php" hash="464ef18a457d636fe3fa122ecec7a8bd"/><file name="Removewords.php" hash="a5fdd6efc3e4375669391be58ce2f604"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="07edd7bca541d4dbeba73c2b70ec53a2"/><file name="config.xml" hash="15ec52e92e652859ff2dccbf25bf5c4a"/><file name="system.xml" hash="5ba20f637856ebc1e40aec5656122b4e"/></dir><dir name="sql"><dir name="algoliasearch_setup"><file name="mysql4-install-0.1.0.php" hash="561f4f9e9f7021061964330a6c1eccec"/><file name="mysql4-upgrade-0.1.0-1.4.8.php" hash="1fae6deaf608f812844c8639b178cbc7"/><file name="mysql4-upgrade-1.4.8-1.5.0.php" hash="a7eaf9d86daeb0686b1cf03f9ed9c817"/><file name="mysql4-upgrade-1.5.5-1.6.0.php" hash="3aeb056f347896a0ddf888cefd21bfeb"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="algoliasearch.xml" hash="96f61498772181873188f1f69c25dacc"/></dir><dir name="template"><dir name="algoliasearch"><dir name="autocomplete"><file name="attribute.phtml" hash="3824426911a04e6eb82231823864ca36"/><file name="category.phtml" hash="8ec78dceca213c3b7dcdf5074c6b712d"/><file name="menu.phtml" hash="61b58ab6e3be1ac57a58744b887bcf62"/><file name="page.phtml" hash="94ffc93fb5fd3fe485123afb1d36cfb5"/><file name="product.phtml" hash="1552bb97f4b4c1773067bf73ba8a9b31"/><file name="suggestion.phtml" hash="c712375e8ab33744ddf65b357ecb8e93"/></dir><file name="autocomplete.phtml" hash="ed68c33934569d12e82156ec86a1ffc6"/><dir name="instantsearch"><file name="facet.phtml" hash="ad5c9247f80d3c9e1d2617211d091d26"/><file name="hit.phtml" hash="f589120afaa78a16a0dd8144251af325"/><file name="refinements.phtml" hash="11eeec7fa9039d7c0ddeb035d91e0757"/><file name="stats.phtml" hash="076a9f331a1c1a044030683ff07e6152"/><file name="wrapper.phtml" hash="03fbdc2f40e62373a1f10c8b205a0be8"/></dir><file name="instantsearch.phtml" hash="a4a44b25188c8561af1c5fa9f6042214"/><dir name="internals"><file name="beforecontent.phtml" hash="19f2ee9532f4e46c77ade0157976b780"/><file name="commonjs.phtml" hash="3d4b7238311d1e8b7f29b9b3c971f21d"/><file name="frontjs.phtml" hash="7d2cdf7bb5c2f47c0f118eac0ba1ead1"/><file name="templateloader.phtml" hash="a27fd0ab259a662ab1b3b8069c52f420"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="algoliasearch"><file name="adminjs.phtml" hash="d2eef1e2bb7250c76b9bfe5631e07cb2"/></dir></dir><dir name="layout"><file name="algoliasearch.xml" hash="32cf23b67990132a19a13c5c06e1d899"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="algoliasearch"><file name="algolia-admin-menu.png" hash="9202a559c30a43d4d4bbc2f9ee774fd9"/><file name="algolia-logo.png" hash="190884b3e8652f3517754ae15bca31de"/><file name="algoliasearch.css" hash="d7c32abcd1151b88c156bd92253ec5f9"/><file name="cross-circle.png" hash="a9ae2fa7ec458ffaf7c32613ca9593da"/><file name="cross.png" hash="a046cd95cba9761c824063fbd30a26b5"/><dir name="images"><file name="ui-bg_diagonals-thick_18_b81900_40x40.png" hash="62568c006bb1066f40fd5f9cfe4489be"/><file name="ui-bg_diagonals-thick_20_666666_40x40.png" hash="406541454ec466d93217826588335194"/><file name="ui-bg_flat_10_000000_40x100.png" hash="85243ed808c91ae60d33bda3a6bdee3c"/><file name="ui-bg_glass_100_f6f6f6_1x400.png" hash="f912ffca9b1919ab26c64cf1332c5322"/><file name="ui-bg_glass_100_fdf5ce_1x400.png" hash="a9b41e3f4db0fb9be1cd2c649deb253f"/><file name="ui-bg_glass_65_ffffff_1x400.png" hash="ff9e9b45e03f11808144324fd5350612"/><file name="ui-bg_gloss-wave_35_f6a828_500x100.png" hash="08ece8908c07b1c0d18b8db076ff50fc"/><file name="ui-bg_highlight-soft_100_eeeeee_1x100.png" hash="72fe4b0e1bbb83dfd6787989d3583fbe"/><file name="ui-bg_highlight-soft_75_ffe45c_1x100.png" hash="81262299ac7f591fd1763c1ccee0691f"/><file name="ui-icons_222222_256x240.png" hash="3a3c5468f484f07ac4a320d9e22acb8c"/><file name="ui-icons_228ef1_256x240.png" hash="92b29683b6a48eae7de7eb4b1cfa039c"/><file name="ui-icons_ef8c08_256x240.png" hash="f492970693640894fb54166c75dd2925"/><file name="ui-icons_ffd27a_256x240.png" hash="dda1b6f694b0d196aefc66a1d6d758f6"/><file name="ui-icons_ffffff_256x240.png" hash="41612b0f4a034424f8321c9f824a94da"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="algoliasearch"><file name="Function.prototype.bind.js" hash="eb15975feb0cc976face88cb194294ae"/><file name="admin_scripts.js" hash="51e00406b77fd348c8ec0e2b5b31ca9d"/><file name="algoliaAdminBundle.min.js" hash="3fbc3f03f3a1dc6066bd1a2dcd83f9b7"/><file name="algoliaAdminBundle.min.js.map" hash="123220f166565d2cb78f10dce33665a0"/><file name="algoliaBundle.min.js" hash="e65d00e8450c2359c533013446dc9b1b"/><file name="algoliaBundle.min.js.map" hash="73b9d11a497113f5aa1bc837426bd425"/></dir></dir><dir name="lib"><dir name="AlgoliaSearch"><file name="AlgoliaException.php" hash="47e71cc8e04b8be4d1787580179004d2"/><file name="Client.php" hash="10be70e45bcfcb1c0b7fd306d44d1cfa"/><file name="ClientContext.php" hash="86bdbc600f771a2beaead4ee85374d6e"/><file name="Index.php" hash="6347b571f9f400c530ee63b5be8ea3e8"/><file name="IndexBrowser.php" hash="0264b1fb79575229a43627c1c12273ec"/><file name="Json.php" hash="b8790ee1406037369803fa606f258699"/><file name="PlacesIndex.php" hash="bd5f8c04de2573528d44e5277250212a"/><file name="SynonymType.php" hash="9d561527010de52acf1b88daa3100570"/><file name="Version.php" hash="86f6257115eb814164257be2d1c7356f"/><file name="loader.php" hash="7263343ae5271480b7a5ee92b451ca09"/><dir name="resources"><file name="ca-bundle.crt" hash="47961e7ef15667c93cd99be01b51f00a"/></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Algolia_Algoliasearch.csv" hash="7f0ef4700cd16726af57270977029528"/></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.16.2</min><max/></extension><extension><name>json</name><min/><max/></extension></required></dependencies>
23
  </package>