Skip to content

Commit 823cea0

Browse files
authored
Merge pull request #1738 from algolia/feat/MAGE-985-instantsearch-redirect
MAGE-985 InstantSearch redirects
2 parents e59fbea + 6b06a0e commit 823cea0

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

Block/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ public function getConfiguration()
371371
'products' => __('Products'),
372372
'suggestions' => __('Suggestions'),
373373
'searchBy' => __('Search by'),
374+
'redirectSearchPrompt' => __("Continue search for"),
374375
'searchForFacetValuesPlaceholder' => __('Search for other ...'),
375376
'showMore' => __('Show more products'),
376377
'searchTitle' => __('Search results for'),

view/frontend/layout/algolia_search_handle.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<css src="Algolia_AlgoliaSearch::css/autocomplete.css" />
55
<css src="Algolia_AlgoliaSearch::css/grid.css" />
66
<css src="Algolia_AlgoliaSearch::css/algolia-reset.css" />
7-
<css src="Algolia_AlgoliaSearch::css/instantsearch.v3.css" />
7+
<css src="Algolia_AlgoliaSearch::css/instantsearch.css" />
88
<css src="Algolia_AlgoliaSearch::css/recommend.css" />
99
</head>
1010
<body>

view/frontend/templates/instant/wrapper.phtml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<!-- Wrapping template -->
44
<script type="text/template" id="instant_wrapper_template">
5-
6-
75
<div id="algolia_instant_selector"
86
class="<?php echo $block->escapeHtml($block->hasFacets() ? ' with-facets' : ''); ?>">
97
<div class="row">
@@ -41,6 +39,7 @@
4139
<div class="algolia-clearfix"></div>
4240
</div>
4341
<div id="algolia-banner"></div>
42+
<div id="instant-redirect-container"></div>
4443
<div id="instant-empty-results-container"></div>
4544
<div id="instant-search-results-container"></div>
4645
</div>

view/frontend/web/css/instantsearch.v3.css renamed to view/frontend/web/css/instantsearch.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,3 +318,8 @@ button.ais-CurrentRefinements-delete:focus {
318318
padding: 3em 0;
319319
text-align: center;
320320
}
321+
322+
.instant-redirect {
323+
margin: 3em 0 1em 0;
324+
text-align: center;
325+
}

view/frontend/web/js/instantsearch.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ define([
3030

3131
dynamicWidgets: [],
3232

33+
hasInteracted: false,
34+
3335
///////////////////////////
3436
// Main build functions //
3537
///////////////////////////
@@ -183,7 +185,7 @@ define([
183185

184186
return allWidgetConfiguration;
185187
},
186-
188+
187189
/**
188190
* Process a passed widget config object and add to InstantSearch
189191
* Dynamic widgets are deferred as they must be aggregated and processed separately
@@ -419,6 +421,7 @@ define([
419421
placeholder: algoliaConfig.translations.searchFor,
420422
showSubmit : false,
421423
queryHook : (inputValue, search) => {
424+
this.hasInteracted = true;
422425
if (
423426
algoliaConfig.isSearchPage &&
424427
!algoliaConfig.request.categoryId &&
@@ -966,6 +969,12 @@ define([
966969
if (algoliaConfig.showSuggestionsOnNoResultsPage) {
967970
customWidgets.push(this.getSuggestionsWidget(this.minQuerySuggestions));
968971
}
972+
973+
// Placeholder for config
974+
const allowRedirects = true;
975+
if (allowRedirects) {
976+
customWidgets.push(this.getRedirectWidget());
977+
}
969978
return customWidgets;
970979
},
971980

@@ -1052,6 +1061,26 @@ define([
10521061
};
10531062
},
10541063

1064+
getRedirectWidget() {
1065+
const uiComponnent = this;
1066+
return {
1067+
render({ results }) {
1068+
let content = '';
1069+
if (results && results.renderingContent) {
1070+
if (results.renderingContent.redirect) {
1071+
if (!uiComponnent.hasInteracted) {
1072+
window.location.href = results.renderingContent.redirect.url;
1073+
}
1074+
content += `<div class="instant-redirect">`;
1075+
content += `<a href="${results.renderingContent.redirect.url}">${algoliaConfig.translations.redirectSearchPrompt} "${results.query}"</a>`;
1076+
content += `</div>`;
1077+
}
1078+
}
1079+
document.querySelector('#instant-redirect-container').innerHTML = content;
1080+
},
1081+
};
1082+
},
1083+
10551084
////////////////////////////
10561085
// Merchandising //
10571086
////////////////////////////

0 commit comments

Comments
 (0)