custom/plugins/NetzpBlog6/src/Storefront/Page/BlogPageLoader.php line 66
<?php declare(strict_types=1);namespace NetzpBlog6\Storefront\Page;use NetzpBlog6\Controller\StoreApi\BlogPost\AbstractBlogPostRoute;use NetzpBlog6\Core\Content\Blog\BlogEntity;use Psr\EventDispatcher\EventDispatcherInterface;use Shopware\Core\Content\Cms\SalesChannel\SalesChannelCmsPageLoaderInterface;use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;use Shopware\Core\System\SalesChannel\SalesChannelContext;use Shopware\Core\System\SystemConfig\SystemConfigService;use Shopware\Storefront\Page\GenericPageLoaderInterface;use Shopware\Storefront\Page\MetaInformation;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;class BlogPageLoader{public function __construct(private readonly GenericPageLoaderInterface $genericPageLoader,private readonly SalesChannelCmsPageLoaderInterface $cmsPageLoader,private readonly EventDispatcherInterface $eventDispatcher,private readonly AbstractBlogPostRoute $blogRoute,private readonly SystemConfigService $config){}public function load(Request $request, SalesChannelContext $context, string $postId): BlogPage{$criteria = new Criteria([$postId]);$post = $this->blogRoute->load($postId, $criteria, $context)->getBlogPost();if(! $post) {throw new NotFoundHttpException('Blog post not found');}$config = $this->config->get('NetzpBlog6.config', $context->getSalesChannelId());$category = $post->getCategory();if($category && $category->getCmspageid()) {$cmsPageId = $category->getCmspageid();}else {$cmsPageId = array_key_exists('cmspage', $config) && $config['cmspage'] !== '' ? $config['cmspage'] : null;}if($cmsPageId !== null || $cmsPageId != '') {$page = $this->loadCmsPage($request, $context, $cmsPageId, $post);}else {$page = $this->loadNormalPage($request, $context, $post);}$page->setPost($post);$this->eventDispatcher->dispatch(new BlogPageLoadedEvent($page, $context, $request));return $page;}private function loadCmsPage(Request $request,SalesChannelContext $salesChannelContext,$cmsPageId,BlogEntity $post){$cmsPage = $this->cmsPageLoader->load($request, new Criteria([$cmsPageId]), $salesChannelContext)->first();$page = BlogPage::createFrom($this->genericPageLoader->load($request, $salesChannelContext));$page->setCmsPage($cmsPage);$page->setMetaInformation($this->getMetaInformation($post));return $page;}private function loadNormalPage(Request $request,SalesChannelContext $salesChannelContext,BlogEntity $post){$page = $this->genericPageLoader->load($request, $salesChannelContext);$page = BlogPage::createFrom($page);$page->setMetaInformation($this->getMetaInformation($post));return $page;}private function getMetaInformation(BlogEntity $post){$meta = new MetaInformation();$meta->setMetaTitle($post->getTranslation('metatitle') ?? $post->getTranslation('title'));$meta->setMetaDescription($post->getTranslation('metadescription') ?? '');if ($post->getAuthor()) {$meta->setAuthor($post->getAuthor()->getTranslation('name') ?? '');}if ($post->getNoindex()) {$meta->setRobots('noindex, nofollow');}return $meta;}}