diff --git a/lib/notion/getNotionConfig.js b/lib/notion/getNotionConfig.js index 9a8c5072350..029c7b96b5d 100644 --- a/lib/notion/getNotionConfig.js +++ b/lib/notion/getNotionConfig.js @@ -157,18 +157,24 @@ export async function getConfigMapFromConfigPage(allPages) { // 只导入生效的配置 if (config.enable) { // console.log('[Notion配置]', config.key, config.value) - notionConfig[config.key] = config.value || null + notionConfig[config.key] = + parseTextToJson(config.value) || config.value || null // 配置不能是undefined,至少是null } } } - // 最后检查Notion_Config页面的INLINE_CONFIG,是否是一个js对象 - const combine = Object.assign( - {}, - deepClone(notionConfig), - parseConfig(notionConfig?.INLINE_CONFIG) - ) + let combine = notionConfig + try { + // 将INLINE_CONFIG合并,@see https://docs.tangly1024.com/article/notion-next-inline-config + combine = Object.assign( + {}, + deepClone(notionConfig), + notionConfig?.INLINE_CONFIG + ) + } catch (err) { + console.warn('解析 INLINE_CONFIG 配置时出错,请检查JSON格式', err) + } return combine } @@ -187,7 +193,23 @@ export function parseConfig(configString) { const config = eval('(' + configString + ')') return config } catch (evalError) { - console.error('解析 eval(INLINE_CONFIG) 配置时出错:', evalError) + console.warn( + '解析 eval(INLINE_CONFIG) 配置时出错,请检查JSON格式', + evalError + ) return {} } } + +/** + * 解析文本为JSON + * @param text + * @returns {any|null} + */ +export function parseTextToJson(text) { + try { + return JSON.parse(text) + } catch (error) { + return null + } +} diff --git a/themes/heo/components/AnalyticsCard.js b/themes/heo/components/AnalyticsCard.js index 835f4900917..a6c17e8816d 100644 --- a/themes/heo/components/AnalyticsCard.js +++ b/themes/heo/components/AnalyticsCard.js @@ -11,31 +11,35 @@ export function AnalyticsCard(props) { const today = new Date() const diffTime = today.getTime() - targetDate.getTime() // 获取两个日期之间的毫秒数差值 const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) // 将毫秒数差值转换为天数差值 + const postCountTitle = siteConfig('HEO_POST_COUNT_TITLE', null, CONFIG) + const siteTimeTitle = siteConfig('HEO_SITE_TIME_TITLE', null, CONFIG) + const siteVisitTitle = siteConfig('HEO_SITE_VISIT_TITLE', null, CONFIG) + const siteVisitorTitle = siteConfig('HEO_SITE_VISITOR_TITLE', null, CONFIG) const { postCount } = props return <>