import BlogPost from '@/components/BlogPost' import Pagination from '@/components/Pagination' import BLOG from '@/blog.config' import { useRouter } from 'next/router' /** * 文章列表分页表格 * @param page 当前页 * @param posts 所有文章 * @param tags 所有标签 * @returns {JSX.Element} * @constructor */ const BlogPostList = ({ page = 1, posts = [], tags }) => { if (!posts) { return

No posts found.

} let filteredBlogPosts = posts // 处理查询过滤 支持标签、关键词过滤 let currentSearch = '' const router = useRouter() if (router.query && router.query.s) { currentSearch = router.query.s filteredBlogPosts = posts.filter(post => { const tagContent = post.tags ? post.tags.join(' ') : '' const searchContent = post.title + post.summary + tagContent + post.slug return searchContent.toLowerCase().includes(currentSearch.toLowerCase()) }) } // 处理分页 const totalPages = Math.ceil(filteredBlogPosts.length / BLOG.postsPerPage) const postsToShow = filteredBlogPosts.slice( BLOG.postsPerPage * (page - 1), BLOG.postsPerPage * page ) let showNext = false if (filteredBlogPosts) { const totalPosts = filteredBlogPosts.length showNext = page * BLOG.postsPerPage < totalPosts } return
{(!page || page === 1) && (
)} {(page && page !== 1) && (
{page && page !== 1 && (页 {page} / {totalPages})}
)}
{/* 文章列表 */}
{!postsToShow.length && (

No posts found.

)} {postsToShow.map(post => ( ))}
} export default BlogPostList