Upgrading to a New Version
After installation, you can use Composer (recommended) or Magento’s extension manager to update your Algolia integration.
Using Composer
-
Run Composer’s update command to update the extension to the newest version:
Copy$
composer update algolia/algoliasearch-magento-2
-
After updating the extension, save the configuration again even if you didn’t change the settings. To do this, navigate to Stores > Configuration > Algolia Search and hit save.
-
After saving the configuration, reindex your Magento indices according to the indexing instructions.
Read the change log for any additional steps that you need to take.
Using the extension manager
Upgrade your extension using Magento’s extension manager in your store’s back office: Stores > Tools > Web Setup Wizard > Extension Manager
Read the Magento developer documentation for more information on updating your extension.
After upgrading
If enabled, it’s recommended that you clear your indexing queue and perform a full reindex after you have upgraded your extension. This prevents call_user_func_array()
errors generated from deprecated or renamed job methods that have been stored before your upgrade.
To clear your indexing queue:
- Go to Stores > Algolia Search > Indexing Queue
- Click the Clear Queue button.
- Perform a complete reindex afterward by running the following command from the root of your Magento project:
$
php bin/magento indexer:reindex algolia_products algolia_categories algolia_pages algolia_suggestions algolia_additional_sections
Upgrading to version 3 for Magento 2.4 compatibility
The Magento 2.4 release introduced several significant changes, including removing the MySQL search engine option.
To be compatible with Magento version 2.4, Algolia’s extension (starting from version 3.x) doesn’t include back-end rendering features that rely on the MySQL search adapter classes.
Legacy versions (v1.x and v2.x) of the extension aren’t compatible with Magento 2.4, and Algolia dropped support for these legacy branches at the end of 2020.
If you’re running Magento 2.4, you must install version 3.x of the extension to ensure compatibility.
The benefits of upgrading from version 2 to version 3
- You get the latest version of InstantSearch and API client and all their new features
- Improved performance and a significant reduction in the number of search requests sent
- Better indexing queue logs
- Support for Magento 2.4
- Help from Algolia’s Support team (you need to be on version 3 for that).
Upgrading from version 1 to version 2
Version 2 updates:
- Algolia PHP client from version 1 to version 2
- InstantSearch from version 2 to version 4.
Upgrading to version 2 from version 1 will break your Algolia integration. The following guidance indicates solutions to these breaking changes.
Customization
Review the InstantSearch migration guide to help upgrade any front-end customizations you may have made.
Styling
The algoliasearch.css
style sheet was removed and restructured into the following files:
view/frontend/web/internals/algolia-reset.css
view/frontend/web/internals/grid.css
view/frontend/web/internals/autocomplete.css
view/frontend/web/internals/instantsearch.v3.css
Algolia introduced a reset theme to simplify theme customization.
Templates
Templates have a new HTML structure and modified class names:
view/frontend/templates/instant/wrapper.phtml
view/frontend/templates/instant/stats.phtml
view/frontend/templates/instant/hit.phtml
view/frontend/templates/instant/facet.phtml
You must copy these changes to your customized template for the update to work.
Layout
view/frontend/layout/algolia_search_handle.xml
You must copy these changes to your customized template for the update to work.
JavaScript
There are several changes included with the InstantSearch upgrade. Refer to the migration guide’s change log if you’re experiencing JavaScript errors with your customizations after the upgrade.
If you’ve overridden the extension’s JavaScript files, they have changed as well:
view/frontend/web/internals/common.js
view/frontend/web/instantsearch.js
view/frontend/web/click_conversion_analytics.js
has been replaced byview/frontend/insights.js
.
Search parameters
Configuring searchParameters
on instantSearchOptions
is no longer supported: instead, you must pass the arguments with the configure
widget. If you have any customizations to modify searchParameters
, you need to change the event from beforeInstantsearchInit
to beforeWidgetInitialization
.
See the example below of how to add a new ruleContexts
with beforeWidgetInitialization
:
1
2
3
4
5
6
algolia.registerHook('beforeWidgetInitialization', function (allWidgetConfiguration) {
allWidgetConfiguration.configure = allWidgetConfiguration.configure || {};
allWidgetConfiguration.configure.ruleContexts.push('new-context');
return allWidgetConfiguration;
});
collapsible
The collapsible
widget option has been replaced with the collapsed
option in the new panel
widget introduced in InstantSearch v3. The panel
widget wraps other widgets in a consistent panel design. The extension exposes it by adding panelOptions
to the widget options, which accepts an object of options for the panel
widget.
You can access the panelOptions
using the beforeWidgetInitialization
event:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
algolia.registerHook('beforeWidgetInitialization', function (
allWidgetConfiguration,
algoliaBundle
) {
for (var i = 0; i < allWidgetConfiguration.refinementList.length; i++) {
// Example which updates the header of a widget using `panelOptions`
var panelOptions = allWidgetConfiguration.refinementList[i].panelOptions;
panelOptions.templates['header'] =
'<div class="updated-header">Updated Title</div>';
allWidgetConfiguration.refinementList[i].panelOptions = panelOptions;
}
return allWidgetConfiguration;
});
searchBox
The searchBox
widget was upgraded in InstantSearch version 3 and no longer accepts input fields as containers anymore. To account for this change, the extension updated the wrapper template so that the default configuration for the InstantSearch input targets a <div>
element:
1
<div id="instant-search-bar"></div>
If your search input isn’t working, ensure that the upgrade correctly updated the view/frontend/templates/instant/wrapper.phtml
file.
Routing
The uiState
has been updated and is no longer backward-compatible with InstantSearch version 1. This affects users who have modified routing methods from the common.js
file.