+
diff --git a/themes/hexo/components/ArticleAdjacent.js b/themes/hexo/components/ArticleAdjacent.js
new file mode 100644
index 00000000..b7e36420
--- /dev/null
+++ b/themes/hexo/components/ArticleAdjacent.js
@@ -0,0 +1,25 @@
+import Link from 'next/link'
+import CONFIG_HEXO from '../config_hexo'
+
+/**
+ * 上一篇,下一篇文章
+ * @param {prev,next} param0
+ * @returns
+ */
+export default function ArticleAdjacent ({ prev, next }) {
+ if (!prev || !next || !CONFIG_HEXO.ARTICLE_ADJACENT) {
+ return <>>
+ }
+ return
+}
diff --git a/themes/hexo/components/ArticleCopyright.js b/themes/hexo/components/ArticleCopyright.js
new file mode 100644
index 00000000..42a27552
--- /dev/null
+++ b/themes/hexo/components/ArticleCopyright.js
@@ -0,0 +1,39 @@
+import BLOG from '@/blog.config'
+import { useGlobal } from '@/lib/global'
+import Link from 'next/link'
+import { useRouter } from 'next/router'
+import { useEffect, useState } from 'react'
+import CONFIG_HEXO from '../config_hexo'
+
+export default function ArticleCopyright () {
+ if (!CONFIG_HEXO.ARTICLE_COPYRIGHT) {
+ return <>>
+ }
+ const router = useRouter()
+ const [path, setPath] = useState(BLOG.LINK + router.asPath)
+ useEffect(() => {
+ setPath(window.location.href)
+ })
+
+ const { locale } = useGlobal()
+ return
+
+ -
+ {locale.COMMON.AUTHOR}:
+
+ {BLOG.AUTHOR}
+
+
+ -
+ {locale.COMMON.URL}:
+
+ {path}
+
+
+ -
+ {locale.COMMON.COPYRIGHT}:
+ {locale.COMMON.COPYRIGHT_NOTICE}
+
+
+
+}
diff --git a/themes/hexo/components/ArticleDetail.js b/themes/hexo/components/ArticleDetail.js
index aa4dbb4c..f0fa966b 100644
--- a/themes/hexo/components/ArticleDetail.js
+++ b/themes/hexo/components/ArticleDetail.js
@@ -8,13 +8,16 @@ import 'prismjs/components/prism-python'
import 'prismjs/components/prism-typescript'
import { useEffect, useRef } from 'react'
import { Code, Collection, CollectionRow, Equation, NotionRenderer } from 'react-notion-x'
+import ArticleAdjacent from './ArticleAdjacent'
+import ArticleCopyright from './ArticleCopyright'
/**
*
* @param {*} param0
* @returns
*/
-export default function ArticleDetail ({ post, recommendPosts, prev, next }) {
+export default function ArticleDetail (props) {
+ const { post } = props
const zoom = typeof window !== 'undefined' && mediumZoom({
container: '.notion-viewport',
background: 'rgba(0, 0, 0, 0.2)',
@@ -63,6 +66,9 @@ export default function ArticleDetail ({ post, recommendPosts, prev, next }) {
data-ad-slot="3806269138"/>
+
+
+
diff --git a/themes/hexo/components/LoadingCover.js b/themes/hexo/components/LoadingCover.js
new file mode 100644
index 00000000..c6418fad
--- /dev/null
+++ b/themes/hexo/components/LoadingCover.js
@@ -0,0 +1,8 @@
+export default function LoadingCover () {
+ return (
+ )
+}
diff --git a/themes/hexo/config_hexo.js b/themes/hexo/config_hexo.js
index ef5c2d02..8b5b6723 100644
--- a/themes/hexo/config_hexo.js
+++ b/themes/hexo/config_hexo.js
@@ -14,6 +14,9 @@ const CONFIG_HEXO = {
POST_LIST_PREVIEW: true, // 读取文章预览
NAV_TYPE: 'autoCollapse', // ['fixed','autoCollapse','normal'] 分别是固定屏幕顶部、屏幕顶部自动折叠,不固定
+ ARTICLE_ADJACENT: true, // 显示上一篇下一篇文章推荐
+ ARTICLE_COPYRIGHT: true, // 显示文章版权声明
+
WIDGET_TO_TOP: true,
WIDGET_TO_COMMENT: true, // 跳到评论区
WIDGET_DARK_MODE: true, // 夜间模式