was wär denn der beste Weg, die Ausgabe der Produkte im Slider zu randomizen? Da ich dann eine Checkbox in den Erlebniswelten Settings bräuchte, die die Funktionalität aktiviert/deaktiviert, müsste ich das Plugin überschreiben/erweitern?
Einfach das CMS-Element des Slider kopieren und im Resolver entsprechende Random Funktion beim laden der Artikel einbinden. Dort kann auch die an/aus Funktion gleich integriert werden.
Und ja, das CMS-Element wird in ein eigenes Plugin gepackt.
Ich habe das jetzt mal probiert und den product-slider aus vendor\shopware\administration\Resources\app\administration\src\module\sw-cms\elements in mein plugin kopiert.
Eine service.xml habe ich nicht gefunden, gibt es da einen DataResolver? Leider zeigt er mir natürlich auch nach dem builden der administration kein CMS Element an.
Würdest du mir vielleicht ein paar Tipps oder Hinweise geben, wie ich diesbezüglich vorankommen kann?
<?php declare(strict_types=1);
namespace Shopware\Core\Content\Cms\DataResolver\Element;
use Shopware\Core\Content\Cms\Aggregate\CmsSlot\CmsSlotEntity;
use Shopware\Core\Content\Cms\DataResolver\CriteriaCollection;
use Shopware\Core\Content\Cms\DataResolver\ResolverContext\ResolverContext;
interface CmsElementResolverInterface
{
public function getType(): string;
public function collect(CmsSlotEntity $slot, ResolverContext $resolverContext): ?CriteriaCollection;
public function enrich(CmsSlotEntity $slot, ResolverContext $resolverContext, ElementDataCollection $result): void;
}
In collect solltest du per $criteria das Ergebnis verändern können.
Allerdings muss ich dazu meinen Produkten ein Tag geben. Ein Randomizer oder z.B. automatisch die Bestseller anzuzeigen, würde mich auch noch interessieren.
Außerdem wird das Ergebnis gechached. Es werden also aus 20 Produkten immer die gleichen z.B. 10 angezeigt. Für mich nicht so schlimm, aber natürlich etwas blöd. Vielleicht kennt jemand eine Lösung? @Max_Shop