import React from "react"; import { ChevronRight, Calendar, User, Sparkles } from "lucide-react"; import Link from 'next/link'; import Image from 'next/image'; import type { Metadata } from 'next'; async function getBlog(rawSlug: string) { try { const slug = decodeURIComponent(rawSlug); const apiUrl = process.env.INTERNAL_API_URL || process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4001/api'; const apiBase = apiUrl.endsWith('/api') ? apiUrl : `${apiUrl.replace(/\/$/, '')}/api`; const res = await fetch(`${apiBase}/blogs/${encodeURIComponent(slug)}`, { next: { revalidate: 60 } }); if (!res.ok) { console.error(`[Blog] Failed to fetch blog ${slug}: ${res.status}`); return null; } const b = await res.json(); return { id: b.id, slug: b.slug, title: b.title, excerpt: b.metaDescription || (typeof b.content === 'string' ? b.content.substring(0, 150).replace(/<[^>]+>/g, '') + '...' : ''), image: b.imageUrl || b.coverImage || '/assets/images/blog-placeholder.png', date: b.createdAt ? new Date(b.createdAt).toLocaleDateString('fa-IR') : '', author: b.author ? `${b.author.firstName || ''} ${b.author.lastName || ''}`.trim() : 'نویسنده کنینا', content: b.content || '', }; } catch (error) { console.error('[Blog] Error fetching blog detail:', error); return null; } } export const revalidate = 60; import { getSeoConfig, formatPageTitle } from "../../../lib/seo"; export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise { const { slug } = await params; const blog = await getBlog(slug); const config = await getSeoConfig(); if (!blog) { return { title: formatPageTitle('مقاله یافت نشد', config.brandNameFa, config.titleSeparator, config.titlePosition), }; } const title = formatPageTitle(blog.title, config.brandNameFa, config.titleSeparator, config.titlePosition, false); const description = blog.excerpt.substring(0, 155).trim() || config.defaultMetaDescription; const canonicalUrl = `${config.canonicalBaseUrl.replace(/\/$/, '')}/blog/${slug}`; return { title, description, alternates: { canonical: canonicalUrl, }, openGraph: { title, description, images: [blog.image || config.ogImageUrl], url: canonicalUrl, siteName: config.brandNameFa, type: "article", } }; } export default async function BlogPostPage({ params }: { params: Promise<{ slug: string }> }) { const { slug } = await params; const selectedPost = await getBlog(slug); if (!selectedPost) { return (

مقاله‌ای یافت نشد

بازگشت به مجله سلامت
); } return (
خانه مجله سلامت {selectedPost.title}
{selectedPost.title}
تحقیق بالینی
{selectedPost.date}

{selectedPost.title}

{selectedPost.excerpt}

{selectedPost.author}
نویسنده کنینا

ارتباط با کارشناسان

برای دریافت مشاوره تخصصی و انتخاب بهترین مکمل برای حیوان خانگی خود، با ما در تماس باشید.
); }