vendor/dachcom-digital/dynamic-search-data-provider-crawler/src/DsWebCrawlerBundle/EventListener/DocumentMetaDataListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace DsWebCrawlerBundle\EventListener;
  3. use DsWebCrawlerBundle\Service\CrawlerStateServiceInterface;
  4. use Pimcore\Http\Request\Resolver\DocumentResolver;
  5. use Pimcore\Model\Document\Page;
  6. use Pimcore\Twig\Extension\Templating\HeadMeta;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. class DocumentMetaDataListener
  9. {
  10.     protected CrawlerStateServiceInterface $crawlerState;
  11.     protected DocumentResolver $documentResolver;
  12.     protected HeadMeta $headMeta;
  13.     public function __construct(
  14.         CrawlerStateServiceInterface $crawlerState,
  15.         DocumentResolver $documentResolver,
  16.         HeadMeta $headMeta
  17.     ) {
  18.         $this->crawlerState $crawlerState;
  19.         $this->documentResolver $documentResolver;
  20.         $this->headMeta $headMeta;
  21.     }
  22.     public function onKernelRequest(RequestEvent $event): void
  23.     {
  24.         if (!$this->crawlerState->isDsWebCrawlerCrawler()) {
  25.             return;
  26.         }
  27.         if (!$event->isMasterRequest()) {
  28.             return;
  29.         }
  30.         $request $event->getRequest();
  31.         if (!$request->attributes->has('_route')) {
  32.             return;
  33.         }
  34.         $str 'document_';
  35.         if (!str_starts_with($request->attributes->get('_route'), $str)) {
  36.             return;
  37.         }
  38.         $document $this->documentResolver->getDocument($request);
  39.         if ($document instanceof Page) {
  40.             $this->headMeta->addRaw('<meta name="dynamic-search:page-id" content="' $document->getId() . '" />');
  41.         }
  42.     }
  43. }