diff --git a/lib/lang/en-US.js b/lib/lang/en-US.js index 4d1e177be3e..6b40a44cdaa 100644 --- a/lib/lang/en-US.js +++ b/lib/lang/en-US.js @@ -22,6 +22,7 @@ export default { COMMON: { THEME: 'Theme', ARTICLE_LIST: 'Article List', + RECOMMEND_POSTS: 'Recommend Posts', MORE: 'More', NO_MORE: 'No More', LATEST_POSTS: 'Latest posts', diff --git a/lib/lang/zh-CN.js b/lib/lang/zh-CN.js index 85535fd6af2..c49ed54431f 100644 --- a/lib/lang/zh-CN.js +++ b/lib/lang/zh-CN.js @@ -22,6 +22,7 @@ export default { COMMON: { THEME: 'Theme', ARTICLE_LIST: '文章列表', + RECOMMEND_POSTS: '推荐文章', MORE: '更多', NO_MORE: '没有更多了', LATEST_POSTS: '最新发布', diff --git a/lib/notion/getPostBlocks.js b/lib/notion/getPostBlocks.js index 8bac9e2ad3f..2859345f72c 100644 --- a/lib/notion/getPostBlocks.js +++ b/lib/notion/getPostBlocks.js @@ -81,49 +81,69 @@ export async function getPageWithRetry(id, from, retryAttempts = 3) { function filterPostBlocks(id, blockMap, slice) { const clonePageBlock = deepClone(blockMap) let count = 0 + const blocksToProcess = Object.keys(clonePageBlock?.block || {}) // 循环遍历文档的每个block - for (const i in clonePageBlock?.block) { - const b = clonePageBlock?.block[i] - if (slice && slice > 0 && count > slice) { - delete clonePageBlock?.block[i] - continue + for (let i = 0; i < blocksToProcess.length; i++) { + const blockId = blocksToProcess[i] + const b = clonePageBlock?.block[blockId] + + if (slice && slice > 0 && count > slice) { + delete clonePageBlock?.block[blockId] + continue + } + + // 当BlockId等于PageId时移除 + if (b?.value?.id === id) { + // 此block含有敏感信息 + delete b?.value?.properties + continue + } + + count++ + + if (b?.value?.type === 'sync_block' && b?.value?.children) { + const childBlocks = b.value.children + // 移除同步块 + delete clonePageBlock.block[blockId] + // 用子块替代同步块 + childBlocks.forEach((childBlock, index) => { + const newBlockId = `${blockId}_child_${index}` + clonePageBlock.block[newBlockId] = childBlock + blocksToProcess.splice(i + index + 1, 0, newBlockId) + }) + // 重新处理新加入的子块 + i-- + continue + } + + // 处理 c++、c#、汇编等语言名字映射 + if (b?.value?.type === 'code') { + if (b?.value?.properties?.language?.[0][0] === 'C++') { + b.value.properties.language[0][0] = 'cpp' } - // 当BlockId等于PageId时移除 - if (b?.value?.id === id) { - // 此block含有敏感信息 - delete b?.value?.properties - continue + if (b?.value?.properties?.language?.[0][0] === 'C#') { + b.value.properties.language[0][0] = 'csharp' } - - count++ - // 处理 c++、c#、汇编等语言名字映射 - if (b?.value?.type === 'code') { - if (b?.value?.properties?.language?.[0][0] === 'C++') { - b.value.properties.language[0][0] = 'cpp' - } - if (b?.value?.properties?.language?.[0][0] === 'C#') { - b.value.properties.language[0][0] = 'csharp' - } - if (b?.value?.properties?.language?.[0][0] === 'Assembly') { - b.value.properties.language[0][0] = 'asm6502' - } - } - - // 如果是文件,或嵌入式PDF,需要重新加密签名 - if ( - (b?.value?.type === 'file' || - b?.value?.type === 'pdf' || - b?.value?.type === 'video' || - b?.value?.type === 'audio') && - b?.value?.properties?.source?.[0][0] && - b?.value?.properties?.source?.[0][0].indexOf('amazonaws.com') > 0 - ) { - const oldUrl = b?.value?.properties?.source?.[0][0] - const newUrl = `https://notion.so/signed/${encodeURIComponent(oldUrl)}?table=block&id=${b?.value?.id}` - b.value.properties.source[0][0] = newUrl + if (b?.value?.properties?.language?.[0][0] === 'Assembly') { + b.value.properties.language[0][0] = 'asm6502' } } + + // 如果是文件,或嵌入式PDF,需要重新加密签名 + if ( + (b?.value?.type === 'file' || + b?.value?.type === 'pdf' || + b?.value?.type === 'video' || + b?.value?.type === 'audio') && + b?.value?.properties?.source?.[0][0] && + b?.value?.properties?.source?.[0][0].indexOf('amazonaws.com') > 0 + ) { + const oldUrl = b?.value?.properties?.source?.[0][0] + const newUrl = `https://notion.so/signed/${encodeURIComponent(oldUrl)}?table=block&id=${b?.value?.id}` + b.value.properties.source[0][0] = newUrl + } +} // 去掉不用的字段 if (id === BLOG.NOTION_PAGE_ID) { diff --git a/themes/heo/components/BlogPostCard.js b/themes/heo/components/BlogPostCard.js index 5b567422908..afd11ce66d7 100644 --- a/themes/heo/components/BlogPostCard.js +++ b/themes/heo/components/BlogPostCard.js @@ -30,7 +30,7 @@ const BlogPostCard = ({ index, post, showSummary, siteInfo }) => { {/* 图片封面 */} {showPageCover && ( -