Hallo, ich möchte gerne bei den Listing Artikeln ebenfalls alle media images haben wie es bei Detail Artikeln der Fall ist. Sehe ich es richtig das ich dazu den kompletten ListProductService mit einem decorator extende und dann eine neue Product-Klasse welche von ListProduct ableitet anlegen muss? Edit: Habe es hinbekommen wen die Lösung interessiert: Unsere Bootstrap muss um den Decorator für den list product service erweitert werden. $this-\>subscribeEvent( 'Enlight\_Bootstrap\_AfterInitResource\_shopware\_storefront.list\_product\_service', 'decorateService' ); public function decorateService() { $coreService = Shopware()-\>Container()-\>get('shopware\_storefront.list\_product\_service'); $mediaService = Shopware()-\>Container()-\>get('shopware\_storefront.media\_service'); $rhinosListService = new RhinosListProductService($coreService, $mediaService); Shopware()-\>Container()-\>set('shopware\_storefront.list\_product\_service', $rhinosListService); }
Danach kann man den Service implementieren [code]<?php namespace ShopwarePlugins\RhinosExtendListingProduct\StoreFrontBundle;
use Shopware\Bundle\StoreFrontBundle\Service\ListProductServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Service\MediaServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Struct;
class RhinosListProductService implements ListProductServiceInterface {
private $service;
private $mediaService;
function __construct(ListProductServiceInterface $service, MediaServiceInterface $mediaService) {
$this->service = $service; $this-\>mediaService = $mediaService; } public function getList(array $numbers, Struct\ProductContextInterface $context) { $products = $this-\>service-\>getList($numbers, $context); $media = $this-\>mediaService-\>getProductsMedia($products, $context); foreach($numbers as $number) { $product = $products[$number]; if(isset($media[$number])) { $attribute = new Struct\Attribute(['images' =\> $media[$number]]); $product-\>addAttribute('rhinos\_plugin\_system', $attribute); } $products[$number] = $product; } return $products; } public function get($number, Struct\ProductContextInterface $context) { $products = $this-\>getList([$number], $context); return array\_shift($products); } } [/code]