custom/plugins/HuebertSeoUltimate/src/Subscriber/ProductPageSubscriber.php line 40

Open in your IDE?
  1. <?php
  2. namespace Huebert\SeoUltimate\Subscriber;
  3. use Shopware\Storefront\Page\Product\Review\ProductReviewLoader;
  4. use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. class ProductPageSubscriber implements EventSubscriberInterface
  7. {
  8.     /**
  9.      * @var ProductReviewLoader
  10.      */
  11.     private $productReviewLoader;
  12.     /**
  13.      * ProductPageSubscriber constructor.
  14.      * @param ProductReviewLoader $productReviewLoader
  15.      */
  16.     public function __construct(ProductReviewLoader $productReviewLoader)
  17.     {
  18.         $this->productReviewLoader $productReviewLoader;
  19.     }
  20.     /**
  21.      * @return array|string[]
  22.      */
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             ProductPageLoadedEvent::class => 'onProductPageLoaded'
  27.         ];
  28.     }
  29.     /**
  30.      * @param ProductPageLoadedEvent $event
  31.      */
  32.     public function onProductPageLoaded(ProductPageLoadedEvent $event): void
  33.     {
  34.         if ($event->getPage()) {
  35.             $product $event->getPage()->getProduct();
  36.             if ($product->getCmsPage()) {
  37.                 $request $event->getRequest();
  38.                 $request->request->set('parentId'$product->getParentId());
  39.                 $reviews $this->productReviewLoader->load($request$event->getSalesChannelContext());
  40.                 $reviews->setParentId($product->getParentId() ?? $product->getId());
  41.                 $event->getPage()->setReviews($reviews);
  42.             }
  43.         }
  44.     }
  45. }