{relatedNewsItem.title}
{relatedNewsItem.summary}
import React from 'react'; import { notFound } from 'next/navigation'; import Link from 'next/link'; import Image from 'next/image'; import { NEWS_CATEGORIES } from '@/lib/types'; interface NewsDetailPageProps { params: Promise<{ slug: string; }>; } // Функция для получения новости по slug из API async function getNewsFromApi(slug: string) { try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000'}/api/news?slug=${slug}`, { cache: 'no-store' }); if (!response.ok) { return null; } const data = await response.json(); if (data.success && data.data.news.length > 0) { return data.data.news[0]; } return null; } catch (error) { console.error('Error fetching news:', error); return null; } } // Функция для получения связанных новостей async function getRelatedNews(category: string, currentSlug: string) { try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3000'}/api/news?category=${category}&limit=4`, { cache: 'no-store' }); if (!response.ok) { return []; } const data = await response.json(); if (data.success) { return data.data.news.filter((item: any) => item.slug !== currentSlug); } return []; } catch (error) { console.error('Error fetching related news:', error); return []; } } export default async function NewsDetailPage({ params }: NewsDetailPageProps) { const { slug } = await params; const news = await getNewsFromApi(slug); if (!news) { notFound(); } const formatDate = (dateString: string) => { return new Date(dateString).toLocaleDateString('ru-RU', { year: 'numeric', month: 'long', day: 'numeric' }); }; const getCategoryInfo = (categoryId: string) => { return NEWS_CATEGORIES.find(cat => cat.id === categoryId); }; const categoryInfo = getCategoryInfo(news.category); // Получаем связанные новости (из той же категории, исключая текущую) const relatedNews = await getRelatedNews(news.category, news.slug); return (
{news.summary}
{/* Scroll Indicator */}Расскажите об этой новости в социальных сетях
Другие материалы из категории "{categoryInfo?.name}"
{relatedNewsItem.summary}
Подписывайтесь на обновления и будьте в курсе всех событий и достижений нашей компании