合并4.1.1

This commit is contained in:
tangly1024.com
2023-11-21 12:20:56 +08:00
8 changed files with 294 additions and 44 deletions

View File

@@ -1,2 +1,174 @@
# 环境变量 @see https://www.nextjs.cn/docs/basic-features/environment-variables
NEXT_PUBLIC_VERSION=4.1.1
NEXT_PUBLIC_VERSION=4.1.1
# 可在此添加环境变量,去掉最左边的(# )注释即可
# Notion页面ID,必须
# NOTION_PAGE_ID=
# 非必须
# NEXT_PUBLIC_PSEUDO_STATIC=
# NEXT_PUBLIC_REVALIDATE_SECOND=
# NEXT_PUBLIC_THEME=
# NEXT_PUBLIC_THEME_SWITCH=
# NEXT_PUBLIC_LANG=
# NEXT_PUBLIC_APPEARANCE=
# NEXT_PUBLIC_APPEARANCE_DARK_TIME=
# NEXT_PUBLIC_GREETING_WORDS=
# NEXT_PUBLIC_CUSTOM_MENU=
# NEXT_PUBLIC_AUTHOR=
# NEXT_PUBLIC_BIO=
# NEXT_PUBLIC_LINK=
# NEXT_PUBLIC_KEYWORD=
# NEXT_PUBLIC_CONTACT_EMAIL=
# NEXT_PUBLIC_CONTACT_WEIBO=
# NEXT_PUBLIC_CONTACT_TWITTER=
# NEXT_PUBLIC_CONTACT_GITHUB=
# NEXT_PUBLIC_CONTACT_TELEGRAM=
# NEXT_PUBLIC_CONTACT_LINKEDIN=
# NEXT_PUBLIC_CONTACT_INSTAGRAM=
# NEXT_PUBLIC_CONTACT_BILIBILI=
# NEXT_PUBLIC_CONTACT_YOUTUBE=
# NEXT_PUBLIC_FAVICON=
# NEXT_PUBLIC_FONT_STYLE=
# NEXT_PUBLIC_FONT_URL=
# NEXT_PUBLIC_FONT_SANS=
# NEXT_PUBLIC_FONT_SERIF=
# NEXT_PUBLIC_FONT_AWESOME_PATH=
# NEXT_PUBLIC_PRISM_THEME_PREFIX_PATH=
# NEXT_PUBLIC_PRISM_THEME_SWITCH=
# NEXT_PUBLIC_PRISM_THEME_LIGHT_PATH=
# NEXT_PUBLIC_PRISM_THEME_DARK_PATH=
# NEXT_PUBLIC_CODE_MAC_BAR=
# NEXT_PUBLIC_CODE_LINE_NUMBERS=
# NEXT_PUBLIC_CODE_COLLAPSE=
# NEXT_PUBLIC_CODE_COLLAPSE_EXPAND_DEFAULT=
# NEXT_PUBLIC_MERMAID_CDN=
# NEXT_PUBLIC_QR_CODE_CDN=
# NEXT_PUBLIC_BACKGROUND_LIGHT=
# NEXT_PUBLIC_BACKGROUND_DARK=
# NEXT_PUBLIC_SUB_PATH=
# NEXT_PUBLIC_POST_SHARE_BAR=
# NEXT_PUBLIC_POST_SHARE_SERVICES=
# NEXT_PUBLIC_POST_URL_PREFIX=
# NEXT_PUBLIC_POST_LIST_STYLE=
# NEXT_PUBLIC_POST_PREVIEW=
# NEXT_PUBLIC_POST_RECOMMEND_COUNT=
# NEXT_PUBLIC_POSTS_PER_PAGE=
# NEXT_PUBLIC_POST_SORT_BY=
# NEXT_PUBLIC_ALGOLIA_APP_ID=
# ALGOLIA_ADMIN_APP_KEY=
# NEXT_PUBLIC_ALGOLIA_SEARCH_ONLY_APP_KEY=
# NEXT_PUBLIC_ALGOLIA_INDEX=
# NEXT_PUBLIC_PREVIEW_CATEGORY_COUNT=
# NEXT_PUBLIC_PREVIEW_TAG_COUNT=
# NEXT_PUBLIC_POST_DISABLE_GALLERY_CLICK=
# NEXT_PUBLIC_FIREWORKS=
# NEXT_PUBLIC_FIREWORKS_COLOR=
# NEXT_PUBLIC_SAKURA=
# NEXT_PUBLIC_NEST=
# NEXT_PUBLIC_FLUTTERINGRIBBON=
# NEXT_PUBLIC_RIBBON=
# NEXT_PUBLIC_STARRY_SKY=
# NEXT_PUBLIC_CHATBASE_ID=
# NEXT_PUBLIC_WEB_WHIZ_ENABLED=
# NEXT_PUBLIC_WEB_WHIZ_BASE_URL=
# NEXT_PUBLIC_WEB_WHIZ_CHAT_BOT_ID=
# NEXT_PUBLIC_WIDGET_PET=
# NEXT_PUBLIC_WIDGET_PET_LINK=
# NEXT_PUBLIC_WIDGET_PET_SWITCH_THEME=
# NEXT_PUBLIC_MUSIC_PLAYER=
# NEXT_PUBLIC_MUSIC_PLAYER_VISIBLE=
# NEXT_PUBLIC_MUSIC_PLAYER_AUTO_PLAY=
# NEXT_PUBLIC_MUSIC_PLAYER_LRC_TYPE=
# NEXT_PUBLIC_MUSIC_PLAYER_CDN_URL=
# NEXT_PUBLIC_MUSIC_PLAYER_ORDER=
# NEXT_PUBLIC_MUSIC_PLAYER_AUDIO_LIST=
# NEXT_PUBLIC_MUSIC_PLAYER_METING=
# NEXT_PUBLIC_MUSIC_PLAYER_METING_SERVER=
# NEXT_PUBLIC_MUSIC_PLAYER_METING_ID=
# NEXT_PUBLIC_MUSIC_PLAYER_METING_LRC_TYPE=
# NEXT_PUBLIC_COMMENT_ARTALK_SERVER=
# NEXT_PUBLIC_COMMENT_ARTALK_JS=
# NEXT_PUBLIC_COMMENT_ARTALK_CSS=
# NEXT_PUBLIC_COMMENT_ENV_ID=
# NEXT_PUBLIC_COMMENT_TWIKOO_COUNT_ENABLE=
# NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL=
# NEXT_PUBLIC_COMMENT_UTTERRANCES_REPO=
# NEXT_PUBLIC_COMMENT_GISCUS_REPO=
# NEXT_PUBLIC_COMMENT_GISCUS_REPO_ID=
# NEXT_PUBLIC_COMMENT_GISCUS_CATEGORY_ID=
# NEXT_PUBLIC_COMMENT_GISCUS_MAPPING=
# NEXT_PUBLIC_COMMENT_GISCUS_REACTIONS_ENABLED=
# NEXT_PUBLIC_COMMENT_GISCUS_EMIT_METADATA=
# NEXT_PUBLIC_COMMENT_GISCUS_INPUT_POSITION=
# NEXT_PUBLIC_COMMENT_GISCUS_LANG=
# NEXT_PUBLIC_COMMENT_GISCUS_LOADING=
# NEXT_PUBLIC_COMMENT_GISCUS_CROSSORIGIN=
# NEXT_PUBLIC_COMMENT_CUSDIS_APP_ID=
# NEXT_PUBLIC_COMMENT_CUSDIS_HOST=
# NEXT_PUBLIC_COMMENT_CUSDIS_SCRIPT_SRC=
# NEXT_PUBLIC_COMMENT_GITALK_REPO=
# NEXT_PUBLIC_COMMENT_GITALK_OWNER=
# NEXT_PUBLIC_COMMENT_GITALK_ADMIN=
# NEXT_PUBLIC_COMMENT_GITALK_CLIENT_ID=
# NEXT_PUBLIC_COMMENT_GITALK_CLIENT_SECRET=
# NEXT_PUBLIC_COMMENT_GITALK_JS_CDN_URL=
# NEXT_PUBLIC_COMMENT_GITALK_CSS_CDN_URL=
# NEXT_PUBLIC_COMMENT_GITTER_ROOM=
# NEXT_PUBLIC_COMMENT_DAO_VOICE_ID=
# NEXT_PUBLIC_COMMENT_TIDIO_ID=
# NEXT_PUBLIC_VALINE_CDN=
# NEXT_PUBLIC_VALINE_ID=
# NEXT_PUBLIC_VALINE_KEY=
# NEXT_PUBLIC_VALINE_SERVER_URLS=
# NEXT_PUBLIC_VALINE_PLACEHOLDER=
# NEXT_PUBLIC_WALINE_SERVER_URL=
# NEXT_PUBLIC_WALINE_RECENT=
# NEXT_PUBLIC_WEBMENTION_ENABLE=
# NEXT_PUBLIC_WEBMENTION_AUTH=
# NEXT_PUBLIC_WEBMENTION_HOSTNAME=
# NEXT_PUBLIC_TWITTER_USERNAME=
# NEXT_PUBLIC_WEBMENTION_TOKEN=
# NEXT_PUBLIC_ANALYTICS_VERCEL=
# NEXT_PUBLIC_ANALYTICS_BUSUANZI_ENABLE=
# NEXT_PUBLIC_ANALYTICS_BAIDU_ID=
# NEXT_PUBLIC_ANALYTICS_CNZZ_ID=
# NEXT_PUBLIC_ANALYTICS_GOOGLE_ID=
# NEXT_PUBLIC_ANALYTICS_ACKEE_TRACKER=
# NEXT_PUBLIC_ANALYTICS_ACKEE_DATA_SERVER=
# NEXT_PUBLIC_ANALYTICS_ACKEE_DOMAIN_ID=
# NEXT_PUBLIC_SEO_GOOGLE_SITE_VERIFICATION=
# NEXT_PUBLIC_SEO_BAIDU_SITE_VERIFICATION=
# NEXT_PUBLIC_ADSENSE_GOOGLE_ID=
# NEXT_PUBLIC_ADSENSE_GOOGLE_TEST=
# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_IN_ARTICLE=
# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_FLOW=
# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_NATIVE=
# NEXT_PUBLIC_ADSENSE_GOOGLE_SLOT_AUTO=
# NEXT_PUBLIC_WWAD_ID=
# NEXT_PUBLIC_WWADS_AD_BLOCK_DETECT=
# NEXT_PUBLIC_NOTION_PROPERTY_PASSWORD=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_POST=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_PAGE=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_NOTICE=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_MENU=
# NEXT_PUBLIC_NOTION_PROPERTY_TYPE_SUB_MENU=
# NEXT_PUBLIC_NOTION_PROPERTY_TITLE=
# NEXT_PUBLIC_NOTION_PROPERTY_STATUS=
# NEXT_PUBLIC_NOTION_PROPERTY_STATUS_PUBLISH=
# NEXT_PUBLIC_NOTION_PROPERTY_STATUS_INVISIBLE=
# NEXT_PUBLIC_NOTION_PROPERTY_SUMMARY=
# NEXT_PUBLIC_NOTION_PROPERTY_SLUG=
# NEXT_PUBLIC_NOTION_PROPERTY_CATEGORY=
# NEXT_PUBLIC_NOTION_PROPERTY_DATE=
# NEXT_PUBLIC_NOTION_PROPERTY_TAGS=
# NEXT_PUBLIC_NOTION_PROPERTY_ICON=
# NEXT_PUBLIC_ENABLE_RSS=
# MAILCHIMP_LIST_ID=
# MAILCHIMP_API_KEY=
# NEXT_PUBLIC_DEBUG=
# ENABLE_CACHE=
# VERCEL_ENV=
# NEXT_PUBLIC_VERSION=

