diff --git a/app/blog/[id]/page.tsx b/app/blog/[id]/page.tsx index 98b4f00..9f72b61 100644 --- a/app/blog/[id]/page.tsx +++ b/app/blog/[id]/page.tsx @@ -72,6 +72,33 @@ export default async function BlogPostPage({ params }: Props) { notFound(); } + // Articles en rapport : par tags communs, sinon les plus récents + let relatedPosts = await prisma.blogPost.findMany({ + where: { + status: 'PUBLISHED', + publishedAt: { lte: new Date() }, + id: { not: post.id }, + tags: { hasSome: post.tags } + }, + take: 3, + orderBy: { date: 'desc' } + }); + + // Compléter avec les articles récents si nécessaire + if (relatedPosts.length < 2) { + const excludedIds = [post.id, ...relatedPosts.map(p => p.id)]; + const additionalPosts = await prisma.blogPost.findMany({ + where: { + status: 'PUBLISHED', + publishedAt: { lte: new Date() }, + id: { notIn: excludedIds } + }, + take: 3 - relatedPosts.length, + orderBy: { date: 'desc' } + }); + relatedPosts = [...relatedPosts, ...additionalPosts]; + } + return (
{/* Injection du style de force pour le texte */} @@ -163,6 +190,47 @@ export default async function BlogPostPage({ params }: Props) { + + {/* Section Articles en rapport */} + {relatedPosts.length > 0 && ( +
+

Articles en rapport

+
+ {relatedPosts.map((rPost) => ( + +
+ {rPost.title} +
+
+
+
+ + {rPost.tags?.[0] || 'Article'} + + + {new Date(rPost.date).toLocaleDateString('fr-FR', { month: 'short', day: 'numeric' })} + +
+

+ {rPost.title} +

+

+ {rPost.excerpt} +

+
+ + ))} +
+
+ )}
); } \ No newline at end of file