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
}
}
}