mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 07:26:52 +00:00
OPEN_WRITE导流插件
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -45,7 +45,7 @@ yarn-error.log*
|
||||
/public/robots.txt
|
||||
/public/sitemap.xml
|
||||
/public/rss/*
|
||||
|
||||
/sitemap.xml
|
||||
|
||||
# yarn
|
||||
package-lock.json
|
||||
|
||||
60
components/OpenWrite.js
Normal file
60
components/OpenWrite.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import { isBrowser, loadExternalResource } from '@/lib/utils'
|
||||
import { useRouter } from 'next/router'
|
||||
import { useEffect, useRef } from 'react'
|
||||
/**
|
||||
* OpenWrite公众号导流插件
|
||||
* 使用介绍:https://openwrite.cn/guide/readmore/readmore.html#%E4%BA%8C%E3%80%81%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8
|
||||
* 登录后台配置你的博客:https://readmore.openwrite.cn/
|
||||
* @returns
|
||||
*/
|
||||
const OpenWrite = () => {
|
||||
const router = useRouter()
|
||||
const qrcode = siteConfig('OPEN_WRITE_QRCODE', '请配置公众号二维码')
|
||||
const blogId = siteConfig('OPEN_WRITE_BLOG_ID')
|
||||
const name = siteConfig('OPEN_WRITE_NAME', '请配置公众号名')
|
||||
const id = 'article-wrapper'
|
||||
const keyword = siteConfig('OPEN_WRITE_KEYWORD', '请配置公众号关键词')
|
||||
const btnText = siteConfig(
|
||||
'OPEN_WRITE_BTN_TEXT',
|
||||
'原创不易,完成人机检测,阅读全文'
|
||||
)
|
||||
|
||||
const hasLoaded = useRef(false)
|
||||
|
||||
const loadOpenWrite = async () => {
|
||||
try {
|
||||
await loadExternalResource(
|
||||
'https://readmore.openwrite.cn/js/readmore-2.0.js',
|
||||
'js'
|
||||
)
|
||||
const BTWPlugin = window?.BTWPlugin
|
||||
|
||||
if (BTWPlugin) {
|
||||
const btw = new BTWPlugin()
|
||||
window.btw = btw
|
||||
btw.init({
|
||||
qrcode,
|
||||
id,
|
||||
name,
|
||||
btnText,
|
||||
keyword,
|
||||
blogId
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('OpenWrite 加载异常', error)
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (isBrowser && blogId && !hasLoaded.current) {
|
||||
loadOpenWrite()
|
||||
hasLoaded.current = true
|
||||
}
|
||||
}, [router])
|
||||
|
||||
return <></>
|
||||
}
|
||||
|
||||
export default OpenWrite
|
||||
@@ -146,7 +146,7 @@ export function getLastPartOfUrl(url) {
|
||||
* @param type js 或 css
|
||||
* @returns {Promise<unknown>}
|
||||
*/
|
||||
export function loadExternalResource(url, type) {
|
||||
export function loadExternalResource(url, type = 'js') {
|
||||
// 检查是否已存在
|
||||
const elements =
|
||||
type === 'js'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import BLOG from '@/blog.config'
|
||||
import useNotification from '@/components/Notification'
|
||||
import OpenWrite from '@/components/OpenWrite'
|
||||
import { siteConfig } from '@/lib/config'
|
||||
import { getGlobalData, getPost, getPostBlocks } from '@/lib/db/getSiteData'
|
||||
import { useGlobal } from '@/lib/global'
|
||||
@@ -95,8 +96,12 @@ const Slug = props => {
|
||||
})
|
||||
return (
|
||||
<>
|
||||
{/* 文章布局 */}
|
||||
<Layout {...props} />
|
||||
{/* 解锁密码提示框 */}
|
||||
{post?.password && post?.password !== '' && !lock && <Notification />}
|
||||
{/* 导流工具 */}
|
||||
<OpenWrite />
|
||||
</>
|
||||
)
|
||||
}
|
||||
@@ -129,7 +134,7 @@ export async function getStaticProps({ params: { prefix }, locale }) {
|
||||
fullSlug += '.html'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 在列表内查找文章
|
||||
props.post = props?.allPages?.find(p => {
|
||||
return (
|
||||
|
||||
@@ -272,3 +272,7 @@ a.avatar-wrapper {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
display: unset;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user