Dokument Gruppe in Auflistung - ListingGroup
Die ListingGroup-Dokumente sind Dokumente, welche den Inhalt der Auflistung für eine spezielle Gruppe enthalten. Also zum Beispiel:
Namen der Gruppe
Untergruppen
Referenz zu den Artikeln, für die verschiedenen Sortierungen sortiert
Prefix
Der Prefix für die Dokumente ist wie folgt aufgebaut: c{clientId}d{domainId}co{collationId}:listing-group:{id}
Beispiel: c1d1co1:listing-group:123
Staging
Die Dokumente für die ListingGroups werden mit dem Kontext \Brandbox\CmsCore\Cms\CmsStage\Lib\Struct\ContextCmsStage
über das Staging generiert. Dabei werden \Brandbox\CmsLayoutShop\View\ListingGroup\Lib\Message\GenerateListingGroupDocuments
Messages für eine Anzahl an IDs generiert. Also nicht alle Gruppen 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 eine Gruppe kann über „Weitere Funktionen“ im Datensatz veröffentlicht / generiert werden.
Dokument anpassen
Um ein ListingGroup-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\Group;
use Brandbox\CmsLayoutShop\View\ListingGroup;
class MyClass extends Controller\ControllerRequestAbstract
{
public function process(DocumentStore\Lib\Event\OnCreateDocument $event): void
{
if (
ListingGroup\Manager::DOCUMENT_TYPE_LISTING_GROUP === $event->type &&
$event->entity instanceof Group\lib\entity\shopGroup &&
true === $event->document instanceof DocumentStore\Lib\Struct\Document
) {
// my code
}
}
}