Klevu Module v4.x Overview

Version Comparison

4min

Improvements

  • PHPUnit Integration tests with code coverage ~80%.
  • PHPCS to a stricter standard than Magento.
  • PHPStan to Level 6 (Level 9 for non-Magento modules, e.g. PHP-SDK)
  • Separation of concerns, each module can be removed if not required.

Frontend

  • Setting of Theme JS settings via the admin.
  • Single URL for search results.
  • Addition of recommendations banner widget.
  • Correct filtering of visibility without any customisation.
  • Correct currency conversion including symbols defined in Magento.
  • Move Javascript to page end where possible.
  • Add Javascript to the head in a non-blocking manner where possible.
  • Remove all Klevu code from the checkout

Indexing (Data Sync)

  • Switch to Klevu JSON indexing from XML indexing.
  • Removal of on-the-fly calculation of indexing actions.
  • Customer group pricing includes catalog price rules.
  • Use Magento image generation for Klevu images.


 

v2.x/v3.x

v4.x

Plugin

Migrated from Magento 1.

Purpose-built for Magento 2 following Magento’s best practice.

PHP support

5.6+ Limits PHP features that can be used, e.g. type hints. Versions of PHP that are EOL contain security bugs.

8.1+ Make full use of newer PHP features (type hints, named args, null safe op, etc..) Performance improvements from newer versions of PHP.

Magento Support

2.1.18 - 2.4.6

Includes workarounds for missing features, core bugs, etc.. Support for the old version means v2.x of the extension cannot be listed on Magento Marketplace.

2.4.4+

Only supports Magento versions supported by Adobe.

Future Klevu Development

Will receive feature updates until v4.x General Availability and security updates for 1 year after the launch.

Will receive all new features, including message queues for indexing and analytics, partial product data sync and multi-store integration with one API key.

Klevu API

XML API

JSON API

Test Code Coverage

~14%

~80%

PHPCS compliant

No

Yes, to a stricter standard than Magento’s PHPCS.

PHPStan compliant

No

Yes, to level 6 for the Magento modules (level 9 for PHP-SDK and PHP-pipelines)

Separation of concerns

Indexing and search code mixed in the same module.

A module for each feature. Indexing, frontend and analytics are separated. Each indexing entity type and frontend solution is added via separate modules. Designed to have non-required modules removed via composer replace.

Object Manager

Is used in the code and can not be removed due to circular dependencies.

No usage outside of Magento's best practice guidelines (e.g. constructor arguments, factories or tests).

Can code be modified via plugins?

Not all due to some variables passed by reference.

Yes, this is the recommended way of modifying all Klevu code.

Klevu JS Theme customisations

Via a custom module only.

Via admin settings, themes or a custom modules.

Search Results URL

Custom URL /search can not be changed. Magento results URL is also available at /catalogsearch/result causing duplicate content.

Reuses the Magento search URL /catalogsearch/result can be changed as required. Toggle between Klevu Theme JS results and Magento via a URL parameter.

Recommendations Banners

Code has to be added manually. Code provided via KMC does not work with dynamic blocks.

Added via a widget with an option to make it compatible with dynamic blocks. Only the recs banner ID is required.

Custom Product Types

Possible, but not simple to implement. Requires preferencing classes which could lead to breaking the upgrade path for the module.

Built with custom product types in mind. Inject an entityProvider class for the custom type via di.xml

Custom Entity Types

Possible, but not simple to implement. Requires preferencing classes and breaking the upgrade path for the module.

Built with custom entity types in mind. Inject an entityIndexerService class for the new type via di.xml

Entity data sent to Klevu during indexing.

Syncs many attributes which may not be required by your store.

Sync only the data required for your store.

Customisation of entity data sent to Klevu during indexing.

Requires preferencing a class and breaking the upgrade path for the module.

Uses Klevu YAML pipelines which can be overridden by injecting your own YAML file via di.xml. Option to auto-generate YAML for custom attributes. No code is required to add data to indexing.

Indexing next action calculation

During indexing the action to perform is calculated on the fly. This can be extremely resource-heavy and time-consuming for larger stores.

The next action is calculated in advance of the sync and stored in the database tables. Sync then reads those tables and performs the required action.

Klevu script tags

Multiple script tags are added that should have been combined into one.

Reduction in the number of tags added.

Klevu interactive

Is in use. Klevu JS waits until page is interactive before firing.

Removed. Klevu JS executes immediately. Any Klevu JS that has other dependencies is handled via webhooks and is executed when available.

Headless Frontend

Frontend modules have to remain installed, enabled and enabled in the config.

All fronted modules can be removed via composer replace if a headless implementation is required.