mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-23 15:09:46 +00:00
fix build
This commit is contained in:
@@ -304,13 +304,11 @@ const BLOG = {
|
|||||||
// HOSTNAME: Webmention绑定之网域,通常即为本站网址
|
// HOSTNAME: Webmention绑定之网域,通常即为本站网址
|
||||||
// TWITTER_USERNAME: 评论显示区域需要的资讯
|
// TWITTER_USERNAME: 评论显示区域需要的资讯
|
||||||
// TOKEN: Webmention的API token
|
// TOKEN: Webmention的API token
|
||||||
COMMENT_WEBMENTION: {
|
COMMENT_WEBMENTION_ENABLE: process.env.NEXT_PUBLIC_WEBMENTION_ENABLE || false,
|
||||||
ENABLE: process.env.NEXT_PUBLIC_WEBMENTION_ENABLE || false,
|
COMMENT_WEBMENTION_AUTH: process.env.NEXT_PUBLIC_WEBMENTION_AUTH || '',
|
||||||
AUTH: process.env.NEXT_PUBLIC_WEBMENTION_AUTH || '',
|
COMMENT_WEBMENTION_HOSTNAME: process.env.NEXT_PUBLIC_WEBMENTION_HOSTNAME || '',
|
||||||
HOSTNAME: process.env.NEXT_PUBLIC_WEBMENTION_HOSTNAME || '',
|
COMMENT_WEBMENTION_TWITTER_USERNAME: process.env.NEXT_PUBLIC_TWITTER_USERNAME || '',
|
||||||
TWITTER_USERNAME: process.env.NEXT_PUBLIC_TWITTER_USERNAME || '',
|
COMMENT_WEBMENTION_TOKEN: process.env.NEXT_PUBLIC_WEBMENTION_TOKEN || '',
|
||||||
TOKEN: process.env.NEXT_PUBLIC_WEBMENTION_TOKEN || ''
|
|
||||||
},
|
|
||||||
|
|
||||||
// <---- 评论插件
|
// <---- 评论插件
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ const ValineComponent = dynamic(() => import('@/components/ValineComponent'), {
|
|||||||
*/
|
*/
|
||||||
export const commentEnable = BLOG.COMMENT_TWIKOO_ENV_ID || BLOG.COMMENT_WALINE_SERVER_URL || BLOG.COMMENT_VALINE_APP_ID ||
|
export const commentEnable = BLOG.COMMENT_TWIKOO_ENV_ID || BLOG.COMMENT_WALINE_SERVER_URL || BLOG.COMMENT_VALINE_APP_ID ||
|
||||||
BLOG.COMMENT_GISCUS_REPO || BLOG.COMMENT_CUSDIS_APP_ID || BLOG.COMMENT_UTTERRANCES_REPO ||
|
BLOG.COMMENT_GISCUS_REPO || BLOG.COMMENT_CUSDIS_APP_ID || BLOG.COMMENT_UTTERRANCES_REPO ||
|
||||||
BLOG.COMMENT_GITALK_CLIENT_ID || BLOG.COMMENT_WEBMENTION.ENABLE
|
BLOG.COMMENT_GITALK_CLIENT_ID || BLOG.COMMENT_WEBMENTION_ENABLE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 评论组件
|
* 评论组件
|
||||||
@@ -119,7 +119,7 @@ const Comment = ({ siteInfo, frontMatter, className }) => {
|
|||||||
<GitalkComponent frontMatter={frontMatter} />
|
<GitalkComponent frontMatter={frontMatter} />
|
||||||
</div>)}
|
</div>)}
|
||||||
|
|
||||||
{BLOG.COMMENT_WEBMENTION.ENABLE && (<div key='WebMention'>
|
{BLOG.COMMENT_WEBMENTION_ENABLE && (<div key='WebMention'>
|
||||||
<WebMentionComponent frontMatter={frontMatter} className="px-2" />
|
<WebMentionComponent frontMatter={frontMatter} className="px-2" />
|
||||||
</div>)}
|
</div>)}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { siteConfig } from '@/lib/config'
|
|||||||
import Head from 'next/head'
|
import Head from 'next/head'
|
||||||
|
|
||||||
const CommonHead = ({ meta, children }) => {
|
const CommonHead = ({ meta, children }) => {
|
||||||
let url = siteConfig('PATH')?.length ? `${siteConfig('LINK')}/${siteConfig('SUB_PATH','')}` : siteConfig('LINK')
|
let url = siteConfig('PATH')?.length ? `${siteConfig('LINK')}/${siteConfig('SUB_PATH', '')}` : siteConfig('LINK')
|
||||||
let image
|
let image
|
||||||
if (meta) {
|
if (meta) {
|
||||||
url = `${url}/${meta.slug}`
|
url = `${url}/${meta.slug}`
|
||||||
@@ -13,7 +13,7 @@ const CommonHead = ({ meta, children }) => {
|
|||||||
const type = meta?.type || 'website'
|
const type = meta?.type || 'website'
|
||||||
const keywords = meta?.tags || siteConfig('KEYWORDS')
|
const keywords = meta?.tags || siteConfig('KEYWORDS')
|
||||||
const lang = siteConfig('LANG').replace('-', '_') // Facebook OpenGraph 要 zh_CN 這樣的格式才抓得到語言
|
const lang = siteConfig('LANG').replace('-', '_') // Facebook OpenGraph 要 zh_CN 這樣的格式才抓得到語言
|
||||||
const category = meta?.category || siteConfig('KEYWORDS') || '軟體科技' // section 主要是像是 category 這樣的分類,Facebook 用這個來抓連結的分類
|
const category = meta?.category || siteConfig('KEYWORDS') // section 主要是像是 category 這樣的分類,Facebook 用這個來抓連結的分類
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Head>
|
<Head>
|
||||||
@@ -42,15 +42,15 @@ const CommonHead = ({ meta, children }) => {
|
|||||||
<meta name="twitter:description" content={description} />
|
<meta name="twitter:description" content={description} />
|
||||||
<meta name="twitter:title" content={title} />
|
<meta name="twitter:title" content={title} />
|
||||||
|
|
||||||
{siteConfig('COMMENT_WEBMENTION').ENABLE && (
|
{siteConfig('COMMENT_WEBMENTION_ENABLE') && (
|
||||||
<>
|
<>
|
||||||
<link rel="webmention" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION').HOSTNAME}/webmention`} />
|
<link rel="webmention" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION_HOSTNAME')}/webmention`} />
|
||||||
<link rel="pingback" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION').HOSTNAME}/xmlrpc`} />
|
<link rel="pingback" href={`https://webmention.io/${siteConfig('COMMENT_WEBMENTION_HOSTNAME')}/xmlrpc`} />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{siteConfig('COMMENT_WEBMENTION').ENABLE && siteConfig('COMMENT_WEBMENTION').AUTH !== '' && (
|
{siteConfig('COMMENT_WEBMENTION_ENABLE') && siteConfig('COMMENT_WEBMENTION_AUTH') !== '' && (
|
||||||
<link href={siteConfig('COMMENT_WEBMENTION').AUTH} rel="me" />
|
<link href={siteConfig('COMMENT_WEBMENTION_AUTH')} rel="me" />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && <meta name="referrer" content="no-referrer-when-downgrade" />}
|
{JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && <meta name="referrer" content="no-referrer-when-downgrade" />}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ const WebmentionReplies = ({ target }) => {
|
|||||||
const [mentions, setMentions] = useState([])
|
const [mentions, setMentions] = useState([])
|
||||||
const fetchMentions = async (target) =>
|
const fetchMentions = async (target) =>
|
||||||
fetch(
|
fetch(
|
||||||
`https://webmention.io/api/mentions.jf2?per-page=500&target=${encodeURIComponent(target)}&token=${BLOG.COMMENT_WEBMENTION.TOKEN}`
|
`https://webmention.io/api/mentions.jf2?per-page=500&target=${encodeURIComponent(target)}&token=${BLOG.COMMENT_WEBMENTION_TOKEN}`
|
||||||
).then((response) => (response.json ? response.json() : response))
|
).then((response) => (response.json ? response.json() : response))
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function getMentions() {
|
async function getMentions() {
|
||||||
@@ -137,8 +137,8 @@ const WebmentionReplies = ({ target }) => {
|
|||||||
|
|
||||||
const WebMentionBlock = ({ frontMatter }) => {
|
const WebMentionBlock = ({ frontMatter }) => {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const url = `https://${BLOG.COMMENT_WEBMENTION.HOSTNAME}${router.asPath}`
|
const url = `https://${BLOG.COMMENT_WEBMENTION_HOSTNAME}${router.asPath}`
|
||||||
const tweet = `${frontMatter.title} by @${BLOG.COMMENT_WEBMENTION.TWITTER_USERNAME} ${url}`
|
const tweet = `${frontMatter.title} by @${BLOG.COMMENT_WEBMENTION_TWITTER_USERNAME} ${url}`
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='webmention-block'>
|
<div className='webmention-block'>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export const siteConfig = (key, defaultVal = null, extendConfig) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 其次 有传入的配置参考,则尝试读取
|
// 其次 有传入的配置参考,则尝试读取
|
||||||
if (!extendConfig) {
|
if (!val && extendConfig) {
|
||||||
val = extendConfig[key]
|
val = extendConfig[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,11 +55,21 @@ export const siteConfig = (key, defaultVal = null, extendConfig) => {
|
|||||||
if (!val) {
|
if (!val) {
|
||||||
val = BLOG[key]
|
val = BLOG[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!val) {
|
if (!val) {
|
||||||
val = defaultVal
|
return defaultVal
|
||||||
|
} else {
|
||||||
|
if (typeof val === 'string') {
|
||||||
|
return val;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
return JSON.parse(val);
|
||||||
|
} catch (error) {
|
||||||
|
// 如果值是一个字符串但不是有效的 JSON 格式,直接返回字符串
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// console.log('实际配置', key, val)
|
|
||||||
return val
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { useState, useRef, useEffect } from 'react'
|
|||||||
import { Transition } from '@headlessui/react'
|
import { Transition } from '@headlessui/react'
|
||||||
import CONFIG from '../config'
|
import CONFIG from '../config'
|
||||||
import LazyImage from '@/components/LazyImage'
|
import LazyImage from '@/components/LazyImage'
|
||||||
|
import { siteConfig } from '@/lib/config'
|
||||||
// import FeaturesElement from '@/public/images/features-element.png'
|
// import FeaturesElement from '@/public/images/features-element.png'
|
||||||
|
|
||||||
export default function Features() {
|
export default function Features() {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
* 2. 内容大部分是在此文件中写死,notion数据从props参数中传进来
|
* 2. 内容大部分是在此文件中写死,notion数据从props参数中传进来
|
||||||
* 3. 您可在此网站找到更多喜欢的组件 https://www.tailwind-kit.com/
|
* 3. 您可在此网站找到更多喜欢的组件 https://www.tailwind-kit.com/
|
||||||
*/
|
*/
|
||||||
/* eslint-disable*/
|
|
||||||
import NotionPage from '@/components/NotionPage'
|
import NotionPage from '@/components/NotionPage'
|
||||||
import Header from './components/Header'
|
import Header from './components/Header'
|
||||||
import Footer from './components/Footer'
|
import Footer from './components/Footer'
|
||||||
@@ -21,11 +20,7 @@ import { useRouter } from 'next/router'
|
|||||||
import CONFIG from './config'
|
import CONFIG from './config'
|
||||||
import Loading from '@/components/Loading'
|
import Loading from '@/components/Loading'
|
||||||
import { isBrowser } from '@/lib/utils'
|
import { isBrowser } from '@/lib/utils'
|
||||||
|
import { siteConfig } from '@/lib/config'
|
||||||
/**
|
|
||||||
* 这是个配置文件,可以方便在此统一配置信息
|
|
||||||
*/
|
|
||||||
const THEME_CONFIG = { THEME: 'landing' }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 布局框架
|
* 布局框架
|
||||||
@@ -35,9 +30,9 @@ const THEME_CONFIG = { THEME: 'landing' }
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const LayoutBase = (props) => {
|
const LayoutBase = (props) => {
|
||||||
const { meta, siteInfo, children } = props
|
const { meta, siteInfo, children } = props
|
||||||
|
|
||||||
return <div id='theme-landing' className="overflow-hidden flex flex-col justify-between bg-white">
|
return <div id='theme-landing' className="overflow-hidden flex flex-col justify-between bg-white">
|
||||||
|
|
||||||
{/* 网页SEO */}
|
{/* 网页SEO */}
|
||||||
<CommonHead meta={meta} siteInfo={siteInfo} />
|
<CommonHead meta={meta} siteInfo={siteInfo} />
|
||||||
@@ -55,14 +50,13 @@ const LayoutBase = (props) => {
|
|||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页布局
|
* 首页布局
|
||||||
* @param {*} props
|
* @param {*} props
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const LayoutIndex = (props) => {
|
const LayoutIndex = (props) => {
|
||||||
return (
|
return (
|
||||||
<LayoutBase {...props}>
|
<LayoutBase {...props}>
|
||||||
<Hero />
|
<Hero />
|
||||||
<Features />
|
<Features />
|
||||||
@@ -70,7 +64,7 @@ const LayoutIndex = (props) => {
|
|||||||
<Testimonials />
|
<Testimonials />
|
||||||
<Newsletter />
|
<Newsletter />
|
||||||
</LayoutBase>
|
</LayoutBase>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,22 +73,20 @@ const LayoutIndex = (props) => {
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
const LayoutSlug = (props) => {
|
const LayoutSlug = (props) => {
|
||||||
// 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名
|
// 如果 是 /article/[slug] 的文章路径则进行重定向到另一个域名
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
if (JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && isBrowser && router.route == '/[prefix]/[slug]') {
|
if (JSON.parse(siteConfig('LANDING_POST_REDIRECT_ENABLE', null, CONFIG)) && isBrowser && router.route === '/[prefix]/[slug]') {
|
||||||
const redirectUrl = siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + router.asPath.replace('?theme=landing', '')
|
const redirectUrl = siteConfig('LANDING_POST_REDIRECT_URL', null, CONFIG) + router.asPath.replace('?theme=landing', '')
|
||||||
router.push(redirectUrl)
|
router.push(redirectUrl)
|
||||||
return <div id='theme-landing'><Loading /></div>
|
return <div id='theme-landing'><Loading /></div>
|
||||||
}
|
}
|
||||||
|
|
||||||
return <LayoutBase {...props}>
|
return <LayoutBase {...props}>
|
||||||
|
|
||||||
<div id='container-inner' className='mx-auto max-w-screen-lg p-12'>
|
<div id='container-inner' className='mx-auto max-w-screen-lg p-12'>
|
||||||
<NotionPage {...props} />
|
<NotionPage {...props} />
|
||||||
</div>
|
</div>
|
||||||
</LayoutBase>
|
</LayoutBase>
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 其他布局暂时留空
|
// 其他布局暂时留空
|
||||||
@@ -106,13 +98,13 @@ const LayoutPostList = (props) => <LayoutBase {...props}><Hero /></LayoutBase>
|
|||||||
const LayoutTagIndex = (props) => <LayoutBase {...props}><Hero /></LayoutBase>
|
const LayoutTagIndex = (props) => <LayoutBase {...props}><Hero /></LayoutBase>
|
||||||
|
|
||||||
export {
|
export {
|
||||||
THEME_CONFIG,
|
CONFIG as THEME_CONFIG,
|
||||||
LayoutIndex,
|
LayoutIndex,
|
||||||
LayoutSearch,
|
LayoutSearch,
|
||||||
LayoutArchive,
|
LayoutArchive,
|
||||||
LayoutSlug,
|
LayoutSlug,
|
||||||
Layout404,
|
Layout404,
|
||||||
LayoutPostList,
|
LayoutPostList,
|
||||||
LayoutCategoryIndex,
|
LayoutCategoryIndex,
|
||||||
LayoutTagIndex
|
LayoutTagIndex
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { siteConfig } from '@/lib/config'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ const Nav = props => {
|
|||||||
</p>
|
</p>
|
||||||
)
|
)
|
||||||
: (
|
: (
|
||||||
<p className="ml-2 font-medium text-gray-800 dark:text-gray-300 header-name">
|
<p className="ml-2 font-medium text-gray-800 dark:text-gray-300 header-name whitespace-nowrap">
|
||||||
{siteConfig('TITLE')}
|
{siteConfig('TITLE')}
|
||||||
{/* ,{' '}<span className="font-normal">{siteConfig('HOME_BANNER_IMAGE')}</span> */}
|
{/* ,{' '}<span className="font-normal">{siteConfig('HOME_BANNER_IMAGE')}</span> */}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
Reference in New Issue
Block a user