Abweichende Artikeldaten Help

Entwicklung

Architektur in Kürze

Das Plugin bringt kein eigenes Datenmodell mit. Es hängt sich an den Artikel und stellt an drei Stellen dieselbe Frage: Darf dieser Kunde diesen Artikel haben?

CustomerAssignment ┌─────────┴──────────┐ isAccessible() searchFilter() ┌────┴─────┐ │ ProductSubscriber Collector ProductSearchAssignmentSubscriber (Seite, Suche) (Warenkorb) (jede Produktsuche mit Suchbegriff)

Die Regel selbst liegt in einer einzigen Klasse, Content\CustomProduct\CustomerAssignment. Seite und Warenkorb rufen isAccessible() beide auf — genau deshalb kann eine Variante, die die Seite ausliefert, im Warenkorb nicht plötzlich verschwinden. Die Produktsuche nutzt dieselbe Regel als DAL-Filter (searchFilter()). Die Store-API-Route CustomProductsRoute ruft die Regel nicht auf: Sie filtert nur auf die Kundenzuweisung des angemeldeten Kunden.

Baustein

Klasse

Aufgabe

Zugriffsregel

Content\CustomProduct\CustomerAssignment

Beantwortet die Zugriffsfrage — die einzige Stelle mit der Logik

Seite & Suche

Subscriber\ProductSubscriber

Detailseite, Suche und Suggest; Ersatzsuche (zugängliche Variante oder Vaterartikel) über ProductCheckEvent

Produktsuche

Subscriber\ProductSearchAssignmentSubscriber

Setzt CustomerAssignment::searchFilter() auf jede Produktsuche mit Suchbegriff

Warenkorb

Content\Cart\Collector

Entfernt fremde Positionen, korrigiert den Child-Count

Store-API

Content\Route\CustomProducts\CustomProductsRoute

Liste der eigenen Artikel

Artikelfelder

Content\Extension\ProductExtension

Laufzeitfelder direct_assignment und customer_assignment

Abhängigkeiten

Paket

Rolle

shopware/core, shopware/storefront, shopware/administration ~6.7.0

Plattform

leoparden/business-transactions: ~6.7.0

Basis für CMS-Element und Storefront-JS

leoparden/plugin-license-manager: ^1

Lizenzprüfung im Plugin-Lebenszyklus

@leoparden/plugin-tools-storefront

AbstractEntityListingPlugin für die Liste

@leoparden/business-transactions-storefront

Filter und Antwortverarbeitung

Die Kopplung an BusinessTransactions ist eng: Das Twig-Element erweitert @BusinessTransactions/storefront/element/transactions_base_element.html.twig, und das Storefront-Plugin importiert seoUrls sowie ProcessTransactionResponseFunction daraus.

Weiter im Detail

  • Backend — Zugriffsregel, Warenkorb, Store-API, Events

  • Frontend — CMS-Element, Storefront-Plugin, Administration

Last modified: 08 November 2026