custom/plugins/EsmComputer/src/Storefront/Subscriber/ListingTextSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace EsmComputer\Storefront\Subscriber;
  4. use Shopware\Core\Content\Product\Events\ProductListingResultEvent;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  7. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class ListingTextSubscriber implements EventSubscriberInterface
  10. {
  11.     protected EntityRepository $listingTextRepository;
  12.     public function __construct(EntityRepository $listingTextRepository)
  13.     {
  14.         $this->listingTextRepository $listingTextRepository;
  15.     }
  16.     public static function getSubscribedEvents()
  17.     {
  18.         return [
  19.             ProductListingResultEvent::class => 'onProductListingResult'
  20.         ];
  21.     }
  22.     /**
  23.      * Add seo listing text to view
  24.      *
  25.      * @param ProductListingResultEvent $event
  26.      */
  27.     public function onProductListingResult(ProductListingResultEvent $event)
  28.     {
  29.         $categoryId $event->getRequest()->get('navigationId');
  30.         if(!$categoryId) {
  31.             return;
  32.         }
  33.         $criteria = new Criteria();
  34.         $criteria->addFilter(new EqualsFilter('categoryId'$categoryId));
  35.         $seoListing $this->listingTextRepository->search($criteria$event->getContext());
  36.         $event->getResult()->addExtension('seoListingTexts'$seoListing);
  37.     }
  38. }