nosto / module-nostocmp
nosto/module-nostocmp
Nosto Category Merchandising extension for Magento 2
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/jsonfor 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
- Fix PHP SDK version constraint clash with Nosto's Magento 2 base module
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
getCmpResultreturn only value ofCategoryMerchandisingResult - Refactor logging and exception throwing
1.0.2
- Use
Product\Collectioninstead ofFulltext\Collection - Add exceptions for easier debug
1.0.1
- Update naming convention
1.0.0
- Initial implementation of Nosto CMP extension
| 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.
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.
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.
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
| 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
| 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.
More from nosto
View vendorTurn 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.