diff --git a/pages/archive/index.js b/pages/archive/index.js index f60d9f77..700e6273 100644 --- a/pages/archive/index.js +++ b/pages/archive/index.js @@ -25,6 +25,27 @@ export async function getStaticProps() { props.posts = props.allPages.filter(page => page.type === 'Post' && page.status === 'Published') delete props.allPages + const postsSortByDate = Object.create(props.posts) + + postsSortByDate.sort((a, b) => { + const dateA = new Date(a?.date?.start_date || a.createdTime) + const dateB = new Date(b?.date?.start_date || b.createdTime) + return dateB - dateA + }) + + const archivePosts = {} + + postsSortByDate.forEach(post => { + const date = post.date?.start_date?.slice(0, 7) || post.createdTime + if (archivePosts[date]) { + archivePosts[date].push(post) + } else { + archivePosts[date] = [post] + } + }) + + props.archivePosts = archivePosts + return { props, revalidate: BLOG.NEXT_REVALIDATE_SECOND diff --git a/themes/example/LayoutArchive.js b/themes/example/LayoutArchive.js index a89265f3..4ba92d8a 100644 --- a/themes/example/LayoutArchive.js +++ b/themes/example/LayoutArchive.js @@ -3,25 +3,8 @@ import Link from 'next/link' import LayoutBase from './LayoutBase' export const LayoutArchive = props => { - const { posts } = props - const postsSortByDate = Object.create(posts) + const { archivePosts } = props - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) return (
diff --git a/themes/fukasawa/LayoutArchive.js b/themes/fukasawa/LayoutArchive.js index a63f6060..495ed6a4 100644 --- a/themes/fukasawa/LayoutArchive.js +++ b/themes/fukasawa/LayoutArchive.js @@ -3,26 +3,7 @@ import BlogArchiveItem from './components/BlogPostArchive' import LayoutBase from './LayoutBase' export const LayoutArchive = (props) => { - const { posts } = props - // 深拷贝 - const postsSortByDate = Object.create(posts) - - // 时间排序 - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) + const { archivePosts } = props useEffect(() => { const anchor = window.location.hash diff --git a/themes/hexo/LayoutArchive.js b/themes/hexo/LayoutArchive.js index 8d2a1c08..dab9d1ce 100644 --- a/themes/hexo/LayoutArchive.js +++ b/themes/hexo/LayoutArchive.js @@ -4,27 +4,7 @@ import Card from './components/Card' import LayoutBase from './LayoutBase' export const LayoutArchive = (props) => { - const { posts } = props - // 深拷贝 - const postsSortByDate = Object.create(posts) - - // 时间排序 - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) + const { archivePosts } = props useEffect(() => { const anchor = window.location.hash diff --git a/themes/matery/LayoutArchive.js b/themes/matery/LayoutArchive.js index 8d2a1c08..dab9d1ce 100644 --- a/themes/matery/LayoutArchive.js +++ b/themes/matery/LayoutArchive.js @@ -4,27 +4,7 @@ import Card from './components/Card' import LayoutBase from './LayoutBase' export const LayoutArchive = (props) => { - const { posts } = props - // 深拷贝 - const postsSortByDate = Object.create(posts) - - // 时间排序 - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) + const { archivePosts } = props useEffect(() => { const anchor = window.location.hash diff --git a/themes/medium/LayoutArchive.js b/themes/medium/LayoutArchive.js index 1410e47e..520e0b33 100644 --- a/themes/medium/LayoutArchive.js +++ b/themes/medium/LayoutArchive.js @@ -3,25 +3,8 @@ import Link from 'next/link' import LayoutBase from './LayoutBase' export const LayoutArchive = props => { - const { posts } = props - const postsSortByDate = Object.create(posts) + const { archivePosts } = props - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) return (
@@ -60,5 +43,5 @@ export const LayoutArchive = props => { ))}
- ); + ) } diff --git a/themes/next/LayoutArchive.js b/themes/next/LayoutArchive.js index 3db36dbd..ebd94ed3 100644 --- a/themes/next/LayoutArchive.js +++ b/themes/next/LayoutArchive.js @@ -3,27 +3,7 @@ import LayoutBase from './LayoutBase' import BlogPostArchive from './components/BlogPostArchive' export const LayoutArchive = (props) => { - const { posts } = props - // 深拷贝 - const postsSortByDate = Object.create(posts) - - // 时间排序 - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) + const { archivePosts } = props useEffect(() => { const anchor = window.location.hash diff --git a/themes/nobelium/LayoutArchive.js b/themes/nobelium/LayoutArchive.js index c5b3a8ba..4ba92d8a 100644 --- a/themes/nobelium/LayoutArchive.js +++ b/themes/nobelium/LayoutArchive.js @@ -3,25 +3,8 @@ import Link from 'next/link' import LayoutBase from './LayoutBase' export const LayoutArchive = props => { - const { posts } = props - const postsSortByDate = Object.create(posts) + const { archivePosts } = props - postsSortByDate.sort((a, b) => { - const dateA = new Date(a?.date?.start_date || a.createdTime) - const dateB = new Date(b?.date?.start_date || b.createdTime) - return dateB - dateA - }) - - const archivePosts = {} - - postsSortByDate.forEach(post => { - const date = post.date?.start_date.slice(0, 7) - if (archivePosts[date]) { - archivePosts[date].push(post) - } else { - archivePosts[date] = [post] - } - }) return (
@@ -58,5 +41,5 @@ export const LayoutArchive = props => { ))}
- ); + ) }