Catalog Product Customer Attribute Filter Extension
Catalog Product Customer Attribute Filter - Feature Overview
Every customer sees exactly the products meant for them.
What Is It?
Catalog Product Customer Attribute Filter shows each logged-in customer only the products that match their own profile. You mark products and customers with the same attribute values, for example a customer group, a brand release or a region, and the module takes care of the rest: product lists, categories, search results and filters all respect the rule.
No custom shop per customer, no duplicated catalog. One catalog, many individual views.
Key Features
🎯 Individual Product Ranges
- Match by attributes – products and customers are linked through attributes you choose.
- Everywhere in the shop – category pages, search results, product lists and campaigns only show allowed products.
- Not just hidden – not purchasable – filtered products cannot be bought either.
- Products without a rule stay visible for everyone.
🏢 Made for B2B and Companies
- Employee, company or both – decide whether the attributes of the employee, of the company account, or both count (with the Account Relation Switcher module).
- Works with account switching – the range follows the active account.
🧩 Complete Product Types
- Configurable, bundle and grouped products are filtered including their child products.
- Choose the behavior – show parent products even if all variants are filtered, or hide the unavailable options.
- No broken price display – products whose variants are all filtered no longer cause errors.
🔎 Clean Navigation
- Search and layer filters respect the rule – filter counts match what the customer can actually see.
- Reduced filter options – optionally list only the filter values allowed for the customer.
⚙️ Fast and Controllable
- Prepared in advance – visibility is calculated by an index, so category pages stay fast.
- Reindex control – limit reindexing for imports, API calls or password resets, and stop a long full reindex.
- One click per customer – reindex a single customer from the customer record.
- Logging – optional protocol of the indexing runs.
- API access – re-index customers and products and look up visibility via REST.
Who Is It For?
| You are … | You get … |
|---|---|
| A B2B merchant with different ranges per customer | One catalog, individual views |
| A manufacturer or brand shop with restricted brands | Release only for authorized dealers |
| A company shop with department or location ranges | Each employee sees their own assortment |
| An agency | A ready solution instead of custom filter code |
How It Works
Customer attributes ──┐
├─► Visibility index ─► Lists, search, filters, add to cart
Product attributes ──┘
- You select the attributes that control visibility.
- Customers and products get values for these attributes.
- The index stores who may see which product.
- The shop applies it automatically for every logged-in customer.
Integrations & Requirements
| Platform | Magento 2 (2.4.6 or newer) |
| PHP | 8.1, 8.2, 8.3, 8.4 |
| Optional | Account Relation Switcher for employee / company scopes |
| License | Proprietary (Enobis) |
Use Cases
- Dealers only see the product lines they are authorized to sell.
- Employees of a company see only the products released for their department.
- Regional assortments for franchise locations in one shop.
- Customer-specific ranges for contract customers.
Catalog Product Customer Attribute Filter – one catalog, a personal range for every customer.
Catalog Product Customer Attribute Filter – Documentation
Reference for administrators and integrators of Enobis_CatalogProductCustomerAttributeFilter (enobis/module-catalog-product-customer-attribute-filter).
Table of Contents
- Overview
- Requirements and optional modules
- Installation
- How filtering works
- Configuration reference
- Attributes
- Account relation scope
- Indexers
- Storefront behavior
- Admin features
- REST API
- Data model
- Extension points
- Troubleshooting and known issues
1. Overview
The module limits the catalog per customer. Products and customers carry values for the same EAV attributes. A product is visible to a customer if, for every configured attribute that the product has values for, the customer shares at least one value. A product without values in the configured attributes is visible to everyone. The result is stored in an index table and applied to product collections, layered navigation, search and the salable check.
2. Requirements and optional modules
| Requirement | Version |
|---|---|
| PHP | ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 |
magento/framework |
^102.0.7 || ^103.0.3 |
| Module sequence | Enobis_AccountRelationSwitcher, Magento_Customer, Magento_Catalog |
module.xml lists Enobis_AccountRelationSwitcher in its sequence, but composer.json does not require it. The code checks whether the module is enabled and works without it (scope "All" only).
The code also reads two optional settings of other Enobis modules: customerrole/general/multiple_roles_mode_enabled and chili_editor/my_document/ordered_documents_enabled. With the latter enabled, the filter is skipped on the Chili "shared documents" page (chili/my_document/sharedDocuments).
3. Installation
composer require enobis/module-catalog-product-customer-attribute-filter
bin/magento module:enable Enobis_CatalogProductCustomerAttributeFilter
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
setup:upgrade creates the index table (section 12). Afterwards select the attributes, enable the module and run the indexers (section 8).
4. How filtering works
- The visibility rule (section 1) is evaluated for every combination of product and customer by the indexers and stored in the index table (
visibility1 = visible, 0 = not visible). - In the storefront, the module joins the index to product collections for the current customer (or the customer ids of the current account context, section 7). A product is shown if its entry is
visibleor if no entry exists. - Guests (customer id 0) are not filtered by the salable check, which is skipped for id 0.
5. Configuration reference
Path: Stores > Configuration > Enobis > Catalog Product Customer Attribute Filter (section enobisCatalogProductCustomerAttributeFilter). Scope key: D = default, W = website, S = store view. ACL resource of the module: Enobis_CatalogProductCustomerAttributeFilter::manage (Customers, "Manage Filtering").
5.1 About
| Field | Scope | Description |
|---|---|---|
| Module Version / Composer Version | D | Read-only information |
5.2 General Configuration (.../general)
| Field | Key | Scope | Default | Description |
|---|---|---|---|---|
| Enable | enable |
D W | No | Master switch. The module acts only if it is enabledand at least one attribute is configured |
| Account Relation Scope | account_relation_scope |
D | All | Shown when enabled. Options: All (employee and company attributes), Employee (employee attributes only), Company (company attributes only). Only "All" is offered ifEnobis_AccountRelationSwitcher is not enabled |
| Display Parent Products even all Child Products are filtered | display_filtered_configurable_products |
D W | No | Configurable parents stay visible even if all children are filtered |
| Hide filtered Child Products | hide_not_available_configurable_options |
D W | Yes | Removes filtered options of configurable products on the product page |
| Reduce Options in Layerd Navigation | reduce_layered_navigation_options |
D | No | Removes layered navigation option values of filter attributes that are not allowed for the current customer. Shown when enabled |
| Disable Full Reindex | disable_full_index |
D | No | Skips full reindex runs |
| Attributes | attributes |
D | empty | List of attribute codes (section 6) |
| Stop Full Reindex Process | – | D W S | – | Button; asks a running full reindex to stop (section 10) |
| Enable Logging | enable_logging |
D | No | Writes debug information of the indexers to the log file (section 8) |
5.3 Advanced Settings (.../advanced, scope D)
| Field | Key | Default | Description |
|---|---|---|---|
| Only reindex customer when filter attributes change | disable_unchanged_customer_reindex |
– (no default inconfig.xml, treated as No) |
Skips reindexing a customer on save if all filter attributes are unchanged |
| Disable Indexing for Customer-API-Requests | disable_customer_api_index |
No | No indexing when a customer is saved via REST/SOAP |
| Disable Indexing for Product API-Requests | disable_product_api_index |
No | No indexing when a product is saved via REST/SOAP |
| Disable Indexing for Customer Password Resets | disable_password_reset_index |
No | No indexing when the customer uses the forgot/reset password function |
The calls of the module's own REST endpoints (section 11) always index, regardless of these settings.
6. Attributes
Attributes are configured in the admin field Attributes (one attribute code per row, button "Add Attribute"). These are customer, company and product attributes relevant for filtering.
Older versions defined the attributes in XML files named catalog_product_customer_attribute_filter.xml (module etc/ or theme Enobis_CatalogProductCustomerAttributeFilter/etc/), validated by the shipped XSD. This still works: if such files provide attributes, they are used, otherwise the admin values apply. Format:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Enobis_CatalogProductCustomerAttributeFilter:etc/catalog_product_customer_attribute_filter.xsd">
<attributes>
<attribute name="EAV_ATTRIBUTE_NAME" />
</attributes>
</config>
Supported: single and multi select attributes, matched by value, with fallback to the admin option values (store id 0).
7. Account relation scope
With Enobis_AccountRelationSwitcher enabled the scope decides which customers are indexed and which customer ids are used for filtering:
| Scope | Indexed customers / used ids |
|---|---|
| All | All customers; the customer ids of the current account context |
| Employee | Customers that are not of account typecompany / sub_company; the logged-in customer id |
| Company | Customers of account typecompany / sub_company; the active relation id |
Without the module the logged-in customer id is used and the scope is effectively "All". The product page option cache key (configurable products) includes these ids.
8. Indexers
| Indexer id | Title | Depends on |
|---|---|---|
Enobis_CatalogProductCustomerAttributeFilter_VisibleProduct_Product |
Products Visible To Customers | catalog_product_attribute |
Enobis_CatalogProductCustomerAttributeFilter_VisibleProduct_Customer |
Customers Can See Products | customer_grid |
Both share the index Enobis_CatalogProductCustomerAttributeFilter_VisibleProduct.
- Update on Save: after a product or customer is saved, the module reindexes the row (plugin on
Magento\Catalog\Model\ProductandMagento\Customer\Model\Customer), unless indexing is deactivated for the area (section 5.3) or the indexer runs "by schedule". - Update by Schedule: mview subscriptions exist for
catalog_product_entity_decimal/int/varcharandcustomer_entity_decimal/int/varchar. The indexer.xml comment notes that partial reindexing by schedule does not trigger reliably for these tables. - Full reindex: only for websites on which the module is enabled and when attributes are configured. Products that are not enabled anywhere are removed from the index. It can be stopped from the admin (section 10).
- Cache identities are cleared after indexing.
- Logging: log file
var/log/Enobis_CatProdCustAttrFltr-indexer.log(written when "Enable Logging" is on).
bin/magento indexer:reindex Enobis_CatalogProductCustomerAttributeFilter_VisibleProduct_Product
bin/magento indexer:reindex Enobis_CatalogProductCustomerAttributeFilter_VisibleProduct_Customer
9. Storefront behavior
| Area | Behavior |
|---|---|
| Product lists and categories | Eventcatalog_product_collection_apply_limitations_after (and catalog_block_product_list_collection, campaign_product_list_collection) joins the index to the collection |
| Search and layered navigation | Plugin onMagento\Catalog\Model\Layer and the search filter mapper add the permitted product ids via search_request.xml (enobis_elastic_catalog_product_filter_entity_id). For the MySQL search engine the layer plugin does not apply its filter |
| Salable check | Observer oncatalog_product_is_salable_after: a product without a visible index entry is not salable for the customer; configurable parents stay salable if "Display Parent Products ..." is on |
| Bundle and grouped products | Plugins add the filter to the selections / associated products |
| Configurable products | Hide filtered options (setting), cache key includes the customer ids, and a plugin onConfigurableRegularPrice::isChildProductsOfEqualPrices() prevents the error "Call to a member function getValue() on false" when all children are filtered (returns true, no "As low as" range) |
| Layered navigation options | Optionally reduced to the values the customer has (reduce_layered_navigation_options) |
| Cache info block | Blockcatalog_product_customer_filtercache_info (before body end) prints an HTML comment "no cache info" with the date; removed for guests |
10. Admin features
- Customer edit page: button Reindex product visibility reindexes the current customer and reports the duration.
- Stop Full Reindex Process (configuration): sets a flag; the running full reindex stops after the current product.
- ACL:
Enobis_CatalogProductCustomerAttributeFilter::manage(Customers > Manage Filtering) protects the REST endpoints.
11. REST API
Routes under /V1/catalogProductCustomerAttributeFilter/, all require the ACL resource Enobis_CatalogProductCustomerAttributeFilter::manage:
| Method | URL | Description |
|---|---|---|
| POST | /V1/catalogProductCustomerAttributeFilter/indexCustomer/:customerId |
Reindex one customer (forced, ignores the "disable for API" settings) |
| POST | /V1/catalogProductCustomerAttributeFilter/indexProduct/:productId |
Reindex one product (forced) |
| GET | /V1/catalogProductCustomerAttributeFilter/productVisibility/:customerId |
Returnsproduct_id, visibility and sku entries of the index for the customer; the optional parameter excludeNonVisibleProducts limits the result to visible products |
12. Data model
Table enobis_catalog_product_customer_attribute_filter_index:
| Column | Type | Description |
|---|---|---|
customer_id |
unsigned int | Customer id |
product_id |
unsigned int | Product id |
visibility |
unsigned smallint | 1 = visible, 0 = not visible |
Primary key: (customer_id, product_id); additional indexes on customer_id and product_id (added with the upgrade for version 1.1.1). The attribute skip_next_product_customer_filter_index on the customer is used as a technical marker when "Only reindex customer when filter attributes change" is active.
13. Extension points
- Admin route:
enobis_catalogProductCustomerAttributeFilter(reindex and stop actions). - Events observed (frontend):
catalog_product_collection_apply_limitations_after,catalog_block_product_list_collection,campaign_product_list_collection,catalog_product_is_salable_after,layout_generate_blocks_after,customer_save_before. - Interface:
Enobis\CatalogProductCustomerAttributeFilter\Api\IndexerInterface(the REST service). - Scopes can be extended through the DI argument
scopesofModel\AccountRelationScope. - Translations: en_US, en_IE, de_DE.
14. Troubleshooting and known issues
| Symptom | Check |
|---|---|
| Nothing is filtered | "Enable" = Yes on the website, at least one attribute configured, indexers have run, customer is logged in |
| Customer sees too much / too little | Reindex the customer (button) and check attribute values of product and customer |
| Changes by API/import have no effect | "Disable Indexing for API Requests" is on; use the REST index calls or a full reindex |
| Full reindex does nothing | "Disable Full Reindex" is on, module disabled on all websites, or no attributes configured |
| Facets show unavailable values | Enable "Reduce Options in Layered Navigation"; the MySQL search engine is not filtered by the layer plugin |
| Error with configurable "As low as" price | Fixed by the compatibility plugin when all child products are filtered |
Changelog
1.8.1 (2026-10-13)
-
2026-10-13Fix configurable price error; rewrite docs (eeb778e)Add a frontend plugin on ConfigurableRegularPrice::isChildProductsOfEqualPrices() that returns true when the customer filter removed all child products. This avoids the "Call to a member function getValue() on false" error. It is registered in etc/frontend/di.xml.
Replace readme.md with a README.md that covers features, requirements, installation, configuration and the compatibility fix. Add DOCUMENTATION.md (full reference) and MARKETING.md (feature overview).
1.8.0 (2026-05-20)
-
2026-05-19Add unit test setup traits (d35b46c) -
2026-05-19Add exceptions (71ffc17) -
2026-05-20Tweak code (033c772) -
2026-05-20Add unit tests (29c78c8) -
2026-05-20Allow PHP8.4(575f563) -
2026-05-20Merge branch 'php84-compat' into dev (eba96a2) -
2026-05-20Version 1.8.0 (ef9bf20)Allow PHP
8.4Improve codebase for PHP8.4compatibility#14414
1.7.1 (2026-04-02)
-
2026-04-02Optimization do not write to logfile when logging is disabled in the store configuration (54f5526) -
2026-04-02Version 1.7.1 (38c5664)Optimization do not write to logfile when logging is disabled in the store configuration
1.7.0 (2026-03-19)
-
2026-03-19Tweak code (cdaa1c1)Allow PHP
8.3Drop PHP7.4support -
2026-03-19Version 1.7.0 (1b9a766)Allow PHP
8.3#14375
1.6.17 (2025-11-19)
-
2025-11-19Optimize filter compatibility with third-party extensions (2a3f659) -
2025-11-19Version 1.6.17 (904afcf)Optimize filter compatibility with third-party extensions
1.6.16 (2025-10-23)
-
2025-10-23- Addressing the mage Swatch widget differently (552e5e6) -
2025-10-23Version: 1.6.16 (95ad0a5)Optimisation:
- Addressing the mage Swatch widget differently
1.6.15 (2025-10-08)
-
2025-10-08Add function for getting unique visible products for a list of customer_ids (6fc27ce) -
2025-10-08Version 1.6.15 (f1459be)Add function for getting unique visible products for a list of customer_ids
1.6.14 (2025-10-07)
-
2025-10-07Add rest api function for getting products visibility by customer id (896cf5c) -
2025-10-07Version 1.6.14 (91bda94)Add rest api function for getting products visibility by customer id
1.6.13 (2025-08-01)
-
2025-08-01Add optimization for frontend customer updates to avoid unnecessary re-indexes (8c152b7)when feature is enabled -> all relevant filter attributes are checked for changes and if all new values of filter relevant attributes are identical to the old values -> the reindex is skipped -
2025-08-01Version 1.6.13 (bc85254)Add optimization for frontend customer updates to avoid unnecessary re-indexes
when feature is enabled -> all relevant filter attributes are checked for changes and if all new values of filter relevant attributes are identical to the old values -> the reindex is skipped
1.6.12 (2025-03-26)
-
2025-03-26- Workaround for filtered products on the My-Document Shared-Documents list if OrderedDocumentsEnabled is (583595b) -
2025-03-26Tweak code (34ddce0) -
2025-03-26Version: 1.6.12 (579240b)Optimization:
- Workaround for filtered products on the My-Document Shared-Documents list if OrderedDocumentsEnabled is
1.6.11 (2025-01-28)
-
2025-01-28Fix an issue which prevents magento di compile (f263b41) -
2025-01-28Merge branch 'fixes' into dev (510212c) -
2025-01-28Version 1.6.11 (0d268ef)Fix an issue which prevents magento di compile
1.6.10 (2025-01-27)
-
2025-01-24PHP 8.2 support added (2895af8) -
2025-01-24Introduce.gitattributesto exclude development files (f256074) -
2025-01-24Update README.md (e26c478) -
2025-01-27Tweak code (bef9e18) -
2025-01-27Merge branch 'fixes' into dev (09e6038) -
2025-01-27Version 1.6.10 (f62f934)PHP 8.2 support added
1.6.9 (2024-07-10)
-
2024-07-10disable "forgotPassword reindexing" forgotPassword, should also take effect for resetpw and createnewpw frontend actions (e5228f1) -
2024-07-10version 1.6.9 (19011db)disable "forgotPassword reindexing" forgotPassword, should also take effect for resetpw and createnewpw frontend actions
1.6.8 (2024-07-09)
-
2024-07-09avoid isSalable check when "customerId or productId" are empty (43a9ada)fixes log entry "error in your sql syntax"
-
2024-07-09Tweak Code (ecbaa40) -
2024-07-09version 1.6.8 (e0cf05e)avoid isSalable check when "customerId or productId" are empty fixes log entry "error in your sql syntax"
1.6.7 (2024-06-20)
-
2024-06-20support single/multiple role modes (5c638e0) -
2024-06-20version 1.6.7 (53920c6)support single/multiple role modes
1.6.6 (2024-06-18)
-
2024-06-18add possibility to disable ReIndexing for forgotPassword function (0d68af3) -
2024-06-18version 1.6.6 (9be705b)add possibility to disable ReIndexing for forgotPassword function
1.6.5 (2024-02-26)
-
2024-02-26add webapis: (692f4ce)indexCustomer indexProduct -
2024-02-26version 1.6.5 (59295c6)add webapis: indexCustomer indexProduct
1.6.4 (2024-02-23)
-
2024-02-23add possibility to Disable Indexing for Product API-Requests (7a967fd)add possibility to Disable Indexing for Customer API-Requests
-
2024-02-23version 1.6.4 (5d0e96b)add possibility to Disable Indexing for Product API-Requests add possibility to Disable Indexing for Customer API-Requests
1.6.3 (2023-10-23)
-
2023-10-23add en_IE translation (based on en_US) (10d0455) -
2023-10-23version 1.6.3 (38544f9)add en_IE translation (based on en_US)
1.6.2 (2023-07-20)
-
2023-07-20deactive fullpage cache when filtering is enabled and customer is logged in (7216ad4)keep fullpage cache for anonymous visitors
-
2023-07-20version 1.6.2 (7c2ec1d)deactive fullpage cache when filtering is enabled and customer is logged in keep fullpage cache for anonymous visitors
1.6.1 (2023-06-26)
2023-06-26add assigned_customer_groups to isAttributeWithSharedOptionSource (bbe44f7)2023-06-26add assigned_customer_groups to isAttributeWithSharedOptionSource (3fb63d7)
1.6.0 (2023-06-14)
-
2023-06-14fix for categories that aren't anchors (a630787)(fixes error in magento2 version 2.4.5 system.log main.CRITICAL: Magento\Framework\Exception\LocalizedException: The "enobis_elastic_catalog_product_filter_entity_id" The attribute name is invalid ..)
-
2023-06-14version 1.6.0 (0d77e1b)fix for categories that aren't anchors (fixes error in magento2 version 2.4.5 system.log main.CRITICAL: Magento\Framework\Exception\LocalizedException: The "enobis_elastic_catalog_product_filter_entity_id" The attribute name is invalid ..)
1.5.3 (2023-06-07)
-
2023-06-07layered navigation fix for "not logged in customers" (d29c734) -
2023-06-07version 1.5.3 (61ba2a6)layered navigation fix for "not logged in customers"
1.5.2 (2022-12-19)
-
2022-12-19PHP 8.x compatibility, avoid passing null to string parameters (6adf309) -
2022-12-19version 1.5.2 (ecfd92a)PHP 8.x compatibility, avoid passing null to string parameters
1.5.1 (2022-06-24)
-
2022-06-241.5.1 (cde7d59)functionality to reduce the frontend layered navigation option values of an attribute, when that attribute is also used for visibility filtering. remove option values that are not explicitly allowed for the current customer
1.5.0 (2022-06-09)
-
2022-06-091.5.0 (6c52c77)- performance optimization for account relation switcher module possibility to define which account types are relevant for filtering
- performance optimization for customers that are not relevant (website without filtering,or irrelevant account_type)
1.4.1 (2022-04-25)
-
2022-04-25Version: 1.4.1 (fd82e0a)Bugfix:
- Display of Simple-Products in the DropDown when filtering is activated
1.4.0 (2022-04-04)
-
2022-04-041.4.0 pre filter elastic search queries with permitted products, (38ba16f)Magento requires elastic search starting with Version 2.4 and calculates aggregates partially direct from elastic results see https://orba.co/how-does-elasticsearch-work-with-magento/ for more info, this could effect toolbar sums and aggregate values in the layerd Navigation
1.3.1 (2022-01-20)
-
2022-01-201.3.1 (8b7a0de)Don't index or filter if module is enabled but no attributes are defined
1.3.0 (2022-01-17)
2022-01-171.3.0 Ability to define filter attributes in backend store configuration instead of former xml file based configuration. (feefa50)
1.2.0 (2021-12-02)
2021-12-021.2.0 support campaign product list filtering event (cc15b69)
1.1.1 (2021-11-10)
2021-11-101.1.1 add seperate indexes for product and customer to speed up -> clean up (8123bc9)
1.1.0 (2021-10-04)
-
2021-10-041.1.0 (7586ff3)- magento2 2.4.3 Compatibility
- extensive debug logging can be turned on and off
- optimization avoid entries for products that are not enabled anywhere
- optimization for multi website shops with disabled module on some websites, avoid entries for customers and products that are only on non filtered websites
1.0.1 (2021-02-05)
-
2021-02-05Version 1.0.1 (8bd352b)Allow html in "Customer Attribute Filter Responsible" attribute output Add wysiwyg functionality to "Customer Attribute Filter Responsible" attribute
1.0.0 (2021-01-27)
2021-01-27raise version to 1.0.0 (d646382)
0.6.5 (2021-01-27)
-
2021-01-270.6.5 (180275e)- Better Wording and Tooltips for Config switches
- New Function to Stop a running Full Reindex from the Magento2 Backend
- Only show one of the shared indexers product_customer , customer_product in Backend to avoid unnecessary Index Runs when customers use Backend Reindexing
- Function to disable Full Reindex temporary to make testing easier
0.6.4 (2021-01-27)
-
2021-01-27Version 0.6.4 (a5b9cba)fix: possible empty products list in category view
0.6.3 (2021-01-22)
-
2021-01-22Version 0.6.3 (3aaa7b9)fix: filtered grouped product children products are still visible
0.6.2 (2021-01-08)
-
2021-01-08Version 0.6.2 (465f2de)add system configuration to hide not available configurable options
0.6.1 (2021-01-06)
-
2021-01-06Version 0.6.1 (30cc35a)minor changes
0.6.0 (2021-01-06)
-
2021-01-06Version 0.6.0 (7394480)add system configuration to show configurable products even when no option is available show a message in option area when no option is available
0.5.8 (2020-08-17)
-
2020-08-17Version: 0.5.8 (02289bc)Feature:
- Filterung der Bundle Selections Collection in der Produkt Detailansicht
- About reingebracht
0.5.7 (2020-01-08)
2020-01-080.5.7 Fix Layerd Navigation (keine Produkte erscheinen bei manchen Filtern weil diese doppelt in der Collection sind und dann ein error erzeugt wird) (e85df71)
0.5.6 (2019-12-13)
2019-12-130.5.6 Optimize Full Reindex flush to table after every product and not all on one db transaction (1574c8e)
0.5.5 (2019-11-18)
2019-11-18Fullpage Cache nur für ausgewählte Module ausschalten (3c8c9ea)
0.5.4 (2019-11-17)
2019-11-170.5.4 Disable Full Page Cache if Module is enabled (edcb6f5)
0.5.3 (2019-11-14)
2019-11-14Remove dependency from account relation switcher (3e26ed8)
0.5.3-rc1 (2019-11-14)
2019-11-140.5.3-rc1 (7fb49c4)
0.5.2 (2019-04-23)
2019-04-23Kombination von Attributen erlauben release für live (8eeb0ef)
0.5.2-rc1 (2019-04-04)
-
2018-08-07Initial-Release 0.0.1 (42e920a)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-08-08Version 0.0.2 (49391e1)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-08-14Version 0.0.3 (e14792e)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-08-21Version 0.1.1 (27d0230)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-08-22Version 0.1.2 (Bug mit Filterung von Configurable Products (Cache) behoben) (a07b4d2)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-09-11Version 0.1.3 (719a54f)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-09-12Version 0.2.0 (782df94)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-09-12Version 0.2.1 (c763b86)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-09-13Version 0.3.0 (cbffb07)Signed-off-by: Karl Büdding karl.buedding@enobis.de
-
2018-11-14Fix Message Customer Delete "Notice undefined variable data..." (283996b) -
2018-11-15Raise Version (3098da5) -
2018-12-17Das catalog_block_product_list_collection event war nicht optimal (a49f507)da das review modul u.U. bereits die collection lädt und dann die sql filterung zu spät ist. wegen sequence ist es seit der 0.3.0 Version so dass das review vorher läuft. Daher auf zentraleres event gegangen
-
2019-04-040.5.2-rc1 Fix und Verknüpfung bei mehreren Attributen (b5440ea)
README.md
Enobis CatalogProductCustomerAttributeFilter Extension for Magento2 2.x
Filters products for customers and account relations by EAV attributes: a customer only sees and can only buy products whose attribute values match their own.
Module facts
| Module name | Enobis_CatalogProductCustomerAttributeFilter |
| Composer package | enobis/module-catalog-product-customer-attribute-filter |
| Package type | magento2-module |
| License | Proprietary – © Enobis |
Features
- Builds a visibility index for customer and product entities
- Filters product lists, category pages, search results and layered navigation (facets) based on the index
- Attributes are chosen in the admin configuration
- Account relation scope: employee, company or both (company/employee scopes need
Enobis_AccountRelationSwitcher) - Bundle, grouped and configurable child products are filtered as well
- Option to display parent products even if all child products are filtered, and to hide filtered configurable options
- Option to reduce the options of layered navigation to those allowed for the customer
- Own indexers with optional logging and options to restrict reindexing (API requests, password resets, unchanged attributes)
- Manual reindex of a customer in the admin and REST API endpoints for indexing and visibility lookup
Requirements
| Requirement | Version |
|---|---|
| PHP | ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 |
| Magento | magento/framework ^102.0.7 || ^103.0.3 |
| Module sequence | Enobis_AccountRelationSwitcher, Magento_Customer, Magento_Catalog |
Installation
composer require enobis/module-catalog-product-customer-attribute-filter
bin/magento module:enable Enobis_CatalogProductCustomerAttributeFilter
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
Supported EAV attributes
Single- and multi-select attributes, matched by value, with fallback to the admin option values (eav_attribute_option_value.store_id = 0).
Configuration
Stores > Configuration > Enobis > Catalog Product Customer Attribute Filter:
- General Configuration: enable, account relation scope, display/hide options for configurable products, layered navigation reduction, full reindex control, attributes, logging
- Advanced Settings: restrict reindexing on customer changes, customer and product API requests, password resets
Compatibility fixes
Magento\ConfigurableProduct\Pricing\Price\ConfigurableRegularPrice::isChildProductsOfEqualPrices()crashes with "Call to a member function getValue() on false" when all child products of a configurable are filtered out for the current customer. A frontend plugin returnstrue(no "As low as" price range) in that case.
Documentation
Documentation for all Enobis modules and themes is available at https://docs.enobis.de
Find the complete documentation here.
- MARKETING.md – feature overview for prospective customers
- DOCUMENTATION.md – full feature, configuration, data and interface reference
License
Proprietary. All rights reserved by Enobis.