custom/plugins/NenoMarketingEssentials/src/Storefront/Subscriber/TabsNavigationLoadedSubscriber.php line 34

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Neno\MarketingEssentials\Storefront\Subscriber;
  3. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  4. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Shopware\Storefront\Page\Navigation\NavigationPageLoadedEvent;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  8. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  9. class TabsNavigationLoadedSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var EntityRepositoryInterface
  13.      */
  14.     private $tabsRepository;
  15.     public function __construct (EntityRepositoryInterface $tabsRepository)
  16.     {
  17.         $this->tabsRepository $tabsRepository;
  18.     }
  19.     /**
  20.      * @inheritDoc
  21.      */
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [
  25.             NavigationPageLoadedEvent::class => 'listenToNavigationLoaded',
  26.         ];
  27.     }
  28.     public function listenToNavigationLoaded(NavigationPageLoadedEvent $event): void
  29.     {
  30.         $request $event->getRequest();
  31.         $context $event->getSalesChannelContext();
  32.         // special tab
  33.         $categoryId $request->get('navigationId'$context->getSalesChannel()->getNavigationCategoryId());
  34.         $criteria = (new Criteria())
  35.             ->addFilter(new MultiFilter(
  36.                     MultiFilter::CONNECTION_AND,
  37.                     [
  38.                         new EqualsFilter('isGlobal'0),
  39.                         new EqualsFilter('display''category'),
  40.                         new EqualsFilter('categoryId'$categoryId)
  41.                     ]
  42.                 )
  43.             );
  44.         $tab $this->tabsRepository
  45.             ->search($criteria$event->getContext())
  46.             ->getEntities();
  47.         if ($tab->count()) {
  48.             $event->getPage()->addExtension('nme_tabs'$tab);
  49.             return;
  50.         }
  51.         // global tab
  52.         $criteria = new Criteria();
  53.         $criteria->addFilter(new EqualsFilter('isGlobal'1));
  54.         $tab $this->tabsRepository
  55.             ->search($criteria$event->getContext())
  56.             ->getEntities();
  57.         if ($tab->count()) {
  58.             $event->getPage()->addExtension('nme_tabs'$tab);
  59.             return;
  60.         }
  61.     }
  62. }