custom/plugins/NetzpBlog6/src/Controller/BlogController.php line 36

  1. <?php declare(strict_types=1);
  2. namespace NetzpBlog6\Controller;
  3. use Symfony\Component\Routing\Annotation\Route;
  4. use NetzpBlog6\Storefront\Page\BlogPageLoader;
  5. use Shopware\Core\Framework\Context;
  6. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  7. use Shopware\Core\System\SystemConfig\SystemConfigService;
  8. use Shopware\Storefront\Controller\StorefrontController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use NetzpBlog6\Helper\BlogHelper;
  11. class BlogController extends StorefrontController
  12. {
  13.     public function __construct(private readonly BlogHelper $helper,
  14.                                 private readonly BlogPageLoader $blogPageLoader,
  15.                                 private readonly SystemConfigService $config)
  16.     {
  17.     }
  18.     #[Route(path'/blog.rss'name'frontend.blog.feed'methods: ['GET'], defaults: ['_routeScope' => ['storefront']])]
  19.     public function getFeed(Request $requestSalesChannelContext $salesChannelContextContext $context)
  20.     {
  21.         $posts $this->helper->getPublicBlogPosts($salesChannelContext$contextnullnulltrue);
  22.         $response $this->renderStorefront('storefront/page/blog/feed.html.twig', [
  23.             'posts' => $posts
  24.         ]);
  25.         $response->headers->set('Content-Type''text/xml');
  26.         return $response;
  27.     }
  28.     #[Route(path'/blog/{postId}'name'frontend.blog.post'methods: ['GET'], defaults: ['_routeScope' => ['storefront']])]
  29.     public function getPost(Request $requestSalesChannelContext $salesChannelContextContext $context$postId)
  30.     {
  31.         $shariffIsActive $this->helper->isPluginActive('NetzpShariff6'$context);
  32.         $config $this->config->get('NetzpBlog6.config'$salesChannelContext->getSalesChannel()->getId());
  33.         $page $this->blogPageLoader->load($request$salesChannelContext$postId);
  34.         $template $page->isCmsPage() ? 'storefront/page/content/index.html.twig' 'storefront/page/blog/post.html.twig';
  35.         return $this->renderStorefront($template, [
  36.             'page'               => $page,
  37.             'post'               => $page->getPost(),
  38.             'config'             => $config,
  39.             'netzpShariffActive' => $shariffIsActive
  40.         ]);
  41.     }
  42. }