View File

@@ -1,6 +1,6 @@
---
name: Feature request (新特性建议)
about: Suggest an idea for Nobelium.
about: Suggest an idea for Notion Next.
title: ''
labels: enhancement
assignees: tangly1024

View File

@@ -8,7 +8,7 @@ const BLOG = {
THEME: process.env.NEXT_PUBLIC_THEME || 'simple', // 当前主题在themes文件夹下可找到所有支持的主题主题名称就是文件夹名例如 example,fukasawa,gitbook,heo,hexo,landing,matery,medium,next,nobelium,plog,simple
THEME_SWITCH: process.env.NEXT_PUBLIC_THEME_SWITCH || false, // 是否显示切换主题按钮
LANG: process.env.NEXT_PUBLIC_LANG || 'zh-CN', // e.g 'zh-CN','en-US' see /lib/lang.js for more.
SINCE: 2021, // e.g if leave this empty, current year will be used.
SINCE: process.env.NEXT_SINCE || 2021, // e.g if leave this empty, current year will be used.
APPEARANCE: process.env.NEXT_PUBLIC_APPEARANCE || 'light', // ['light', 'dark', 'auto'], // light 日间模式 dark夜间模式 auto根据时间和主题自动夜间模式
APPEARANCE_DARK_TIME: process.env.NEXT_PUBLIC_APPEARANCE_DARK_TIME || [18, 6], // 夜间模式起至时间false时关闭根据时间自动切换夜间模式
@@ -37,6 +37,11 @@ const BLOG = {
BLOG_FAVICON: process.env.NEXT_PUBLIC_FAVICON || '/favicon.ico', // blog favicon 配置, 默认使用 /public/favicon.ico支持在线图片如 https://img.imesong.com/favicon.png
RANDOM_IMAGE_URL: process.env.NEXT_PUBLIC_RANDOM_IMAGE_URL || '', // 随机图片API,如果未配置下面的关键字,主页封面,头像,文章封面图都会被替换为随机图片
RANDOM_IMAGE_REPLACE_TEXT: process.env.NEXT_PUBLIC_RANDOM_IMAGE_NOT_REPLACE_TEXT || 'images.unsplash.com', // 触发替换图片的 url 关键字(多个支持用英文逗号分开)只有图片地址中包含此关键字才会替换为上方随机图片url
// eg: images.unsplash.com(notion图床的所有图片都会替换),如果你在 notion 里已经添加了一个随机图片 url恰巧那个服务跑路或者挂掉想一键切换所有配图可以将该 url 配置在这里
// 默认下会将你上传到 notion的主页封面图和头像也给替换建议将主页封面图和头像放在其他图床在 notion 里配置 link 即可。
// START ************网站字体*****************
FONT_STYLE: process.env.NEXT_PUBLIC_FONT_STYLE || 'font-sans', // ['font-serif','font-sans'] 两种可选,分别是衬线和无衬线: 参考 https://www.jianshu.com/p/55e410bd2115
@@ -91,7 +96,7 @@ const BLOG = {
CUSTOM_EXTERNAL_CSS: [''], // e.g. ['http://xx.com/style.css','http://xx.com/style.css']
// 侧栏布局 是否反转(左变右,右变左) 已支持主题: hexo next medium fukasawa example
LAYOUT_SIDEBAR_REVERSE: false,
LAYOUT_SIDEBAR_REVERSE: process.env.NEXT_PUBLIC_LAYOUT_SIDEBAR_REVERSE || false,
// 一个小插件展示你的facebook fan page~ @see https://tw.andys.pro/article/add-facebook-fanpage-notionnext
FACEBOOK_PAGE_TITLE: process.env.NEXT_PUBLIC_FACEBOOK_PAGE_TITLE || null, // 邊欄 Facebook Page widget 的標題欄,填''則無標題欄 e.g FACEBOOK 粉絲團'
@@ -239,7 +244,7 @@ const BLOG = {
// twikoo
COMMENT_TWIKOO_ENV_ID: process.env.NEXT_PUBLIC_COMMENT_ENV_ID || '', // TWIKOO后端地址 腾讯云环境填envIdVercel环境填域名教程https://tangly1024.com/article/notionnext-twikoo
COMMENT_TWIKOO_COUNT_ENABLE: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_COUNT_ENABLE || false, // 博客列表是否显示评论数
COMMENT_TWIKOO_CDN_URL: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL || 'https://cdn.staticfile.org/twikoo/1.6.16/twikoo.min.js', // twikoo客户端cdn
COMMENT_TWIKOO_CDN_URL: process.env.NEXT_PUBLIC_COMMENT_TWIKOO_CDN_URL || 'https://cdn.staticfile.org/twikoo/1.6.17/twikoo.min.js', // twikoo客户端cdn
// utterance
COMMENT_UTTERRANCES_REPO:
@@ -319,6 +324,9 @@ const BLOG = {
ANALYTICS_CNZZ_ID: process.env.NEXT_PUBLIC_ANALYTICS_CNZZ_ID || '', // 只需要填写站长统计的id, [cnzz_id] -> https://s9.cnzz.com/z_stat.php?id=[cnzz_id]&web_id=[cnzz_id]
ANALYTICS_GOOGLE_ID: process.env.NEXT_PUBLIC_ANALYTICS_GOOGLE_ID || '', // 谷歌Analytics的id e.g: G-XXXXXXXXXX
// Matomo 网站统计
MATOMO_HOST_URL: process.env.NEXT_PUBLIC_MATOMO_HOST_URL || '', // Matomo服务器地址不带斜杠
MATOMO_SITE_ID: process.env.NEXT_PUBLIC_MATOMO_SITE_ID || '', // Matomo网站ID
// ACKEE网站访客统计工具
ANALYTICS_ACKEE_TRACKER: process.env.NEXT_PUBLIC_ANALYTICS_ACKEE_TRACKER || '', // e.g 'https://ackee.tangly1024.com/tracker.js'
ANALYTICS_ACKEE_DATA_SERVER: process.env.NEXT_PUBLIC_ANALYTICS_ACKEE_DATA_SERVER || '', // e.g https://ackee.tangly1024.com , don't end with a slash

View File

@@ -102,43 +102,74 @@ export default function AlgoliaSearchModal({ cRef }) {
}
return (
<div id='search-wrapper' className={`${isModalOpen ? 'opacity-100' : 'invisible opacity-0 pointer-events-none'} z-30 fixed h-screen w-screen left-0 top-0 mt-12 flex items-start justify-center`}>
{/* 模态框 */}
<div className={`${isModalOpen ? 'opacity-100' : 'invisible opacity-0 translate-y-10'} flex flex-col justify-between w-full min-h-[10rem] max-w-xl dark:bg-hexo-black-gray dark:border-gray-800 bg-white dark:bg- p-5 rounded-lg z-50 shadow border hover:border-blue-600 duration-300 transition-all `}>
<div className='flex justify-between items-center'>
<div className='text-2xl text-blue-600 font-bold'>搜索</div>
<div><i className="text-gray-600 fa-solid fa-xmark p-1 cursor-pointer hover:text-blue-600" onClick={closeModal} ></i></div>
</div>
<input type="text" placeholder="在这里输入搜索关键词..." onChange={(e) => handleInputChange(e)}
className="text-black dark:text-gray-200 bg-gray-50 dark:bg-gray-600 outline-blue-500 w-full px-4 my-2 py-1 mb-4 border rounded-md" />
{/* 标签组 */}
<div className='mb-4'>
<TagGroups/>
</div>
<ul>
{searchResults.map((result) => (
<li key={result.objectID} className="replace my-2">
<a href={`${siteConfig('SUB_PATH')}/${result.slug}`} className="font-bold hover:text-blue-600 text-black dark:text-gray-200">
{result.title}
</a>
</li>
))}
</ul>
<Pagination totalPage={totalPage} page={page} switchPage={switchPage}/>
<div>{totalHit > 0 && <div>共搜索到 {totalHit} 条结果用时 {useTime} 毫秒</div> }</div>
<div className='text-gray-600 mt-2'><span><i className="fa-brands fa-algolia"></i> Algolia </span> </div>
</div>
{/* 遮罩 */}
<div onClick={closeModal} className="z-30 fixed top-0 left-0 w-full h-full flex items-center justify-center glassmorphism" />
<div
id="search-wrapper"
className={`${
isModalOpen ? 'opacity-100' : 'invisible opacity-0 pointer-events-none'
} z-30 fixed h-screen w-screen left-0 top-0 mt-12 flex items-start justify-center`}
>
{/* 模态框 */}
<div
className={`${
isModalOpen ? 'opacity-100' : 'invisible opacity-0 translate-y-10'
} flex flex-col justify-between w-full min-h-[10rem] max-w-xl dark:bg-hexo-black-gray dark:border-gray-800 bg-white dark:bg- p-5 rounded-lg z-50 shadow border hover:border-blue-600 duration-300 transition-all `}
>
<div className="flex justify-between items-center">
<div className="text-2xl text-blue-600 font-bold">搜索</div>
<div>
<i
className="text-gray-600 fa-solid fa-xmark p-1 cursor-pointer hover:text-blue-600"
onClick={closeModal}
></i>
</div>
</div>
<input
type="text"
placeholder="在这里输入搜索关键词..."
onChange={e => handleInputChange(e)}
className="text-black dark:text-gray-200 bg-gray-50 dark:bg-gray-600 outline-blue-500 w-full px-4 my-2 py-1 mb-4 border rounded-md"
/>
{/* 标签组 */}
<div className="mb-4">
<TagGroups />
</div>
<ul>
{searchResults.map(result => (
<li key={result.objectID} className="replace my-2">
<a
href={`${siteConfig('SUB_PATH', '')}/${result.slug}`}
className="font-bold hover:text-blue-600 text-black dark:text-gray-200"
>
{result.title}
</a>
</li>
))}
</ul>
<Pagination totalPage={totalPage} page={page} switchPage={switchPage} />
<div>
{totalHit > 0 && (
<div>
共搜索到 {totalHit} 条结果用时 {useTime} 毫秒
</div>
)}
</div>
<div className="text-gray-600 mt-2">
<span>
<i className="fa-brands fa-algolia"></i> Algolia
</span>{' '}
</div>
</div>
{/* 遮罩 */}
<div
onClick={closeModal}
className="z-30 fixed top-0 left-0 w-full h-full flex items-center justify-center glassmorphism"
/>
</div>
)
}

View File

@@ -149,6 +149,24 @@ const ExternalPlugin = (props) => {
/>
</>)}
{/* Matomo 统计 */}
{siteConfig('MATOMO_HOST_URL') && siteConfig('MATOMO_SITE_ID') && (
<script async dangerouslySetInnerHTML={{
__html: `
var _paq = window._paq = window._paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//${siteConfig('MATOMO_HOST_URL')}/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '${siteConfig('MATOMO_SITE_ID')}']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
`
}}/>
)}
</>
}

View File

@@ -42,7 +42,7 @@ const uploadDataToAlgolia = async(post) => {
if (!existed || !existed?.lastEditedDate || !existed?.lastIndexDate) {
needUpdateIndex = true
} else {
const lastEditedDate = new Date(existed.lastEditedDate)
const lastEditedDate = new Date(post.lastEditedDate)
const lastIndexDate = new Date(existed.lastIndexDate)
if (lastEditedDate.getTime() > lastIndexDate.getTime()) {
needUpdateIndex = true

View File

@@ -68,6 +68,25 @@ const mapImgUrl = (img, block, type = 'block', from) => {
}
if (!isEmoji(ret) && ret.indexOf('notion.so/images/page-cover') < 0) {
if (BLOG.RANDOM_IMAGE_URL) {
// 只有配置了随机图片接口,才会替换图片
const texts = BLOG.RANDOM_IMAGE_REPLACE_TEXT
let isReplace = false;
if (texts) {
const textArr = texts.split(',')
// 判断是否包含替换的文本
textArr.forEach(text => {
if (ret.indexOf(text) > -1) {
isReplace = true
}
})
} else {
isReplace = true
}
if (isReplace) {
ret = BLOG.RANDOM_IMAGE_URL
}
}
// 随机图片接口优化 防止因url一致而随机结果相同
const separator = ret.includes('?') ? '&' : '?'
// 拼接唯一识别参数,防止请求的图片被缓存

View File

@@ -8,8 +8,10 @@ import { siteConfig } from '@/lib/config'
* 通知横幅
*/
export function NoticeBar() {
const notices = siteConfig('HEO_NOTICE_BAR', null, CONFIG)
let notices = siteConfig('HEO_NOTICE_BAR', null, CONFIG)
if (typeof notices === 'string') {
notices = JSON.parse(notices)
}
if (!notices || notices?.length === 0) {
return <></>
}