Насторил работу блога через Backend

This commit is contained in:
Web-serfer 2026-04-15 02:12:25 +05:00
parent 014439d565
commit edd730b438
33 changed files with 1019 additions and 200 deletions

View file

@ -7,32 +7,21 @@ import BlogCard from '@components/blog/BlogCard.astro';
import Pagination from '@components/base/Pagination.astro';
import CTA from '@components/base/CTA.astro';
import SearchModal from '@components/base/SearchModal.astro';
import { getCollection } from 'astro:content';
const posts = await getCollection('blog');
// Сортируем посты по дате (новые сверху)
const sortedPosts = posts.sort((a, b) => b.data.date.getTime() - a.data.date.getTime());
import { getPosts, getAllCategories } from '@lib/pb';
const POSTS_PER_PAGE = 6;
const currentPage = 1;
const totalPages = Math.ceil(sortedPosts.length / POSTS_PER_PAGE);
const startIndex = 0;
const endIndex = POSTS_PER_PAGE;
const paginatedPosts = sortedPosts.slice(startIndex, endIndex);
const { posts, total, totalPages } = await getPosts({ page: currentPage, perPage: POSTS_PER_PAGE });
const categories = await getAllCategories();
// Форматируем дату
const formatDate = (date: Date) => {
return date.toLocaleDateString('ru-RU', {
const formatDate = (date: string) => {
return new Date(date).toLocaleDateString('ru-RU', {
day: 'numeric',
month: 'long',
year: 'numeric'
});
};
// Категории
const categories = ['Все', ...new Set(posts.map((post: any) => post.data.category))];
---
<Layout
@ -66,17 +55,17 @@ const categories = ['Все', ...new Set(posts.map((post: any) => post.data.cate
<section class="blog-grid-section">
<div class="site-container">
<div class="blog-grid" id="blog-grid">
{paginatedPosts.map((post: any) => (
<article class="blog-card-wrapper" data-category={post.data.category}>
{posts.map((post: any) => (
<article class="blog-card-wrapper" data-category={post.category}>
<BlogCard
title={post.data.title}
description={post.data.description}
category={post.data.category}
categoryColor={post.data.categoryColor}
date={formatDate(post.data.date)}
readTime={post.data.readTime}
imageUrl={post.data.imageUrl}
slug={`/blog/${post.id}`}
title={post.title}
description={post.description}
category={post.category}
categoryColor={post.categoryColor}
date={formatDate(post.date)}
readTime={post.readTime}
imageUrl={post.imageUrl}
slug={`/blog/${post.slug}`}
/>
</article>
))}
@ -206,4 +195,4 @@ const categories = ['Все', ...new Set(posts.map((post: any) => post.data.cate
setupAnimations();
setupFilter();
});
</script>
</script>