From 53c51846ef175f87b147b434e8cd9cf9e5da21bd Mon Sep 17 00:00:00 2001 From: tangly1024 Date: Sun, 27 Feb 2022 21:16:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=95=E9=A1=B5=E5=88=9D?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/notion/getAllPosts.js | 17 ++++++++++- lib/notion/getNotionData.js | 14 +++++---- pages/[slug].js | 1 - pages/about.js | 60 ------------------------------------- pages/article/[slug].js | 9 +++--- 5 files changed, 29 insertions(+), 72 deletions(-) delete mode 100644 pages/about.js diff --git a/lib/notion/getAllPosts.js b/lib/notion/getAllPosts.js index dc89beb7..ffde6490 100644 --- a/lib/notion/getAllPosts.js +++ b/lib/notion/getAllPosts.js @@ -36,7 +36,6 @@ export async function getAllPosts ({ notionPageData, from, pageType }) { properties.fullWidth = pageBlock[id].value?.format?.page_full_width ?? false properties.page_cover = getPostCover(id, pageBlock) ?? null properties.content = pageBlock[id].value?.content ?? [] - properties.icon = pageBlock[id].value?.icon ?? null properties.tagItems = properties?.tags?.map(tag => { return { name: tag, color: tagOptions.find(t => t.value === tag)?.color || 'gray' } }) || [] @@ -74,3 +73,19 @@ function getPostCover (id, block) { if (pageCover.startsWith('http')) return defaultMapImageUrl(pageCover, block[id].value) } } + +/** + * 获取博文总数 + * @param {*} param0 + * @returns + */ +export async function getAllPostCount ({ notionPageData, from }) { + if (!notionPageData) { + notionPageData = await getNotionPageData({ from }) + } + if (!notionPageData) { + return [] + } + const allPosts = await getAllPosts({ notionPageData, from, pageType: ['Post'] }) + return allPosts?.length || 0 +} diff --git a/lib/notion/getNotionData.js b/lib/notion/getNotionData.js index 80930a33..5ff2918b 100644 --- a/lib/notion/getNotionData.js +++ b/lib/notion/getNotionData.js @@ -3,7 +3,7 @@ import { getDataFromCache, setDataToCache } from '@/lib/cache/cache_manager' import { getPostBlocks } from '@/lib/notion/getPostBlocks' import { idToUuid } from 'notion-utils' import { getAllCategories } from './getAllCategories' -import { getAllPosts } from './getAllPosts' +import { getAllPosts, getAllPostCount } from './getAllPosts' import { getAllTags } from './getAllTags' /** @@ -33,8 +33,7 @@ export async function getGlobalNotionData ({ const notionPageData = await getNotionPageData({ pageId, from }) const tagOptions = notionPageData.tagOptions const allPosts = await getAllPosts({ notionPageData, from, pageType }) - const postCount = allPosts?.filter(post => post?.status?.[0] === 'Published' && (post?.type?.[0] === 'Post') - )?.length + const postCount = await getAllPostCount({ notionPageData, from }) const customNav = await getCustomNav({ notionPageData }) const categories = await getAllCategories(allPosts) const tags = await getAllTags({ allPosts, tagOptions, sliceCount: tagsCount }) @@ -89,8 +88,13 @@ async function getCustomNav ({ notionPageData }) { return [] } const allPage = await getAllPosts({ notionPageData, from: 'custom-nav', pageType: ['Page'] }) - console.log(allPage) - return [{ icon: 'fas fa-file-alt', name: '简历', to: '/' + 'resume', show: true }] + const customNav = [] + if (allPage && allPage.length > 0) { + allPage.forEach(p => { + customNav.push({ icon: p.icon, name: p.title, to: '/' + p.slug, show: true }) + }) + } + return customNav } /** diff --git a/pages/[slug].js b/pages/[slug].js index 3ffa2a56..4d1a13d9 100644 --- a/pages/[slug].js +++ b/pages/[slug].js @@ -35,7 +35,6 @@ export async function getStaticPaths () { export async function getStaticProps ({ params: { slug } }) { const from = `slug-props-${slug}` const { allPosts, categories, tags, postCount, latestPosts, customNav } = await getGlobalNotionData({ from, pageType: ['Page'] }) - const post = allPosts.find(p => p.slug === slug) if (!post) { return { props: {}, revalidate: 1 } diff --git a/pages/about.js b/pages/about.js deleted file mode 100644 index 24345e94..00000000 --- a/pages/about.js +++ /dev/null @@ -1,60 +0,0 @@ -import { getPostBlocks } from '@/lib/notion' -import { getGlobalNotionData } from '@/lib/notion/getNotionData' -import Custom404 from '@/pages/404' -import React from 'react' -import { LayoutSlug } from '@/themes' - -/** - * 关于页面,默认取notion中slug为about的文章 - * @param {*} props - * @returns - */ -const About = (props) => { - if (!props.post) { - return - } - return -} - -export async function getStaticProps () { - const from = 'about-props' - const { - allPosts, - categories, - tags, - postCount, - latestPosts - } = await getGlobalNotionData({ - from, - pageType: ['Page'] - }) - const post = allPosts.find(p => p.slug === 'about') - - if (!post) { - return { - props: {}, - revalidate: 1 - } - } - - post.blockMap = await getPostBlocks(post.id, 'slug') - - const index = allPosts.indexOf(post) - const prev = allPosts.slice(index - 1, index)[0] ?? allPosts.slice(-1)[0] - const next = allPosts.slice(index + 1, index + 2)[0] ?? allPosts[0] - - return { - props: { - post, - tags, - prev, - next, - categories, - postCount, - latestPosts - }, - revalidate: 1 - } -} - -export default About diff --git a/pages/article/[slug].js b/pages/article/[slug].js index 784b892e..d79e0cc7 100644 --- a/pages/article/[slug].js +++ b/pages/article/[slug].js @@ -35,7 +35,7 @@ export async function getStaticPaths () { export async function getStaticProps ({ params: { slug } }) { const from = `slug-props-${slug}` const { customNav, allPosts, categories, tags, postCount, latestPosts } = - await getGlobalNotionData({ from }) + await getGlobalNotionData({ from, pageType: ['Post'] }) const post = allPosts.find(p => p.slug === slug) @@ -45,10 +45,9 @@ export async function getStaticProps ({ params: { slug } }) { post.blockMap = await getPostBlocks(post.id, 'slug') - const posts = allPosts.filter(post => post?.type?.[0] === 'Post') - const index = posts.indexOf(post) - const prev = posts.slice(index - 1, index)[0] ?? posts.slice(-1)[0] - const next = posts.slice(index + 1, index + 2)[0] ?? posts[0] + const index = allPosts.indexOf(post) + const prev = allPosts.slice(index - 1, index)[0] ?? allPosts.slice(-1)[0] + const next = allPosts.slice(index + 1, index + 2)[0] ?? allPosts[0] const recommendPosts = getRecommendPost(post, allPosts)