render('home.html.twig', [ 'indices' => $this->magazineContent->getHomeCategoryAIndexTagsFromStoreOnly(), ]); } #[Route('/cat/{slug}', name: 'magazine-category')] public function magCategory(string $slug): Response { $data = $this->magazineContent->getCategoryPageData($slug); return $this->render('pages/category.html.twig', [ 'list' => $data['list'], 'category' => $data['category'], 'sync_slug' => $slug, ]); } /** * OG Preview endpoint for URLs */ #[Route('/og-preview/', name: 'og_preview', methods: ['POST'])] public function ogPreview(RequestStack $requestStack): Response { $request = $requestStack->getCurrentRequest(); $data = json_decode($request->getContent(), true); $url = $data['url'] ?? null; if (!$url) { return new Response('
No URL provided.
', 400); } try { $embed = new \Embed\Embed(); $info = $embed->get($url); if (!$info) { throw new Exception('No OG data found'); } return $this->render('components/Molecules/OgPreview.html.twig', [ 'og' => [ 'title' => $info->title, 'description' => $info->description, 'image' => $info->image, 'url' => $url, ], ]); } catch (Exception $e) { return new Response('
Unable to load OG preview for '.htmlspecialchars($url).'
', 200); } } }