regelbasierte Sortierung ohne Commerce-Lizenz
Der Visual Merchandiser ist eine Commerce-Funktion, aber Merchandising-Regeln für Kategorien lassen sich auch in Magento Open Source technisch nachbauen. Wer Produktreihenfolge an Lagerbestand, Marge und Verkaufszahlen koppeln will, braucht ein Verständnis von Positionswerten, Plugin-Punkten am Produkt-Collection und der Auswirkung auf den Katalog-Index.
Inhaltsverzeichnis
- 1. Was Category Merchandising bedeutet und warum es Umsatz treibt
- 2. Sortierreihenfolge: Position vs. dynamische Regeln
- 3. Eigene Merchandising-Regeln ohne Commerce implementieren
- 4. Produkt-Pinning und regelbasiertes Ausblenden
- 5. Regeln auf Basis von Lagerbestand, Marge und Neuheit
- 6. Anchor- vs. Non-Anchor-Kategorien und generierte Listen
- 7. A/B-Testing von Sortierstrategien
- 8. Performance-Auswirkungen komplexer Sortierregeln
- 9. Merchandising-Ansätze im direkten Vergleich
- 10. Zusammenfassung
- 11. FAQ
1. Was Category Merchandising bedeutet und warum es Umsatz treibt
Category Merchandising beschreibt die bewusste Steuerung der Produktreihenfolge auf Kategorieseiten, orientiert an Geschäftszielen statt an einer neutralen Standardsortierung. Ein Produkt mit hoher Marge, aktuell hoher Verfügbarkeit und starker saisonaler Relevanz sollte auf einer stark frequentierten Kategorieseite weiter oben stehen als ein Produkt, das diese Kriterien nicht erfüllt, unabhängig vom Alphabet oder vom reinen Erstellungsdatum.
In Magento Commerce übernimmt der Visual Merchandiser diese Aufgabe mit einer grafischen Drag-and-Drop-Oberfläche. In Magento Open Source fehlt dieses Werkzeug, was viele Projekte dazu verleitet, Merchandising-Regeln komplett zu ignorieren und Produkte nur nach Position oder Name zu sortieren. Das ist ein vermeidbarer Umsatzverlust, denn die technischen Bausteine für regelbasiertes Category Merchandising, Collection-Plugins, eigene Sortierattribute und Index-Erweiterungen, sind auch ohne Commerce-Lizenz vollständig verfügbar.
Der wirtschaftliche Hebel ist real messbar: Kategorieseiten sind oft der Einstiegspunkt für Kunden ohne konkretes Produkt im Kopf, und die ersten sichtbaren Produkte beeinflussen die Kaufentscheidung überproportional stark. Gutes Category Merchandising lenkt diese Aufmerksamkeit gezielt auf Produkte, die dem Geschäft am meisten nützen, ohne die Relevanz für den Kunden zu opfern.
2. Sortierreihenfolge: Position vs. dynamische Regeln
Magentos Standard-Sortierung basiert auf einem statischen position-Wert pro Produkt-Kategorie-Zuordnung, gespeichert in catalog_category_product. Diese Positionswerte werden im Admin manuell gepflegt und ändern sich nicht automatisch, wenn sich Lagerbestand oder Verkaufszahlen ändern. Für kleine, selten wechselnde Sortimente ist das ausreichend, für dynamische Kataloge mit häufigen Preis- und Bestandsänderungen wird die statische Position schnell zur Wartungslast.
Merchandising-Regeln, die dynamisch auf aktuelle Daten reagieren, benötigen einen anderen Ansatz: Statt eine feste Position zu speichern, wird die Sortierreihenfolge zur Laufzeit aus mehreren Attributen berechnet, etwa einer gewichteten Kombination aus Verkaufszahlen, Marge und Lagerbestand. Diese Berechnung kann entweder direkt in der Produkt-Collection erfolgen oder, performanter, bereits im Katalog-Index als eigenes, vorab berechnetes Sortierattribut vorliegen.
3. Eigene Merchandising-Regeln ohne Commerce implementieren
Der pragmatischste Einstieg in eigene Merchandising-Regeln ist ein Plugin auf die Produkt-Collection der Kategorieseite, das bei Auswahl einer bestimmten Sortieroption eine eigene, berechnete Sortierlogik anwendet, statt der Standard-Attributsortierung. Für performancekritische Fälle empfiehlt sich stattdessen ein Cronjob, der ein Sortier-Score-Attribut regelmäßig neu berechnet und im Produktindex ablegt, sodass die eigentliche Sortierung zur Laufzeit nur noch ein einfacher ORDER BY beziehungsweise eine Sortierung nach einem indexierten Feld ist.
<?php
declare(strict_types=1);
namespace Mironsoft\CategoryMerchandising\Cron;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
use Psr\Log\LoggerInterface;
/**
* Recalculates a merchandising score attribute for every salable product.
*/
final class RecalculateMerchandisingScore
{
private const SCORE_ATTRIBUTE = 'merchandising_score';
/**
* @param CollectionFactory $collectionFactory Product collection factory
* @param ProductRepositoryInterface $productRepository Product repository for saving updates
* @param LoggerInterface $logger Logger for cron diagnostics
*/
public function __construct(
private readonly CollectionFactory $collectionFactory,
private readonly ProductRepositoryInterface $productRepository,
private readonly LoggerInterface $logger,
) {
}
/**
* Computes and persists a weighted merchandising score per product.
*
* @return void
*/
public function execute(): void
{
$collection = $this->collectionFactory->create();
$collection->addAttributeToSelect(['sales_count_30d', 'margin_percent', 'qty']);
foreach ($collection as $product) {
$score = (float) $product->getData('sales_count_30d') * 0.5
+ (float) $product->getData('margin_percent') * 0.3
+ min((float) $product->getData('qty'), 100) * 0.2;
$product->setData(self::SCORE_ATTRIBUTE, round($score, 2));
try {
$this->productRepository->save($product);
} catch (\Exception $exception) {
$this->logger->error('Merchandising score update failed: ' . $exception->getMessage());
}
}
}
}
Diese Klasse zeigt das Grundmuster für dynamische Merchandising-Regeln: Mehrere Business-Signale werden gewichtet zu einem einzigen Sortierwert kombiniert, der anschließend als reguläres Produktattribut im Index landet und dort performant sortierbar ist. Die konkreten Gewichte (0.5, 0.3, 0.2 im Beispiel) sollten mit dem Merchandising-Team abgestimmt und regelmäßig überprüft werden.
4. Produkt-Pinning und regelbasiertes Ausblenden
Neben der allgemeinen Sortierlogik brauchen Merchandising-Regeln oft eine Möglichkeit, einzelne Produkte manuell an eine feste Position zu pinnen, etwa für eine aktuelle Kampagne, unabhängig von der berechneten Punktzahl. Der sauberste Weg dafür ist ein zusätzliches Attribut wie pinned_position, das in der Sortierlogik Vorrang vor dem berechneten Score erhält.
Für das gezielte Ausblenden von Produkten, etwa auslaufende Ware, die noch verkäuflich, aber nicht mehr beworben werden soll, eignet sich ein separates Sichtbarkeits-Flag statt einer harten Löschung aus der Kategoriezuordnung. So bleibt das Produkt über Direktlinks und Suche erreichbar, verschwindet aber gezielt aus der Kategorienavigation. Beide Mechanismen, Pinning und Ausblenden, sollten als eigenständige Merchandising-Regeln behandelt werden, die vor der score-basierten Sortierung greifen, nicht als Sonderfälle innerhalb derselben Berechnung.
5. Regeln auf Basis von Lagerbestand, Marge und Neuheit
Drei Signale liefern in der Praxis den größten Effekt für Merchandising-Regeln: Lagerbestand, Marge und Produktneuheit. Ein niedriger Lagerbestand sollte ein Produkt tendenziell nach unten verschieben, um Enttäuschung durch Ausverkauf zu vermeiden, während ein sehr hoher Lagerbestand (potenziell Überbestand) das Produkt eher nach oben rücken sollte, um den Abverkauf zu fördern. Diese beiden Effekte widersprechen sich scheinbar, lassen sich aber sauber trennen, indem Lagerbestand nicht linear, sondern mit einer Kurve gewichtet wird, die einen mittleren Bestand neutral bewertet.
Margen-basierte Merchandising-Regeln sind sensibel zu handhaben: Ein zu aggressives Bevorzugen margenstarker Produkte kann bei Kunden, die gezielt nach einem bestimmten Produkt suchen, als Manipulation wahrgenommen werden, wenn die tatsächliche Relevanz darunter leidet. Ein bewährter Kompromiss ist, Marge nur als kleinen Faktor innerhalb einer größeren Score-Formel zu verwenden, statt sie zum dominanten Sortierkriterium zu machen. Produktneuheit, gemessen am Erstellungsdatum, ist meist unproblematischer und lässt sich gut mit einem zeitlich abklingenden Bonus modellieren, der neue Produkte für einige Wochen sichtbar bevorzugt, danach aber automatisch ausläuft.
6. Anchor- vs. Non-Anchor-Kategorien und generierte Listen
Für die technische Umsetzung von Merchandising-Regeln ist der Unterschied zwischen Anchor- und Non-Anchor-Kategorien relevant. Anchor-Kategorien beziehen automatisch Produkte aus Unterkategorien mit ein und nutzen den Katalog-Index für die Produktliste, während Non-Anchor-Kategorien nur direkt zugeordnete Produkte zeigen und stärker auf die Datenbank-Collection angewiesen sind. Eigene Sortier-Scores funktionieren in beiden Fällen, aber die Performance-Charakteristik unterscheidet sich deutlich.
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Model\ResourceModel\Product\Collection">
<plugin name="mironsoft_merchandising_sort_order"
type="Mironsoft\CategoryMerchandising\Plugin\ApplyMerchandisingSortPlugin"
sortOrder="20"/>
</type>
</config>
Bei Anchor-Kategorien mit vielen Unterkategorien empfiehlt es sich, das Sortier-Score-Attribut vollständig im Index vorzuberechnen, statt es zur Laufzeit aus mehreren Rohattributen zusammenzusetzen, da die Menge der zu sortierenden Produkte hier deutlich größer sein kann als bei einer einzelnen Non-Anchor-Kategorie.
7. A/B-Testing von Sortierstrategien
Merchandising-Regeln ohne Erfolgsmessung bleiben Vermutung. Ein sauberer Test vergleicht zwei Sortierstrategien über denselben Zeitraum, entweder per echtem A/B-Split auf Sitzungsebene oder per zeitlich versetztem Vergleich mit saisonaler Kontrolle. Relevante Kennzahlen sind die Klickrate auf Produkte in den ersten Positionen, die Conversion-Rate der Kategorieseite und, besonders wichtig für Merchandising-Regeln mit Margen-Komponente, der durchschnittliche Deckungsbeitrag pro Bestellung, die über diese Kategorieseite generiert wurde.
Ein häufiger Fehler beim Testen ist, nur die Conversion-Rate zu betrachten und den Deckungsbeitrag zu ignorieren. Eine Sortierstrategie, die die Conversion-Rate leicht senkt, aber den durchschnittlichen Deckungsbeitrag deutlich erhöht, kann für das Geschäft insgesamt vorteilhafter sein als eine Strategie, die nur auf maximale Klicks optimiert.
8. Performance-Auswirkungen komplexer Sortierregeln
Komplexe Merchandising-Regeln, die zur Laufzeit mehrere Rohattribute kombinieren, verlangsamen die Produktliste spürbar, besonders bei großen Kategorien mit vielen Unterkategorien. Der zuverlässigste Performance-Hebel ist, den finalen Sortierwert nicht zur Laufzeit zu berechnen, sondern per Cronjob oder Indexer vorab zu bestimmen und als einfaches, sortierbares Attribut im Katalog-Index abzulegen.
Ein zweiter Hebel betrifft die Aktualisierungsfrequenz: Nicht jede Komponente der Merchandising-Regeln muss im selben Takt aktualisiert werden. Lagerbestand ändert sich häufig und sollte nahezu in Echtzeit einfließen, während Marge sich selten ändert und auch mit täglicher Aktualisierung ausreichend aktuell bleibt. Diese unterschiedlichen Aktualisierungsfrequenzen getrennt zu behandeln, reduziert die Rechenlast erheblich gegenüber einer pauschalen Neuberechnung aller Signale im selben Intervall.
9. Merchandising-Ansätze im direkten Vergleich
Die folgende Tabelle vergleicht verbreitete Ansätze für Merchandising-Regeln in Magento Open Source.
| Ansatz | Aufwand | Dynamik | Typischer Einsatz |
|---|---|---|---|
| Statische Position | Sehr gering | Keine automatische Reaktion | Kleine, stabile Sortimente |
| Cronjob-Score im Index | Mittel | Täglich/stündlich aktuell | Größere, dynamische Kataloge |
| Laufzeit-Collection-Plugin | Hoch (Performance-Risiko) | Nahezu Echtzeit | Kleine Kategorien mit hoher Priorität |
| Manuelles Pinning | Gering | Muss manuell gepflegt werden | Kampagnen, Aktionsprodukte |
In der Praxis kombinieren erfolgreiche Projekte meist einen Cronjob-Score als Basis mit manuellem Pinning für Kampagnenprodukte, statt sich auf einen einzigen Ansatz zu verlassen.
Mironsoft
Magento-Merchandising, Katalog-Index und Conversion-Optimierung
Zeigen eure Kategorieseiten die richtigen Produkte zuerst?
Wir bauen regelbasierte Merchandising-Logik für Magento Open Source, mit Score-Berechnung im Index, Produkt-Pinning für Kampagnen und messbarem A/B-Testing der Sortierstrategie.
Score-Modell
Gewichtete Kombination aus Lagerbestand, Marge und Verkaufszahlen
Produkt-Pinning
Feste Positionen für Kampagnenprodukte ohne Commerce-Lizenz
A/B-Testing
Messbare Vergleiche inklusive Deckungsbeitrag pro Bestellung
10. Zusammenfassung
Merchandising-Regeln für Kategorien lassen sich in Magento Open Source vollständig ohne Commerce-Lizenz umsetzen, sobald man Positionswerte, Collection-Plugins und Katalog-Index als zusammenhängendes System begreift. Ein gewichteter Score aus Lagerbestand, Marge und Verkaufszahlen, vorberechnet per Cronjob und im Index abgelegt, bildet die performante Basis, ergänzt um manuelles Pinning für Kampagnenprodukte.
Der entscheidende Unterschied zwischen erfolgreichem und wirkungslosem Category Merchandising liegt in der Messung: Klickrate, Conversion-Rate und vor allem Deckungsbeitrag pro Bestellung zeigen, ob eine Sortierstrategie dem Geschäft tatsächlich nützt. Wer diese Kennzahlen konsequent vergleicht, statt sich auf eine einmal eingerichtete Sortierung zu verlassen, gewinnt einen dauerhaften Vorteil gegenüber Wettbewerbern mit rein alphabetischer oder positionsbasierter Sortierung.
Merchandising-Regeln für Kategorien in Magento 2 — Das Wichtigste auf einen Blick
Score statt statischer Position
Gewichtete Kombination aus Business-Signalen, vorberechnet und indexiert.
Pinning und Ausblenden trennen
Eigenständige Regeln vor der score-basierten Sortierung, nicht als Sonderfall darin.
Performance durch Vorberechnung
Cronjob statt Laufzeitberechnung, unterschiedliche Aktualisierungsfrequenzen je Signal.
Erfolg messen
Klickrate, Conversion und Deckungsbeitrag pro Bestellung vergleichen, nicht nur Klicks.