--- import { MONTHS } from '@lib/constants'; const POCKETBASE_URL = import.meta.env.POCKETBASE_URL || "http://localhost:8090"; interface Post { id: string; date: string; category: string; title: string; excerpt: string; image: string; link: string; isImportant?: boolean; } interface PostRecord { id: string; title: string; slug: string; excerpt: string; image?: string; tags?: string; isImportant?: boolean; created: string; } interface PocketBaseResponse { items: PostRecord[]; } interface Props { subHeader?: string; title?: string; initialPosts?: Post[]; } const { subHeader = "Блог и новости", title = "Актуальное", } = Astro.props; // Загружаем реальные статьи из PocketBase let posts: Post[] = []; try { // Получаем все посты (без ограничения 3) const response = await fetch(`${POCKETBASE_URL}/api/collections/posts/records?perPage=20&sort=-created`); const data: PocketBaseResponse = await response.json(); if (data.items && data.items.length > 0) { // Разделяем на важные и обычные const importantPosts = data.items .filter(post => post.isImportant === true) .map(post => createPostData(post)); const regularPosts = data.items .filter(post => post.isImportant !== true) .map(post => createPostData(post)); // Берём максимум 3 поста: сначала важные, потом обычные posts = [...importantPosts, ...regularPosts].slice(0, 3); } } catch (error) { console.error("[FeaturedPost] Error fetching posts from PocketBase:", error); } // Функция создания данных поста function createPostData(post: PostRecord): Post { const date = new Date(post.created); const formattedDate = `${date.getDate()} ${MONTHS[date.getMonth()]} ${date.getFullYear()} года`; // Формируем URL изображения const imageUrl = post.image ? `${POCKETBASE_URL}/api/files/posts/${post.id}/${post.image}` : "https://images.unsplash.com/photo-1589829085413-56de8ae18c73?q=80&w=2000&auto=format&fit=crop"; // Берём категорию из нового поля category const category = post.category && post.category.trim() !== "" ? post.category : "НОВОСТИ"; return { id: post.id, date: formattedDate, category, title: post.title, excerpt: post.excerpt, image: imageUrl, link: `/blog/${post.slug}`, isImportant: post.isImportant === true }; } // Если постов нет, используем заглушки if (posts.length === 0) { posts = [{ id: "1", date: `13 ${MONTHS[2]} 2026 года`, category: "НОВОСТИ", title: "Нет доступных публикаций", excerpt: "Пока нет статей для отображения", image: "https://images.unsplash.com/photo-1589829085413-56de8ae18c73?q=80&w=2000&auto=format&fit=crop", link: "/blog", isImportant: true }]; } ---
{subHeader}

{title}

{posts.map((post) => ( ))}
{posts.map((_, index) => ( ))}