enobis/module-catalog-product-customer-attribute-filter v1.8.1

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  ──┘
  1. You select the attributes that control visibility.
  2. Customers and products get values for these attributes.
  3. The index stores who may see which product.
  4. 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

  1. Overview
  2. Requirements and optional modules
  3. Installation
  4. How filtering works
  5. Configuration reference
  6. Attributes
  7. Account relation scope
  8. Indexers
  9. Storefront behavior
  10. Admin features
  11. REST API
  12. Data model
  13. Extension points
  14. 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

  1. The visibility rule (section 1) is evaluated for every combination of product and customer by the indexers and stored in the index table (visibility 1 = visible, 0 = not visible).
  2. 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 visible or if no entry exists.
  3. 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\Product and Magento\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/varchar and customer_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 scopes of Model\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-13 Fix 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-19 Add unit test setup traits (d35b46c)

  • 2026-05-19 Add exceptions (71ffc17)

  • 2026-05-20 Tweak code (033c772)

  • 2026-05-20 Add unit tests (29c78c8)

  • 2026-05-20 Allow PHP 8.4 (575f563)

  • 2026-05-20 Merge branch 'php84-compat' into dev (eba96a2)

  • 2026-05-20 Version 1.8.0 (ef9bf20)

    Allow PHP 8.4 Improve codebase for PHP 8.4 compatibility

    #14414

1.7.1 (2026-04-02)

  • 2026-04-02 Optimization do not write to logfile when logging is disabled in the store configuration (54f5526)

  • 2026-04-02 Version 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-19 Tweak code (cdaa1c1)

    Allow PHP 8.3 Drop PHP 7.4 support

  • 2026-03-19 Version 1.7.0 (1b9a766)

    Allow PHP 8.3

    #14375

1.6.17 (2025-11-19)

  • 2025-11-19 Optimize filter compatibility with third-party extensions (2a3f659)

  • 2025-11-19 Version 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-23 Version: 1.6.16 (95ad0a5)

    Optimisation:

    • Addressing the mage Swatch widget differently

1.6.15 (2025-10-08)

  • 2025-10-08 Add function for getting unique visible products for a list of customer_ids (6fc27ce)

  • 2025-10-08 Version 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-07 Add rest api function for getting products visibility by customer id (896cf5c)

  • 2025-10-07 Version 1.6.14 (91bda94)

    Add rest api function for getting products visibility by customer id

1.6.13 (2025-08-01)

  • 2025-08-01 Add 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-01 Version 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-26 Tweak code (34ddce0)

  • 2025-03-26 Version: 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-28 Fix an issue which prevents magento di compile (f263b41)

  • 2025-01-28 Merge branch 'fixes' into dev (510212c)

  • 2025-01-28 Version 1.6.11 (0d268ef)

    Fix an issue which prevents magento di compile

1.6.10 (2025-01-27)

  • 2025-01-24 PHP 8.2 support added (2895af8)

  • 2025-01-24 Introduce .gitattributes to exclude development files (f256074)

  • 2025-01-24 Update README.md (e26c478)

  • 2025-01-27 Tweak code (bef9e18)

  • 2025-01-27 Merge branch 'fixes' into dev (09e6038)

  • 2025-01-27 Version 1.6.10 (f62f934)

    PHP 8.2 support added

1.6.9 (2024-07-10)

  • 2024-07-10 disable "forgotPassword reindexing" forgotPassword, should also take effect for resetpw and createnewpw frontend actions (e5228f1)

  • 2024-07-10 version 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-09 avoid isSalable check when "customerId or productId" are empty (43a9ada)

    fixes log entry "error in your sql syntax"

  • 2024-07-09 Tweak Code (ecbaa40)

  • 2024-07-09 version 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-20 support single/multiple role modes (5c638e0)

  • 2024-06-20 version 1.6.7 (53920c6)

    support single/multiple role modes

1.6.6 (2024-06-18)

  • 2024-06-18 add possibility to disable ReIndexing for forgotPassword function (0d68af3)

  • 2024-06-18 version 1.6.6 (9be705b)

    add possibility to disable ReIndexing for forgotPassword function

1.6.5 (2024-02-26)

  • 2024-02-26 add webapis: (692f4ce)

    indexCustomer
    indexProduct
    
  • 2024-02-26 version 1.6.5 (59295c6)

    add webapis: indexCustomer indexProduct

