Skip to content

Commit 56ac3fc

Browse files
authored
Set hierarhicalUiState to current path v4 (#974)
1 parent fd5c207 commit 56ac3fc

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

view/frontend/web/instantsearch.js

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ requirejs(['algoliaBundle', 'Magento_Catalog/js/price-utils'], function (algolia
6868
* For rendering instant search page is used Algolia's instantsearch.js library
6969
* Docs: https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/
7070
**/
71-
71+
7272
var ruleContexts = ['magento_filters', '']; // Empty context to keep BC for already create rules in dashboard
7373
if (algoliaConfig.request.categoryId.length > 0) {
7474
ruleContexts.push('magento-category-' + algoliaConfig.request.categoryId);
@@ -79,13 +79,14 @@ requirejs(['algoliaBundle', 'Magento_Catalog/js/price-utils'], function (algolia
7979
}
8080

8181
var searchClient = algoliaBundle.algoliasearch(algoliaConfig.applicationId, algoliaConfig.apiKey);
82+
var indexName = algoliaConfig.indexName + '_products';
8283
var searchParameters = {
8384
hitsPerPage: algoliaConfig.hitsPerPage,
8485
ruleContexts: ruleContexts
8586
};
8687
var instantsearchOptions = {
8788
searchClient: searchClient,
88-
indexName: algoliaConfig.indexName + '_products',
89+
indexName: indexName,
8990
searchFunction: function (helper) {
9091
if (helper.state.query === '' && !algoliaConfig.isSearchPage) {
9192
$('.algolia-instant-replaced-content').show();
@@ -99,17 +100,6 @@ requirejs(['algoliaBundle', 'Magento_Catalog/js/price-utils'], function (algolia
99100
routing: window.routing,
100101
};
101102

102-
if (algoliaConfig.request.path.length > 0 && window.location.hash.indexOf('categories.level0') === -1) {
103-
if (algoliaConfig.areCategoriesInFacets === false) {
104-
searchParameters['facetsRefinements'] = {};
105-
searchParameters['facetsRefinements']['categories.level' + algoliaConfig.request.level] = [algoliaConfig.request.path];
106-
} else {
107-
searchParameters['hierarchicalFacetsRefinements'] = {
108-
'categories.level0': [algoliaConfig.request.path]
109-
}
110-
}
111-
}
112-
113103
instantsearchOptions = algolia.triggerHooks('beforeInstantsearchInit', instantsearchOptions, algoliaBundle);
114104

115105
var search = algoliaBundle.instantsearch(instantsearchOptions);
@@ -118,7 +108,7 @@ requirejs(['algoliaBundle', 'Magento_Catalog/js/price-utils'], function (algolia
118108

119109
/** Prepare sorting indices data */
120110
algoliaConfig.sortingIndices.unshift({
121-
name: algoliaConfig.indexName + '_products',
111+
name: indexName,
122112
label: algoliaConfig.translations.relevance
123113
});
124114

@@ -417,8 +407,9 @@ requirejs(['algoliaBundle', 'Magento_Catalog/js/price-utils'], function (algolia
417407
var customAttributeFacet = {
418408
categories: function (facet, templates) {
419409
var hierarchical_levels = [];
420-
for (var l = 0; l < 10; l++)
410+
for (var l = 0; l < 10; l++) {
421411
hierarchical_levels.push('categories.level' + l.toString());
412+
}
422413

423414
var hierarchicalMenuParams = {
424415
container: facet.wrapper.appendChild(createISWidgetContainer(facet.attribute)),

view/frontend/web/internals/common.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ requirejs(['algoliaBundle'], function(algoliaBundle) {
572572
routeToState: function (routeParameters) {
573573
var productIndexName = algoliaConfig.indexName + '_products';
574574
var uiStateProductIndex = {}
575-
575+
576576
uiStateProductIndex['query'] = routeParameters.q == '__empty__' ? '' : routeParameters.q;
577577
if (algoliaConfig.isLandingPage && typeof uiStateProductIndex['query'] === 'undefined' && algoliaConfig.landingPage.query != '') {
578578
uiStateProductIndex['query'] = algoliaConfig.landingPage.query;
@@ -606,6 +606,9 @@ requirejs(['algoliaBundle'], function(algoliaBundle) {
606606
uiStateProductIndex['hierarchicalMenu']['categories.level0'] = landingPageConfig['categories.level0'].split(' /// ');
607607
}
608608
}
609+
if (currentFacet.attribute == 'categories' && algoliaConfig.isCategoryPage) {
610+
uiStateProductIndex['hierarchicalMenu']['categories.level0'] = [algoliaConfig.request.path];
611+
}
609612
// Handle sliders
610613
if (currentFacet.type == 'slider') {
611614
uiStateProductIndex['range'][currentFacet.attribute] = routeParameters[currentFacet.attribute] && routeParameters[currentFacet.attribute];
@@ -628,7 +631,7 @@ requirejs(['algoliaBundle'], function(algoliaBundle) {
628631
}
629632
uiStateProductIndex['sortBy'] = routeParameters.sortBy;
630633
uiStateProductIndex['page'] = routeParameters.page;
631-
634+
632635
var uiState = {};
633636
uiState[productIndexName] = uiStateProductIndex;
634637
return uiState;

0 commit comments

Comments
 (0)