<?php
namespace Huebert\SeoUltimate\Subscriber;
use Shopware\Storefront\Page\Product\Review\ProductReviewLoader;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ProductPageSubscriber implements EventSubscriberInterface
{
/**
* @var ProductReviewLoader
*/
private $productReviewLoader;
/**
* ProductPageSubscriber constructor.
* @param ProductReviewLoader $productReviewLoader
*/
public function __construct(ProductReviewLoader $productReviewLoader)
{
$this->productReviewLoader = $productReviewLoader;
}
/**
* @return array|string[]
*/
public static function getSubscribedEvents()
{
return [
ProductPageLoadedEvent::class => 'onProductPageLoaded'
];
}
/**
* @param ProductPageLoadedEvent $event
*/
public function onProductPageLoaded(ProductPageLoadedEvent $event): void
{
if ($event->getPage()) {
$product = $event->getPage()->getProduct();
if ($product->getCmsPage()) {
$request = $event->getRequest();
$request->request->set('parentId', $product->getParentId());
$reviews = $this->productReviewLoader->load($request, $event->getSalesChannelContext());
$reviews->setParentId($product->getParentId() ?? $product->getId());
$event->getPage()->setReviews($reviews);
}
}
}
}