1.6.4 (2024-02-23)

  • 2024-02-23 add possibility to Disable Indexing for Product API-Requests (7a967fd)

    add possibility to Disable Indexing for Customer API-Requests

  • 2024-02-23 version 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-23 add en_IE translation (based on en_US) (10d0455)

  • 2023-10-23 version 1.6.3 (38544f9)

    add en_IE translation (based on en_US)

1.6.2 (2023-07-20)

  • 2023-07-20 deactive fullpage cache when filtering is enabled and customer is logged in (7216ad4)

    keep fullpage cache for anonymous visitors

  • 2023-07-20 version 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-26 add assigned_customer_groups to isAttributeWithSharedOptionSource (bbe44f7)
  • 2023-06-26 add assigned_customer_groups to isAttributeWithSharedOptionSource (3fb63d7)

1.6.0 (2023-06-14)

  • 2023-06-14 fix 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-14 version 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-07 layered navigation fix for "not logged in customers" (d29c734)

  • 2023-06-07 version 1.5.3 (61ba2a6)

    layered navigation fix for "not logged in customers"

1.5.2 (2022-12-19)

  • 2022-12-19 PHP 8.x compatibility, avoid passing null to string parameters (6adf309)

  • 2022-12-19 version 1.5.2 (ecfd92a)

    PHP 8.x compatibility, avoid passing null to string parameters

1.5.1 (2022-06-24)

  • 2022-06-24 1.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-09 1.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-25 Version: 1.4.1 (fd82e0a)

    Bugfix:

    • Display of Simple-Products in the DropDown when filtering is activated

1.4.0 (2022-04-04)

  • 2022-04-04 1.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-20 1.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-17 1.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-02 1.2.0 support campaign product list filtering event (cc15b69)

1.1.1 (2021-11-10)

  • 2021-11-10 1.1.1 add seperate indexes for product and customer to speed up -> clean up (8123bc9)

1.1.0 (2021-10-04)

  • 2021-10-04 1.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-05 Version 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-27 raise version to 1.0.0 (d646382)

0.6.5 (2021-01-27)

  • 2021-01-27 0.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-27 Version 0.6.4 (a5b9cba)

    fix: possible empty products list in category view

0.6.3 (2021-01-22)

  • 2021-01-22 Version 0.6.3 (3aaa7b9)

    fix: filtered grouped product children products are still visible

0.6.2 (2021-01-08)

  • 2021-01-08 Version 0.6.2 (465f2de)

    add system configuration to hide not available configurable options

0.6.1 (2021-01-06)

  • 2021-01-06 Version 0.6.1 (30cc35a)

    minor changes

0.6.0 (2021-01-06)

  • 2021-01-06 Version 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-17 Version: 0.5.8 (02289bc)

    Feature:

    • Filterung der Bundle Selections Collection in der Produkt Detailansicht
    • About reingebracht

0.5.7 (2020-01-08)

  • 2020-01-08 0.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-13 0.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-18 Fullpage Cache nur für ausgewählte Module ausschalten (3c8c9ea)

0.5.4 (2019-11-17)

  • 2019-11-17 0.5.4 Disable Full Page Cache if Module is enabled (edcb6f5)

0.5.3 (2019-11-14)

  • 2019-11-14 Remove dependency from account relation switcher (3e26ed8)

0.5.3-rc1 (2019-11-14)

  • 2019-11-14 0.5.3-rc1 (7fb49c4)

0.5.2 (2019-04-23)

  • 2019-04-23 Kombination von Attributen erlauben release für live (8eeb0ef)

0.5.2-rc1 (2019-04-04)

  • 2018-08-07 Initial-Release 0.0.1 (42e920a)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-08-08 Version 0.0.2 (49391e1)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-08-14 Version 0.0.3 (e14792e)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-08-21 Version 0.1.1 (27d0230)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-08-22 Version 0.1.2 (Bug mit Filterung von Configurable Products (Cache) behoben) (a07b4d2)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-09-11 Version 0.1.3 (719a54f)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-09-12 Version 0.2.0 (782df94)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-09-12 Version 0.2.1 (c763b86)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-09-13 Version 0.3.0 (cbffb07)

    Signed-off-by: Karl Büdding karl.buedding@enobis.de

  • 2018-11-14 Fix Message Customer Delete "Notice undefined variable data..." (283996b)

  • 2018-11-15 Raise Version (3098da5)

  • 2018-12-17 Das 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-04 0.5.2-rc1 Fix und Verknüpfung bei mehreren Attributen (b5440ea)

README.md

Enobis CatalogProductCustomerAttributeFilter Extension for Magento2 2.x

Author Release Stability Magento2 PHP Versions

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 returns true (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.