diff --git a/lib/notion/getNotionData.js b/lib/notion/getNotionData.js index 80444cdb..683754b1 100644 --- a/lib/notion/getNotionData.js +++ b/lib/notion/getNotionData.js @@ -27,11 +27,15 @@ export async function getGlobalNotionData({ // 获取Notion数据 const notionPageData = deepClone(await getNotionPageData({ pageId, from })) delete notionPageData.block - delete notionPageData.collection - delete notionPageData.collectionQuery delete notionPageData.schema delete notionPageData.rawMetadata delete notionPageData.pageIds + delete notionPageData.viewIds + delete notionPageData.collection + delete notionPageData.collectionQuery + delete notionPageData.collectionId + delete notionPageData.collectionView + return notionPageData } @@ -192,12 +196,10 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) { const collectionQuery = pageRecordMap.collection_query const collectionView = pageRecordMap.collection_view const schema = collection?.schema - const tagOptions = getTagOptions(schema) - const categoryOptions = getCategoryOptions(schema) + const viewIds = rawMetadata?.view_ids const collectionData = [] const pageIds = getAllPageIds(collectionQuery, collectionId, collectionView, viewIds) - const siteInfo = getBlogInfo({ collection, block }) if (pageIds?.length === 0) { console.error('获取到的文章列表为空,请检查notion模板', collectionQuery, collection, collectionView, viewIds, pageRecordMap) } @@ -207,15 +209,12 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) { if (!value) { continue } - const properties = (await getPageProperties(id, block, schema, null, tagOptions, siteInfo)) || null + const properties = (await getPageProperties(id, block, schema, null, getTagOptions(schema))) || null if (properties) { collectionData.push(properties) } } - // 获取page作为自定义菜单 - const customNav = getCustomNav({ allPages: collectionData.filter(post => post.type === 'Page' && post.status === 'Published') }) - // 文章计数 let postCount = 0 const allPages = collectionData.filter(post => { @@ -238,8 +237,10 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) { }) } - const categories = getAllCategories({ allPages, categoryOptions, sliceCount: BLOG.PREVIEW_CATEGORY_COUNT }) - const tags = getAllTags({ allPages, sliceCount: BLOG.PREVIEW_TAG_COUNT, tagOptions }) + const categoryOptions = getAllCategories({ allPages, categoryOptions: getCategoryOptions(schema), sliceCount: BLOG.PREVIEW_CATEGORY_COUNT }) + const tagOptions = getAllTags({ allPages, sliceCount: BLOG.PREVIEW_TAG_COUNT, tagOptions: getTagOptions(schema) }) + const siteInfo = getBlogInfo({ collection, block }) + const customNav = getCustomNav({ allPages: collectionData.filter(post => post.type === 'Page' && post.status === 'Published') }) const latestPosts = getLatestPosts({ allPages, from, latestPostCount: 5 }) return { @@ -258,8 +259,6 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) { customNav, postCount, pageIds, - categories, - tags, latestPosts } } diff --git a/lib/notion/getPageProperties.js b/lib/notion/getPageProperties.js index 6079ce51..b498fd82 100644 --- a/lib/notion/getPageProperties.js +++ b/lib/notion/getPageProperties.js @@ -6,7 +6,7 @@ import { defaultMapImageUrl } from 'react-notion-x' // import { createHash } from 'crypto' import md5 from 'js-md5' -export default async function getPageProperties(id, block, schema, authToken, tagOptions, siteInfo) { +export default async function getPageProperties(id, block, schema, authToken, tagOptions) { const rawProperties = Object.entries(block?.[id]?.value?.properties || []) const excludeProperties = ['date', 'select', 'multi_select', 'person'] const value = block[id]?.value @@ -89,7 +89,7 @@ export default async function getPageProperties(id, block, schema, authToken, ta properties.lastEditedTime = formatDate(new Date(value?.last_edited_time).toString(), BLOG.LANG) properties.fullWidth = value.format?.page_full_width ?? false properties.pageIcon = getImageUrl(block[id].value?.format?.page_icon, block[id].value) ?? '' - properties.page_cover = getImageUrl(block[id].value?.format?.page_cover, block[id].value) ?? siteInfo?.pageCover + properties.page_cover = getImageUrl(block[id].value?.format?.page_cover, block[id].value) ?? '' properties.content = value.content ?? [] properties.password = properties.password ? md5(properties.slug + properties.password) diff --git a/themes/fukasawa/components/BlogCard.js b/themes/fukasawa/components/BlogCard.js index 1c42923f..328176ce 100644 --- a/themes/fukasawa/components/BlogCard.js +++ b/themes/fukasawa/components/BlogCard.js @@ -4,8 +4,14 @@ import React from 'react' import CONFIG_FUKA from '../config_fuka' import Card from './Card' -const BlogCard = ({ post, showSummary }) => { +const BlogCard = ({ post, showSummary, siteInfo }) => { const showPreview = CONFIG_FUKA.POST_LIST_PREVIEW && post.blockMap + // matery 主题默认强制显示图片 + if (post && !post.page_cover) { + post.page_cover = siteInfo?.pageCover + } + const showPageCover = CONFIG_FUKA.POST_LIST_COVER && post?.page_cover + return (
{ )}
- {CONFIG_FUKA.POST_LIST_COVER && post?.page_cover && ( + {showPageCover && (
{/* eslint-disable-next-line @next/next/no-img-element */} {post.title} {/* {post.title} */}
@@ -45,7 +51,7 @@ const BlogCard = ({ post, showSummary }) => { )}
- ); + ) } export default BlogCard diff --git a/themes/fukasawa/components/BlogListPage.js b/themes/fukasawa/components/BlogListPage.js index 98dfedff..2f0af0df 100644 --- a/themes/fukasawa/components/BlogListPage.js +++ b/themes/fukasawa/components/BlogListPage.js @@ -12,7 +12,7 @@ import PaginationSimple from './PaginationSimple' * @returns {JSX.Element} * @constructor */ -const BlogListPage = ({ page = 1, posts = [], postCount }) => { +const BlogListPage = ({ page = 1, posts = [], postCount, siteInfo }) => { const totalPage = Math.ceil(postCount / BLOG.POSTS_PER_PAGE) const showNext = page < totalPage const [colCount, changeCol] = useState(1) @@ -44,7 +44,7 @@ const BlogListPage = ({ page = 1, posts = [], postCount }) => {
{posts?.map(post => (
- +
))}
diff --git a/themes/fukasawa/components/BlogListScroll.js b/themes/fukasawa/components/BlogListScroll.js index 522d3f0e..003f789d 100644 --- a/themes/fukasawa/components/BlogListScroll.js +++ b/themes/fukasawa/components/BlogListScroll.js @@ -13,7 +13,7 @@ import throttle from 'lodash.throttle' * @constructor */ const BlogListScroll = props => { - const { posts = [] } = props + const { posts = [], siteInfo } = props const [colCount, changeCol] = React.useState(1) const { locale } = useGlobal() @@ -73,15 +73,13 @@ const BlogListScroll = props => {
{postsToShow?.map(post => (
- +
))}
-
+
{' '} {hasMore ? locale.COMMON.MORE : `${locale.COMMON.NO_MORE} 😰`}{' '}
diff --git a/themes/hexo/components/BlogPostCard.js b/themes/hexo/components/BlogPostCard.js index d0e9d1ee..819363fa 100644 --- a/themes/hexo/components/BlogPostCard.js +++ b/themes/hexo/components/BlogPostCard.js @@ -7,7 +7,7 @@ import NotionPage from '@/components/NotionPage' const BlogPostCard = ({ post, showSummary, index }) => { const showPreview = CONFIG_HEXO.POST_LIST_PREVIEW && post.blockMap - const showPageCover = CONFIG_HEXO.POST_LIST_COVER + const showPageCover = CONFIG_HEXO.POST_LIST_COVER && post?.page_cover return (
{ +const BlogPostCard = ({ post, showSummary, siteInfo }) => { const showPreview = CONFIG_MATERY.POST_LIST_PREVIEW && post.blockMap + // matery 主题默认强制显示图片 + if (post && !post.page_cover) { + post.page_cover = siteInfo.pageCover + } + const showPageCover = CONFIG_MATERY.POST_LIST_COVER && !showPreview && post?.page_cover return (
{
{/* 头部图片 填充卡片 */} - {CONFIG_MATERY.POST_LIST_COVER && !showPreview && post?.page_cover && ( + {showPageCover && (
{/* eslint-disable-next-line @next/next/no-img-element */} diff --git a/themes/matery/components/BlogPostListPage.js b/themes/matery/components/BlogPostListPage.js index 0a4eec12..2a458aea 100644 --- a/themes/matery/components/BlogPostListPage.js +++ b/themes/matery/components/BlogPostListPage.js @@ -11,7 +11,7 @@ import PaginationSimple from './PaginationSimple' * @returns {JSX.Element} * @constructor */ -const BlogPostListPage = ({ page = 1, posts = [], postCount }) => { +const BlogPostListPage = ({ page = 1, posts = [], postCount, siteInfo }) => { const totalPage = Math.ceil(postCount / BLOG.POSTS_PER_PAGE) const showPagination = postCount >= BLOG.POSTS_PER_PAGE if (!posts || posts.length === 0 || page > totalPage) { @@ -23,7 +23,7 @@ const BlogPostListPage = ({ page = 1, posts = [], postCount }) => { {/* 文章列表 */}
{posts.map(post => ( - + ))}
{showPagination && } diff --git a/themes/matery/components/BlogPostListScroll.js b/themes/matery/components/BlogPostListScroll.js index 9c243ade..105d32db 100644 --- a/themes/matery/components/BlogPostListScroll.js +++ b/themes/matery/components/BlogPostListScroll.js @@ -14,7 +14,7 @@ import { getListByPage } from '@/lib/utils' * @returns {JSX.Element} * @constructor */ -const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_MATERY.POST_LIST_SUMMARY }) => { +const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_MATERY.POST_LIST_SUMMARY, siteInfo }) => { const postsPerPage = BLOG.POSTS_PER_PAGE const [page, updatePage] = React.useState(1) const postsToShow = getListByPage(posts, page, postsPerPage) @@ -58,7 +58,7 @@ const BlogPostListScroll = ({ posts = [], currentSearch, showSummary = CONFIG_MA {/* 文章列表 */}
{postsToShow.map(post => ( - + ))}