Product Slider Randomizer

Hallo,

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?

Funktioniert sowas überhaupt?

LG Alex

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.

Alles klar, hab mir schon gedacht. Danke dir!
Der Slider ist eh an sich nicht so der Burner^^

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?

Danke und Lg,
Alex

CMS-Elemente sind dreigeteilt:

<?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.

Wenn ich dich richtig verstehe, habe ich hier so etwas ähnliches gemacht, wie du fragst. Vielleicht hilft es weiter: CMS Blöcke in TWIG Template nutzen? - #21 von zlep

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