Einführung in Backend-Filter in Shopware 6
Wenn Sie einen leistungsstarken E-Commerce-Shop auf Shopware 6 aufbauen, ist die Beherrschung der Backend-Filter von Shopware 6 absolut unabdingbar.
Diese umfassende Backend-Filter-Referenz für Shopware 6 führt Sie durch alle verfügbaren Filtertypen, komplett mit Beispielen für PHP-Kriterien und API-Kriterien, damit Ihr Entwicklungsteam oder die Shopware Entwicklungsagentur Ihrer Wahl diese präzise implementieren kann.
Bei iCreative Technologies, a führende Shopware Entwicklungsagentur in DeutschlandWir bieten Top-Bewertungen Shopware Dienstleistungen und Entwicklungslösungen, einschließlich Shopware UI/UX-Entwicklung, kundenspezifische Shopware Entwicklung, Entwicklung von Shopware Plugins, Shopware Theme- und Template-Entwicklung für UI/UX und Optimierung, Shopware Beratung und nahtlose Shopware Integrations- und Migrationsdienste in ganz Deutschland.
Was sind Backend-Filter in Shopware 6?
Backend-Filter in Shopware 6 sind programmgesteuerte Bedingungen, die auf das Criteria-Objekt angewendet werden, wenn die Datenabstraktionsschicht abgefragt wird (DAL). Sie ermöglichen es Ihnen, die Ergebnisse einzugrenzen, indem Sie exakte Werte, Bereiche, Teilübereinstimmungen, logische Kombinationen und Negationen angeben, die alle in präzise SQL-Anweisungen unter der Haube umgesetzt werden.
Shopware 6 bietet folgende Kernfiltertypen:
- Gleich — Exakte Feldübereinstimmung
- EqualsAny – Abgleich mit einer Werteliste
- Enthält — Wildcard-Suche (vorher und nachher)
- Reichweite — Numerische oder datumsbasierte Bereichsfilterung
- Nicht – Negieren Sie alle Filterbedingungen
- Multi — Kombinieren Sie mehrere Filter mit logischen Operatoren
- Präfix — Platzhaltersuche am Anfang eines Werts
- Suffix — Platzhaltersuche am Ende eines Werts
Jeder dieser Shopware Filter kann über die PHP Criteria API (für Plugin- und Backend-Entwicklung) oder die Store API/Admin API (für Headless- und Frontend-Integrationen) genutzt werden.
1. Gleichheitsfilter – Exakte Übereinstimmungsfilterung in Shopware 6
Der Gleicht-Filter ist der einfachste Shopware 6 Filter. Es führt eine exakte Übereinstimmung für ein bestimmtes Feld durch, was einer SQL entspricht WHERE-Feld = Wert Stellungnahme.
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('stock', 10));
Beispiel für API-Kriterien
{
"filter": [
{
"type": "equals",
"field": "stock",
"value": 10
}
]
}
Wann sollte der Gleichheitsfilter verwendet werden?
Verwenden Sie diesen Filter immer dann, wenn Sie Datensätze abrufen müssen, die genau einem einzelnen bekannten Wert entsprechen, beispielsweise um alle Produkte mit einer bestimmten Hersteller-ID, einem bestimmten aktiven Status oder einer definierten Kategoriezuweisung abzurufen. Unser Shopware 6 Entwickler Bei iCreative Technologies wird dieser Filter häufig bei der Entwicklung benutzerdefinierter Shopware Plugins und bei Shopware Entwicklungsdiensten eingesetzt, bei denen ein präziser Datenabruf unerlässlich ist.
2. EqualsAny-Filter – Filtern nach mehreren Werten
Der EqualsAny-Filter ist das Shopware Äquivalent von SQL IN Klausel. Damit können Sie ein Feld mit einer Liste möglicher Werte abgleichen und Datensätze zurückgeben, bei denen mindestens ein Wert genau übereinstimmt.
SQL-Äquivalent: WHERE Produktnummer IN ('3fed029475fa4d4585f3a119886e0eb1', '77d26d011d914c3aa2c197c81241a45b')
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(
new EqualsAnyFilter('productNumber', [
'3fed029475fa4d4585f3a119886e0eb1',
'77d26d011d914c3aa2c197c81241a45b'
])
);
Beispiel für API-Kriterien
{
"filter": [
{
"type": "equalsAny",
"field": "productNumber",
"value": [
"3fed029475fa4d4585f3a119886e0eb1",
"77d26d011d914c3aa2c197c81241a45b"
]
}
]
}
Wann Sie den Shopware EqualsAny-Filter verwenden sollten
Dieser Shopware Filter ist ideal, wenn Sie über einen vordefinierten Satz von IDs oder Werten verfügen, z. B. Massenproduktsuchen, Filterung auf Kategorieebene oder Auftragsverwaltungsworkflows, bei denen Sie mehrere Datensätze anhand ihrer Kennungen in einem einzigen effizienten Aufruf abfragen müssen.
3. Enthält Filter – Näherungswertsuche in Shopware 6
Der Filter „Enthält“ führt eine vollständige Platzhaltersuche durch und fügt vor und nach Ihrem Suchbegriff ein % hinzu. Dies macht es ideal für die Suche nach Teilnamen, den Tag-Abgleich oder die beschreibungsbasierte Filterung.
SQL-Äquivalent: WHERE Name LIKE '%Lightweight%'
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(new ContainsFilter('name', 'Lightweight'));
Beispiel für API-Kriterien
{
"filter": [
{
"type": "contains",
"field": "name",
"value": "Lightweight"
}
]
}
4. Bereichsfilter – Numerische und datumsbasierte Filterung
Der Range-Filter ist einer der leistungsstärksten Shopware 6 Filter für E-Commerce-Anwendungsfälle. Es ermöglicht das Filtern nach numerischen Werten (wie Lagerbeständen oder Preisen) und Datumsfeldern (wie Erstellungsdaten oder geplanten Veröffentlichungszeiten).
Der Bereichsfilter unterstützt vier Operatoren:
| Operator | Bedeutung |
|---|---|
| gte | Größer oder gleich |
| lte | Kleiner oder gleich |
| gt | Größer als |
| lt | Weniger als |
SQL-Äquivalent: WO Bestand >= 20 UND Bestand <= 30
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(
new RangeFilter('stock', [
RangeFilter::GTE => 20,
RangeFilter::LTE => 30
])
);
Beispiel für API-Kriterien
{
"filter": [
{
"type": "range",
"field": "stock",
"parameters": {
"gte": 20,
"lte": 30
}
}
]
}
Wann sollte der Bereichsfilter verwendet werden?
Dieser Filter ist für Preisspannen-Schieberegler, Bestandsverwaltungs-Dashboards, datumsgefilterte Berichte und alle Shopware Entwicklungsszenarien, in denen Benutzer eine Mindest- und Höchstgrenze definieren, unerlässlich. In Kombination mit Shopware Aggregationen unterstützt der Range-Filter die Preisfilter, die Sie auf praktisch jeder professionellen Shopware Storefront sehen, die von einer hochwertigen Shopware 6 Agentur erstellt wurde.
5. Kein Filter – Negative Bedingungen in Shopware 6
Der Nicht filtern ist ein Containerfilter, der andere Filter umschließt und negiert. Es unterstützt beides UND und ODER logische Operatoren, die Ihnen eine detaillierte Kontrolle über die Ausschlusslogik ermöglichen.
SQL-Äquivalent: WHERE !(stock = 1 OR availableStock = 1) AND active = 1
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('active', true));
$criteria->addFilter(
new NotFilter(
NotFilter::CONNECTION_OR,
[
new EqualsFilter('stock', 1),
new EqualsFilter('availableStock', 10)
]
)
);
Beispiel für API-Kriterien
{
"filter": [
{
"type": "not",
"operator": "or",
"queries": [
{
"type": "equals",
"field": "stock",
"value": 1
},
{
"type": "equals",
"field": "availableStock",
"value": 1
}
]
},
{
"type": "equals",
"field": "active",
"value": true
}
]
}
Wann sollte der Nicht-Filter verwendet werden?
Der Nicht-Filter ist für ausschlussbasierte Abfragen unverzichtbar, um nicht vorrätige Produkte auszublenden, inaktive Kategorien auszuschließen, bestimmte Tags aus Einträgen zu entfernen oder eine Empfehlungslogik zum Ausschließen bereits gesehener Empfehlungen zu erstellen. Es ist ein Markenzeichen fortschrittlicher Shopware Entwicklung und ein Filter für uns Shopware 6 Spezialist bei iCreative Technologies verlassen sich beim Aufbau komplexer Katalogregeln darauf.
6. Multifilter – Kombinieren von Filtern mit logischen Operatoren
Der Multi-Filter ist der Container der Wahl, wenn Sie mehrere Shopware Filter unter einer einzigen logischen UND- oder ODER-Bedingung kombinieren müssen. Stellen Sie sich das so vor, als würden Sie Filterbedingungen in SQL in Klammern gruppieren.
SQL-Äquivalent: WO (Bestand = 1 ODER verfügbarer Bestand = 1) UND aktiv = 1
Beispiel für PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(
new MultiFilter(
MultiFilter::CONNECTION_OR,
[
new EqualsFilter('stock', 1),
new EqualsFilter('availableStock', 10)
]
)
);
$criteria->addFilter(new EqualsFilter('active', true));
Beispiel für API-Kriterien
{
"filter": [
{
"type": "multi",
"operator": "or",
"queries": [
{
"type": "equals",
"field": "stock",
"value": 1
},
{
"type": "equals",
"field": "availableStock",
"value": 1
}
]
},
{
"type": "equals",
"field": "active",
"value": true
}
]
}
Bereit für die Skalierung mit Shopware 6?
Holen Sie sich einen zukunftsfähigen Shopware Shop, der auf Geschwindigkeit, Flexibilität und Ergebnisse ausgelegt ist.
Filter 7: Präfix – Schnellere Starts mit der Suche
Das Szenario: Ein Kunde gibt „Light“ in ein Suchfeld ein und Sie möchten Produkte zurückgeben, deren Name mit dieser Zeichenfolge beginnt. Oder Sie möchten alle SKUs, die mit „SW-2024-“ beginnen. Sie wissen, dass das Spiel immer am Anfang des Feldes stattfindet.
Hier übertrifft Präfix in puncto Leistung die Funktion „Contains“. Weil der Platzhalter nur am ist Ende — LIKE 'Wert%' – Die Datenbank kann tatsächlich einen Index für dieses Feld verwenden. Es ist deutlich schneller als der doppelte Platzhalter „Contains“ in großen Katalogen.
SQL unter der Haube: WHERE Name LIKE 'Lightweight%'
PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(new PrefixFilter('name', 'Lightweight'));
API-Kriterien
{
"filter": [
{
"type": "prefix",
"field": "name",
"value": "Lightweight"
}
]
}
Wann sollte Präfix anstelle von „Enthält“ gewählt werden?
Verwenden Sie den Präfixfilter, wenn Ihr Suchbegriff am Anfang des Feldwerts erscheint, z. B. bei Autovervollständigungsvorschlägen, SKU-Suchen, Kategoriepfadabgleich oder Shopware SEO-URL-Slug-Suchen.
Für die automatische Vervollständigung ist die Kombination von Prefix mit einer begrenzten Ergebnismenge der optimale Ansatz. Die Verwendung von „Contains“ in diesem Szenario ist ein häufiger Fehler, da dadurch mehr Daten gescannt werden und dies insbesondere bei großen Datensätzen zu spürbaren Leistungseinbußen führen kann.
Filter 8: Suffix – Ends-With-Übereinstimmung
Das Szenario: Sie möchten alle Produkte, deren Name mit einem bestimmten Begriff endet. Denken Sie an Variantensuffixe wie „-XL“ oder „-REFURBISHED“, Dateitypindikatoren oder Namenskonventionen, bei denen am Ende immer ein bestimmtes Qualifikationsmerkmal steht.
Suffix ist der Spiegel von Prefix. Der Platzhalter steht vor dem Wert – LIKE '%value'.
SQL unter der Haube: WHERE Name LIKE '%Lightweight'
PHP-Kriterien
$criteria = new Criteria();
$criteria->addFilter(new SuffixFilter('name', 'Lightweight'));
API-Kriterien
{
"filter": [
{
"type": "suffix",
"field": "name",
"value": "Lightweight"
}
]
}
Echte Shopware 6 Filterkombinationen, die Sie tatsächlich verwenden werden
Theorie ist eine Sache. So sehen Filterkombinationen in tatsächlichen Shopware Entwicklungsprojekten aus.
Alle aktiven Produkte in einer Preisklasse anzeigen, die nicht ausverkauft sind:
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('active', true));
$criteria->addFilter(
new RangeFilter('price', [
RangeFilter::GTE => 20,
RangeFilter::LTE => 200
])
);
$criteria->addFilter(
new NotFilter(
NotFilter::CONNECTION_AND,
[new EqualsFilter('stock', 0)]
)
);
Finden Sie Produkte mehrerer Hersteller, die ein Schlüsselwort enthalten:
$criteria = new Criteria();
$criteria->addFilter(
new MultiFilter(
MultiFilter::CONNECTION_AND,
[
new ContainsFilter('name', 'Lightweight'),
new EqualsAnyFilter('manufacturerId', [
'abc123',
'def456',
'ghi789'
])
]
)
);
Shopware 6 Filter + Aggregationen: Das Duo, das die mehrschichtige Navigation ermöglicht
Filter funktionieren nicht isoliert in einem echten Schaufenster. Sie arbeiten Hand in Hand mit Shopware Aggregationen. Das bedeutet in der Praxis Folgendes:
Wenn ein Kunde „Preis: 50–150 € In Ihrem Storefront-Filterfeld passieren zwei Dinge gleichzeitig. Zunächst schränkt ein Filter die Produktergebnismenge auf diese Preisspanne ein. Zweitens berechnet eine Aggregation die Anzahl neben jeder anderen Filteroption neu, sodass die Größenoptionen, Farboptionen und Herstelleroptionen dynamisch aktualisiert werden, um nur das widerzuspiegeln, was innerhalb dieser Preisspanne verfügbar ist.
Diese Facettennavigation in Echtzeit, die Funktion, die Shopware Storefronts schnell und intuitiv erscheinen lässt, wird durch Filter und Aggregationen unterstützt, die innerhalb desselben Kriterienobjekts zusammenarbeiten.
$criteria = new Criteria();
$criteria->addFilter(new RangeFilter('price', [
RangeFilter::GTE => 50,
RangeFilter::LTE => 150
]));
$criteria->addAggregation(
new StatsAggregation('price-range', 'price')
);
$criteria->addAggregation(
new TermsAggregation('manufacturer-count', 'manufacturerId')
);
So verbinden sich Filter mit Shopware Twig-Funktionen auf der Storefront
Das ist etwas, was viele auf Administratoren ausgerichtete Leitfäden übersehen: Backend-Filter werden nicht automatisch zu Storefront-Filtern. Sie benötigen eine Brücke über Twig und den Listing Page Loader.
Wenn eine Seite mit einer Kategorieauflistung geladen wird, sammelt Shopware Anforderungseingaben, erstellt ein Kriterienobjekt mit Filtern, führt die Abfrage aus und übergibt Ergebnisse sowie Aggregationsdaten an Twig, das die Filter-Benutzeroberfläche rendert.
Wenn Sie also einen benutzerdefinierten Filter hinzufügen (z. B. „Versand innerhalb von 24 Stunden“), Sie müssen die Backend-Logik mit dem Storefront-Rendering verbinden.
- Erstellen Sie eine
ListingFilterHandlerdas erstreckt sichAbstractListingFilterHandler - Registrieren Sie es als Dienst beim
shopware.listing.filter_handlerEtikett - Behandeln Sie die Aggregation in
Aggregat()und die Filteranwendung inVerfahren() - Rendern Sie es in Ihrer Twig-Vorlage unter Verwendung der an die Seite übergebenen Filterdaten
Die Shopware SEO URL Twig-Funktion seo_url() Auch hier interagiert, wenn Filterauswahlen angewendet und die URL aktualisiert werden. Richtig konfigurierte SEO-URLs stellen sicher, dass gefilterte Seiten von Suchmaschinen indiziert werden können und nicht als doppelter Inhalt behandelt werden. Dies ist für E-Commerce-SEO im großen Maßstab von enormer Bedeutung.
Die häufigsten Filterfehler, die wir bei iCreative Technologies beheben
Fehler 1: „Contains“ für alles verwenden. Entwickler greifen zu ContainsFilter, weil es bei Teilübereinstimmungen „funktioniert“. Aber in einem Katalog mit 50.000 Produkten führt die Angabe „Enthält“ bei jeder Sucheingabe zu langsamen Abfragen. Der Fix verwendet Prefix, wo möglich, Elasticsearch für die Volltextsuche und Contains nur dort, wo es wirklich benötigt wird.
Fehler 2: Multi vs. Top-Level-AND nicht verstehen. Jeder Filter wurde direkt hinzugefügt $criteria->addFilter() wird auf der obersten Ebene UND-verknüpft. Entwickler, die eine ODER-Logik zwischen zwei Bedingungen wünschen, aber MultiFilter nicht verwenden, erhalten Abfragen, die keine Ergebnisse zurückgeben, weil sie versehentlich verlangt haben, dass beide Bedingungen gleichzeitig wahr sind.
Fehler 3: Filterwerte fest codieren, die dynamisch sein sollten. Hardcodierung neuer EqualsFilter('aktiv', wahr) an zehn verschiedenen Orten bedeutet, dass Sie zehn Dateien durchsuchen, wenn sich die Geschäftslogik ändert. Zentralisieren Sie die Filterlogik in dedizierten Diensten.
iCreative Technologies – Deutschlands führende Shopware Entwicklungsagenturices.
Wenn Sie bis hierhin gelesen haben, verstehen Sie die Filter von Shopware 6 jetzt besser als die meisten Entwickler, die seit Monaten mit der Plattform arbeiten. Aber Filter zu verstehen ist eine Sache.
Wir sind Shopware Entwicklungsunternehmen mit Sitz in Deutschland, und Shopware ist kein Nebenerwerb für uns , es ist unser Kern.
Unser erfahrenes Team Shopware 6 Entwickler hat Shopware, benutzerdefinierte Plugins, Headless-Frontends, B2B-Portale und ERP-Integrationen auf Shopware für Kunden in ganz Deutschland, Österreich, der Schweiz und darüber hinaus erstellt.
Was uns von anderen Agenturen unterscheidet:
- Mehr als 11 Jahre praktische Shopware Entwicklungsexpertise
- Umfangreiches Fachwissen in den Bereichen Shopware Support, Erweiterungen, Apps und Theme-Anpassung
- Hochwertige Arbeit zu angemessenen Shopware Entwicklungskosten
- Durchgängige Shopware Entwicklungskompetenz
- Offizielle Shopware Partneragentur
- Shopware Support rund um die Uhr für Ihre Website
Shopware Entwicklungsdienstleistungen (End-to-End-Lösungen)
1. Entwicklung eines neuen Shopware Shops
Wir entwerfen und entwickeln vollständig maßgeschneiderte Shopware 6 Shops, die auf Leistung, Skalierbarkeit und Konvertierungen ausgelegt sind.
2. Shopware 5 auf Shopware 6 Migration
Nahtlose Migration ohne Datenverlust, verbesserte Architektur und gesteigerte Leistung durch moderne Shopware 6 Funktionen.
3. Benutzerdefinierte Plugin-Entwicklung
Maßgeschneiderte Shopware Plugins zur Erweiterung der Funktionalität, Automatisierung von Arbeitsabläufen und Erfüllung einzigartiger Geschäftsanforderungen.
4. Leistungsoptimierung
Beschleunigen Sie Ihren Shop mit fortschrittlichen Optimierungstechniken, einschließlich Frontend-Verbesserungen, Datenbankoptimierung und Core Web Vitals-Verbesserungen.
5. Headless Shopware Entwicklung
Erstellen Sie flexible, API-orientierte Handelserlebnisse mithilfe einer Headless-Architektur für bessere Skalierbarkeit und Omnichannel-Reichweite.
6. Laufender Support und Wartung
Kontinuierliche Überwachung, Updates und technischer Support, um Ihren Shopware Shop sicher, stabil und zukunftssicher zu halten.
Shopware 6 Backend-Filter: Kurzanleitung
| Filter | PHP-Klasse | API-Typ | SQL-Muster | Verwenden Sie Wann |
|---|---|---|---|---|
| Gleich | EqualsFilter | gleicht | = Wert | Eine exakte Wertübereinstimmung |
| EqualsAny | EqualsAnyFilter | ist gleichAny | IN (…) | Übereinstimmung aus einer Liste |
| Enthält | EnthältFilter | enthält | LIKE „%value%“ | Teiltext irgendwo |
| Reichweite | RangeFilter | Reichweite | >= x UND <= y | Zahlen, Daten, Preise |
| Nicht | NotFilter | keine | NICHT (…) | Bedingungen ausschließen |
| Multi | MultiFilter | multi | (A ODER B) UND C | Gruppieren mit ODER-Logik |
| Präfix | PräfixFilter | Präfix | LIKE ‚Wert%‘ | Beginnt mit der Suche |
| Suffix | SuffixFilter | Suffix | LIKE ‚%value‘ | Endet mit der Suche |
Letzter Gedanke
Das Shopware 6 Filtersystem ist leistungsstark und präzise. Die meisten Herausforderungen ergeben sich aus der Auswahl der richtigen Filter und der skalierten Leistungsverwaltung, nicht aus dem System selbst.
Dieser Leitfaden hilft Ihnen, komplexe Abfragen effektiv zu strukturieren. Speichern Sie es, teilen Sie es mit Ihrem Team und verwenden Sie es als Referenz.
Wenn Sie eine Shopware Entwicklungsagentur benötigen, die diese Informationen von Anfang an erhält, wissen Sie, wo Sie uns finden können.