custom/static-plugins/GlobusSW6/src/Subscriber/RobotsMetaDataSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. namespace GlobusSW6\Subscriber;
  3. use GlobusSW6\Service\PageMetaData\PageMetaRobotTagService;
  4. use Psr\Log\LoggerInterface;
  5. use Shopware\Storefront\Event\StorefrontRenderEvent;
  6. use Shopware\Storefront\Page\Checkout\Offcanvas\OffcanvasCartPage;
  7. use Shopware\Storefront\Page\Page;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class RobotsMetaDataSubscriber implements EventSubscriberInterface
  10. {
  11.     private PageMetaRobotTagService $robotTagService;
  12.     private LoggerInterface $logger;
  13.     public function __construct(PageMetaRobotTagService $robotTagServiceLoggerInterface $logger)
  14.     {
  15.         $this->robotTagService $robotTagService;
  16.         $this->logger $logger;
  17.     }
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             StorefrontRenderEvent::class => 'onStorefrontRender'
  22.         ];
  23.     }
  24.     /**
  25.      * @param StorefrontRenderEvent $event
  26.      */
  27.     public function onStorefrontRender(StorefrontRenderEvent $event): void
  28.     {
  29.         // StorefrontRenderEvent is dispatched by offcanvas cart as well. There it has no Page class instance, hence the check.
  30.         if (!isset($event->getParameters()['page'])
  31.             || !($event->getParameters()['page'] instanceof Page
  32.             || $event->getParameters()['page'] instanceof OffcanvasCartPage)) {
  33.             return;
  34.         }
  35.         $page $event->getParameters()['page'];
  36.         if (empty($page)) {
  37.             return;
  38.         }
  39.         // Check if metaInformationMethod exists
  40.         if (!is_object($page) || !method_exists($page,'getMetaInformation')) {
  41.             return;
  42.         }
  43.         // Check if metaInformation is set
  44.         if (empty($page->getMetaInformation())) {
  45.             return;
  46.         }
  47.         // Get metaInformation
  48.         /** @var MetaInformation $metaInformation */
  49.         $metaInformation $page->getMetaInformation();
  50.         //Check if SalesChannelId is set
  51.         if (!$event->getSalesChannelContext()->getSalesChannelId()) {
  52.             return;
  53.         }
  54.         $salesChannelId $event->getSalesChannelContext()->getSalesChannelId();
  55.         try {
  56.             $this->robotTagService->setRobotTags($page$salesChannelId);
  57.         } catch (\Throwable $t) {
  58.             $this->logger->error(__CLASS__ ":" __FUNCTION__ ":" __LINE__ ":\n" $t->getMessage());
  59.         }
  60.     }
  61. }