nosto / module-nostocmp

nosto/module-nostocmp

Nosto Category Merchandising extension for Magento 2

magento2-module Compatibility: 2.4.7 Code Quality: Fail Tests: N/A Security: Fail OSL-3.0

Category Merchandising extension for Magento 2

With Category Merchandising, you can arm some of your highest trafficked pages with your own customized merchandising rules using our Sorting and Highlighting capabilities. These allow you to simultaneously sequence your category pages according to specific merchandising goals and highlight specific products by heroing them, and placing them in the forefront of your users.

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

5.4.0

  • Add compatibility with OpenSearch implementation

5.3.2

  • Update nosto/module-nostotagging package to ^8.0.0

5.3.1

  • Add nullcheck to avoid logging errors when the current category is not a regular Magento Category

5.3.0

  • Improve compatibility with Magento 2.4.6

5.2.2

  • Restore totalPrimaryCount result from GraphQL query as product count in order to fix an issue with pagination.

5.2.1

  • Fix product counter by using total products that have been rendered instead of totalPrimaryCount result from GraphQL query.

5.2.0

  • Update nosto/module-nostotagging package to ^7.0.0

5.1.0

  • Add support for Magento 2 GrahpQl filters

5.0.1

  • Fix parsing existing query params for product URL generation

5.0.0

  • Adds compatibility with PHP 8 and bumps minimum PHP version as 7.4
  • Adds compatibility with Magento 2.4.4 and module-nostotagging >6.0

4.0.4

  • Add compatibility meta tag for CMP

4.0.3

  • Fix GraphQl response when querying the same page more than once

4.0.2

  • Fix pagination when CM is disabled

4.0.1

  • Fix empty results issues on Magento's GraphQl pagination

4.0.0

  • Remove support for MySQL as search engine
  • Move CategoryMerchandising util to php-sdk
  • Refactor Merchandise service

3.3.3

  • Fix fallback sorting issue on GraphQl when merchandising is not enabled

3.3.2

  • Fix category page issue on GraphQl when merchandising is not enabled

3.3.1

  • Fix sorting for CM result served through Magento's GraphQl

3.3.0

  • Fix incorrect products number in filters
  • Add support for subcategory filtering
  • Display general nosto sorting when customer is missing
  • Fix search page bug for MySQL and ElasticSearch
  • Introduce possibility to define page size through DI
  • Fix facet mapping to Nosto's include parameters
  • Fix pagination issue in Elasticsearch
  • Fix filter's price format issue

3.2.2

  • Add ACL resource for the module

3.2.1

  • Build boolean filters for CMP

3.2.0

  • Add configuration to select fallback sorting for relevance

3.1.2

  • Improve logging for getting filter values

3.1.1

  • Fix version in composer file

3.1.0

  • Cache category mapping block
  • Render magento sorting directly when Nosto customer cookie is missing
  • Render frontend layouts only when CM configuration is enabled
  • Fix CM not displaying Nosto sorting when batchToken is null
  • Fix issue where filters were not passed when using MySQL
  • Return Magento sorting when CM call fails
  • Fix Magento products graphql query pagination issue
  • Add support for fetching more than 250 products from Nosto
  • Add category merchandising support for headless (graphql) implementations

3.0.0

  • Add support for using Elasticsearch as a catalog search engine
  • Introduce possibility to use all categories (not only the ones in navigation) with Nosto's category merchandising

2.0.3

  • Fix the default max product limit configuration and set the default value to be 250 which is the current max products limit in Nosto

2.0.2

  • Introduce possibility to define maximum amount of products to be fetched from Nosto to support category pages with that allow all products to be viewed

2.0.1

  • Change the script type to application/json for category mapping
  • Add possibility to debug the category query via Magento's debug logging
  • Remove redundant Magento's internal full page cache busting logic
  • Fix the category page sorting issue when additional / default category sorting is in use

