<?php declare(strict_types=1);
namespace Cbax\ModulBreadcrumbModified\Subscriber;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Shopware\Storefront\Page\Navigation\NavigationPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Cbax\ModulBreadcrumbModified\Components\BreadcrumbHelper;
use Shopware\Core\System\SystemConfig\SystemConfigService;
class FrontendSubscriber implements EventSubscriberInterface
{
/**
* @var SystemConfigService
*/
private $systemConfigService;
/**
* @var BreadcrumbHelper
*/
private $breadcrumbHelper;
public function __construct(BreadcrumbHelper $breadcrumbHelper, SystemConfigService $systemConfigService)
{
$this->breadcrumbHelper = $breadcrumbHelper;
$this->systemConfigService = $systemConfigService;
}
public static function getSubscribedEvents(): array
{
return [
ProductPageLoadedEvent::class => 'onProductPageLoaded',
NavigationPageLoadedEvent::class => 'onNavigationPageLoaded'
];
}
public function onProductPageLoaded(ProductPageLoadedEvent $event)
{
$salesChannelId = $event->getSalesChannelContext()->getSalesChannelId();
$config = $this->systemConfigService->get('CbaxModulBreadcrumbModified.config', $salesChannelId) ?? [];
if (empty($config['active'])) return false;
$newBreadcrumb = $this->breadcrumbHelper->getProductBreadcrumb($event);
if (!$newBreadcrumb) return false;
$page = $event->getPage();
$page->assign( ['cbaxBreadcrumbModified' => $newBreadcrumb]);
}
public function onNavigationPageLoaded(NavigationPageLoadedEvent $event)
{
$salesChannelId = $event->getSalesChannelContext()->getSalesChannelId();
$config = $this->systemConfigService->get('CbaxModulBreadcrumbModified.config', $salesChannelId) ?? [];
if (empty($config['active'])) return false;
$newBreadcrumb = $this->breadcrumbHelper->getCategoryBreadcrumb($event);
if (!$newBreadcrumb) return false;
$page = $event->getPage();
$page->assign( ['cbaxBreadcrumbModified' => $newBreadcrumb]);
}
}