news-bundle/src/EventListener/PreviewUrlCreateListener.php
public function onPreviewUrlCreate(PreviewUrlCreateEvent $event): void
    {
        if (!$this->framework->isInitialized() || 'news' !== $event->getKey()) {
            return;
        }

        $request = $this->requestStack->getCurrentRequest();

        if (null === $request) {
            throw new \RuntimeException('The request stack did not contain a request');
        }

        // Return on the news archive list page
        if ('tl_news' === $request->query->get('table') && !$request->query->has('act')) {
            return;
        }

        if (null === ($newsModel = $this->getNewsModel($this->getId($event, $request)))) {
            return;
        }

        $event->setQuery('news='.$newsModel->id);
    }
public function onPreviewUrlCreate(PreviewUrlCreateEvent $event): void
    {
        if (!$this->framework->isInitialized() || 'news' !== $event->getKey()) {
            return;
        }

        $request = $this->requestStack->getCurrentRequest();

        if (null === $request) {
            throw new \RuntimeException('The request stack did not contain a request');
        }

        // Return on the news archive list page
        if ('tl_news' === $request->query->get('table') && !$request->query->has('act')) {
            return;
        }

        if (null === ($newsModel = $this->getNewsModel($this->getId($event, $request)))) {
            return;
        }

        $event->setQuery('news='.$newsModel->id);
    }
Adds the news ID to the front end preview URL.

@throws \RuntimeException