2.0.0

  • Update Nosto PHP-SDK dependency to 5.0.0
  • Update compatibility with NostoTagging Module 5.0

1.2.2

1.2.1

  • Fix bug related to Nosto sorting option in admin category page

1.2.0

  • Add tagging for module version
  • Add fragment to product urls served by CMP
  • Add block for hashed categories mapping
  • Add sort order tagging
  • Remove attribution from product url
  • Remove secondary sorting query

1.1.0

  • Enable support for Full Page Cache using cache variation

1.0.4

  • Fix issue where cache was disabled for every page

1.0.3

  • Function getCmpResult return only value of CategoryMerchandisingResult
  • Refactor logging and exception throwing

1.0.2

  • Use Product\Collection instead of Fulltext\Collection
  • Add exceptions for easier debug

1.0.1

  • Update naming convention

1.0.0

  • Initial implementation of Nosto CMP extension
Versions
Version Stability QA Status Compatibility Released
5.4.0 stable Fail Magento 2.4.7 Details 2025-10-14 13:01:14
5.3.2 stable Not tested Not yet tested Details 2025-07-28 10:14:39
5.3.1 stable Not tested Not yet tested Details 2023-06-28 12:32:10
5.3.0 stable Not tested Not yet tested Details 2023-04-11 11:57:05
5.2.2 stable Not tested Not yet tested Details 2023-01-04 08:44:46
5.2.1 stable Not tested Not yet tested Details 2022-12-14 10:04:02
5.2.0 stable Not tested Not yet tested Details 2022-11-18 12:18:20
5.1.0 stable Not tested Not yet tested Details 2022-10-24 10:58:28
5.0.1 stable Not tested Not yet tested Details 2022-10-11 11:48:02
5.0.0 stable Not tested Not yet tested Details 2022-05-27 11:31:22
4.0.4 stable Not tested Not yet tested Details 2022-04-06 11:07:15
4.0.3 stable Not tested Not yet tested Details 2022-03-24 08:59:08
4.0.2 stable Not tested Not yet tested Details 2022-03-07 13:14:45
4.0.1 stable Not tested Not yet tested Details 2022-02-25 12:22:06
4.0.0 stable Not tested Not yet tested Details 2022-01-17 08:24:26
3.3.3 stable Not tested Not yet tested Details 2022-01-14 09:41:59
3.3.2 stable Not tested Not yet tested Details 2022-01-07 15:04:29
3.3.1 stable Not tested Not yet tested Details 2021-12-10 10:37:31
3.3.0 stable Not tested Not yet tested Details 2021-12-07 13:38:04
3.3.0-rc8 RC Not tested Not yet tested Details 2021-11-18 15:34:30
3.3.0-rc7 RC Not tested Not yet tested Details 2021-11-05 11:30:30
3.3.0-rc6 RC Not tested Not yet tested Details 2021-10-13 13:11:34
3.3.0-rc5 RC Not tested Not yet tested Details 2021-10-08 13:13:43
3.3.0-rc4 RC Not tested Not yet tested Details 2021-10-06 13:07:19
3.3.0-rc3 RC Not tested Not yet tested Details 2021-09-28 10:51:56
3.3.0-rc2 RC Not tested Not yet tested Details 2021-09-22 11:21:54
3.3.0-rc1 RC Not tested Not yet tested Details 2021-09-17 11:52:44
3.2.2 stable Not tested Not yet tested Details 2021-07-13 11:51:03
3.2.1 stable Not tested Not yet tested Details 2021-05-28 10:20:17
3.2.0 stable Not tested Not yet tested Details 2021-04-16 12:23:17
3.1.2 stable Not tested Not yet tested Details 2021-03-12 13:26:04
3.1.1 stable Not tested Not yet tested Details 2021-03-11 14:21:11
3.1.0 stable Not tested Not yet tested Details 2021-02-18 14:31:15
3.0.0 stable Not tested Not yet tested Details 2021-02-18 13:23:49
3.1.0-rc7 RC Not tested Not yet tested Details 2021-02-08 12:56:25
3.1.0-rc6 RC Not tested Not yet tested Details 2021-01-28 08:53:28
3.1.0-rc5 RC Not tested Not yet tested Details 2020-12-14 13:15:22
3.1.0-rc4 RC Not tested Not yet tested Details 2020-11-17 13:39:54
3.1.0-rc3 RC Not tested Not yet tested Details 2020-10-28 13:20:57
3.1.0-rc2 RC Not tested Not yet tested Details 2020-10-27 14:01:25
3.1.0-rc1 RC Not tested Not yet tested Details 2020-10-26 11:05:06
2.0.3 stable Not tested Not yet tested Details 2020-10-14 07:19:35
2.0.2 stable Not tested Not yet tested Details 2020-10-12 10:29:05
3.0.0-rc1 RC Not tested Not yet tested Details 2020-09-17 12:40:18
2.0.1 stable Not tested Not yet tested Details 2020-08-14 09:01:47
2.0.0 stable Not tested Not yet tested Details 2020-06-09 08:54:05
1.2.2 stable Not tested Not yet tested Details 2020-06-04 12:56:41
1.2.1 stable Not tested Not yet tested Details 2020-06-01 09:30:00
1.2.0 stable Not tested Not yet tested Details 2020-05-28 13:45:41
1.1.0 stable Not tested Not yet tested Details 2020-04-24 13:55:23
1.0.4 stable Not tested Not yet tested Details 2020-03-20 11:58:47
1.0.3 stable Not tested Not yet tested Details 2020-03-04 14:15:14
1.0.2 stable Not tested Not yet tested Details 2020-02-19 14:35:15
1.0.1 stable Not tested Not yet tested Details 2020-01-20 13:43:27
1.0.0 stable Not tested Not yet tested Details 2019-12-05 15:24:49
1.0.0-rc1 RC Not tested Not yet tested Details 2019-10-25 12:34:37

