Dokument Artikel in Auflistung - ListingArticle

Die ListingArticle-Dokumente sind Dokumente, welche den Inhalt der Auflistung für einen speziellen Artikel in Auflistungen enthält. Also zum Beispiel:

  • Name, Sku, Beschreibung

  • Seo- und Metainformationen

  • Bild

  • Preis pro Kundentyp und Preisgruppe

Prefix

Der Prefix für die Dokumente ist wie folgt aufgebaut: c{clientId}d{domainId}co{collationId}:listing-article:{id}

Beispiel: c1d1co1:listing-article:123

Staging

Die Dokumente für die ListingArticless werden mit dem Kontext \Brandbox\CmsCore\Cms\CmsStage\Lib\Struct\ContextCmsStage über das Staging generiert. Dabei werden \Brandbox\CmsLayoutShop\View\ListingArticle\Lib\Message\GenerateListingArticleDocuments Messages für eine Anzahl an IDs generiert. Also nicht alle Artikel auf einmal.

Im Prozess werden zuerst alle Dokumente des Typs gelöscht und dann über diese Message wieder neu gebaut. Siehe auch Messanger.

Dokument über Base erzeugen

Das Dokument für einen Artikel kann über „Weitere Funktionen“ im Datensatz veröffentlicht / generiert werden.

Dokument anpassen

Um ein ListingArticle-Dokument anzupassen oder zu erweitern, sollte auf das Event \Brandbox\FrameworkDocument\Brandbox\DocumentStore\Lib\Event\OnCreateDocument subscibed werden und entsprechend der Kontext geprüft werden.

Beispiel:

// Subscriber public static function getSubscribedEvents(): array { return [ DocumentStore\Lib\Event\OnCreateDocument::class => [ ['onPopulateDocumentListingChange', 500], ], ]; }
use Brandbox\Framework\Brandbox\Controller; use Brandbox\FrameworkDocument\Brandbox\DocumentStore; use Brandbox\ShopCore\Shop\Article; use Brandbox\CmsLayoutShop\View\ListingArticle; class MyClass extends Controller\ControllerRequestAbstract { public function process(DocumentStore\Lib\Event\OnCreateDocument $event): void { if ( ListingArticle\Manager::DOCUMENT_TYPE_LISTING_ARTICLE === $event->type && $event->entity instanceof Article\lib\entity\shopArticle && true === $event->document instanceof DocumentStore\Lib\Struct\Document ) { // my code } } }