Wie bekomme ich properties in CMS Element mit Produkt?

Hallo zusammen,

vermutlich stelle ich mich gerade blöd an. Ist mein erstes Shopware 6 Projekt und seit langem überhaupt mal wieder shopware.

Ich habe die Produkte um Eigenschaften erweitert. Diese habe ich auch über einen Subscriber in den unterschiedlichen Listenansichten zur Verfügung gestellt. Mir will aber einfach nicht geligen diese auch in Erlebniswelt Elementen bei Produkten auszuspielen. Die werden ja über den „ProductBoxCmsElementResolver“ ausgegeben. Aber ich habe keine Ahnung wie ich da die Criteria erweitere oder geht es über die productConfig?

Beste Grüße

Du könntest im SalesChannelCmsPageLoader das Ergebnis anpassen und die Eigenschaften nachträglich laden.

In die Criterias vor der Suche kannst du dich nicht einhängen. Die Inhalte werden in shopware\core\Content\Cms\DataResolver\CmsSlotsDataResolver.php modular geladen. Dort gibt es keine EventDispatcher.

1 „Gefällt mir“

@AlexGalax‍ Danke schonmal für den Schubs in die richtige Richtung. 

Kannst du mir vielleicht noch ein Beispiel nennen wie ich den SalesChannelCmsPageLoader überschreibe?

getFieldConfig();
        $productConfig = $config->get('product');

        if (!$productConfig || $productConfig->isMapped() || $productConfig->getValue() === null) {
            return null;
        }

        $criteria = new Criteria([$productConfig->getValue()]);
        $criteria
            ->addAssociation('properties')
            ->addAssociation('categories');

        $criteriaCollection = new CriteriaCollection();
        $criteriaCollection->add('product_' . $slot->getUniqueIdentifier(), ProductDefinition::class, $criteria);

        return $criteriaCollection;
    }
}

Ich habe das jetzt so gebaut, ist das der richtige Weg?

1 „Gefällt mir“

Ich sehe gerade, Shopware\Core\Content\Product\Cms\ProductBoxCmsElementResolver ist ja als Service registriert, den kannst du somit regulär erweitern, wie hier beschrieben: Shopware 6: Decorating a service

Registirert ist er in core\Content\DependencyInjection\product.xml Z 152

1 „Gefällt mir“