Requires 4

Package Constraint
nosto/module-nostotagging ^8.0
nosto/php-sdk >=5.5.0
php >=7.4
ext-json *

Requires-dev 15

Package Constraint
magento-ecg/coding-standard 3.*
magento/module-store 101.1.2
magento/zendframework1 1.14.3
mridang/pmd-annotations ^0.0.2
staabm/annotate-pull-request-from-checkstyle ^1.1
magento/magento-coding-standard ^5.0
phan/phan 5.3.0
phpmd/phpmd ^2.6
sebastian/phpcpd 4.1.0
drenso/phan-extensions 3.5.1
phing/phing 2.*
squizlabs/php_codesniffer ^3.5
magento/module-layered-navigation 100.4.2
magento/module-catalog-graph-ql 100.4.2
magento/module-elasticsearch *

Compatibility

Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.

Compatibility matrix (Magento × PHP)
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 Pass Pass
2.4.8 Pass Fail di error
2.4.9 Fail di error Fail di error

Code Quality

Advisory checks against the module's source. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge — a phpcs finding can't make a module incompatible.

Static analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

Static analysis results
Tool Status Findings Summary
PHPCS Warning 54 54 warnings (ruleset: Magento2) — 4 auto-fixable with phpcbf
PHPMD Warning 10 10 rule violations (UnusedFormalParameter:10)
Cpd Pass 0
Composer validate Info 2 valid; 2 advisory notes (composer validate --strict)

PHPStan

Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases. Cell → details modal.

PHPStan results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 146 146
2.4.8 147 147
2.4.9 150 150

Tests

Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.

Unit tests

Unit tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Integration tests

Integration tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Security

Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.

Security results
Tool Status Findings Summary
Composer audit Fail 4 4 advisories (medium:3, high:1); 1 high+, 3 medium/unknown, 0 low
Malware scan Pass 0
License
OSL-3.0

More from nosto

View vendor
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.