diff --git a/components/GlobalHead.js b/components/GlobalHead.js index 4723c218..c600fe2d 100644 --- a/components/GlobalHead.js +++ b/components/GlobalHead.js @@ -8,74 +8,76 @@ import { useRouter } from 'next/router' * @param {*} param0 * @returns */ -const GlobalHead = (props) => { - const { children } = props +const GlobalHead = props => { + const { children, siteInfo } = props let url = siteConfig('PATH')?.length ? `${siteConfig('LINK')}/${siteConfig('SUB_PATH', '')}` : siteConfig('LINK') let image - const meta = getSEOMeta(props, useRouter(), useGlobal()) + const router = useRouter() + const meta = getSEOMeta(props, router, useGlobal()) if (meta) { url = `${url}/${meta.slug}` image = meta.image || '/bg_image.jpg' } const title = meta?.title || siteConfig('TITLE') - const description = meta?.description || siteConfig('DESCRIPTION') + const description = meta?.description || `${siteInfo?.description}` const type = meta?.type || 'website' const keywords = meta?.tags || siteConfig('KEYWORDS') const lang = siteConfig('LANG').replace('-', '_') // Facebook OpenGraph 要 zh_CN 這樣的格式才抓得到語言 const category = meta?.category || siteConfig('KEYWORDS') // section 主要是像是 category 這樣的分類,Facebook 用這個來抓連結的分類 return ( - - {title} - - - - - {siteConfig('SEO_GOOGLE_SITE_VERIFICATION') && ( - - )} - {siteConfig('SEO_BAIDU_SITE_VERIFICATION') && ()} - - - - - - - - - - - - + + {title} + + + + + {siteConfig('SEO_GOOGLE_SITE_VERIFICATION') && ( + + )} + {siteConfig('SEO_BAIDU_SITE_VERIFICATION') && ( + + )} + + + + + + + + + + + + - {siteConfig('COMMENT_WEBMENTION_ENABLE') && ( - <> - - - - )} + {siteConfig('COMMENT_WEBMENTION_ENABLE') && ( + <> + + + + )} - {siteConfig('COMMENT_WEBMENTION_ENABLE') && siteConfig('COMMENT_WEBMENTION_AUTH') !== '' && ( - - )} + {siteConfig('COMMENT_WEBMENTION_ENABLE') && siteConfig('COMMENT_WEBMENTION_AUTH') !== '' && ( + + )} - {JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && } - {meta?.type === 'Post' && ( - <> - - - - - - )} - {children} - + {JSON.parse(siteConfig('ANALYTICS_BUSUANZI_ENABLE')) && ( + + )} + {meta?.type === 'Post' && ( + <> + + + + + + )} + {children} + ) } @@ -86,105 +88,104 @@ const GlobalHead = (props) => { */ const getSEOMeta = (props, router, global) => { const { locale } = global - const { post, tag, category, page } = props + const { post, siteInfo, tag, category, page } = props const keyword = router?.query?.s switch (router.route) { case '/': return { - title: `${siteConfig('TITLE')} | ${siteConfig('DESCRIPTION')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${siteInfo?.title} | ${siteInfo?.description}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: '', type: 'website' } case '/archive': return { - title: `${locale.NAV.ARCHIVE} | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${locale.NAV.ARCHIVE} | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'archive', type: 'website' } case '/page/[page]': return { - title: `${page} | Page | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${page} | Page | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'page/' + page, type: 'website' } case '/category/[category]': return { - title: `${category} | ${locale.COMMON.CATEGORY} | ${ - siteConfig('TITLE') || '' - }`, - description: siteConfig('DESCRIPTION'), + title: `${category} | ${locale.COMMON.CATEGORY} | ${siteInfo?.title} || ''}`, + description: `${siteInfo?.description}`, slug: 'category/' + category, - image: siteConfig('HOME_BANNER_IMAGE'), + image: `${siteInfo?.pageCover}`, type: 'website' } case '/category/[category]/page/[page]': return { - title: `${category} | ${locale.COMMON.CATEGORY} | ${ - siteConfig('TITLE') || '' - }`, - description: siteConfig('DESCRIPTION'), + title: `${category} | ${locale.COMMON.CATEGORY} | ${siteInfo?.title} || ''}`, + description: `${siteInfo?.description}`, slug: 'category/' + category, - image: siteConfig('HOME_BANNER_IMAGE'), + image: `${siteInfo?.pageCover}`, type: 'website' } case '/tag/[tag]': case '/tag/[tag]/page/[page]': return { - title: `${tag} | ${locale.COMMON.TAGS} | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${tag} | ${locale.COMMON.TAGS} | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'tag/' + tag, type: 'website' } case '/search': return { - title: `${keyword || ''}${keyword ? ' | ' : ''}${locale.NAV.SEARCH} | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${keyword || ''}${keyword ? ' | ' : ''}${locale.NAV.SEARCH} | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'search', type: 'website' } case '/search/[keyword]': case '/search/[keyword]/page/[page]': return { - title: `${keyword || ''}${keyword ? ' | ' : ''}${locale.NAV.SEARCH} | ${siteConfig('TITLE')}`, + title: `${keyword || ''}${keyword ? ' | ' : ''}${locale.NAV.SEARCH} | ${siteInfo?.title}`, description: siteConfig('TITLE'), - image: siteConfig('HOME_BANNER_IMAGE'), + image: `${siteInfo?.pageCover}`, slug: 'search/' + (keyword || ''), type: 'website' } case '/404': - return { title: `${siteConfig('TITLE')} | 页面找不到啦`, image: siteConfig('HOME_BANNER_IMAGE') } + return { + title: `${siteInfo?.title} | 页面找不到啦`, + image: `${siteInfo?.pageCover}` + } case '/tag': return { - title: `${locale.COMMON.TAGS} | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${locale.COMMON.TAGS} | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'tag', type: 'website' } case '/category': return { - title: `${locale.COMMON.CATEGORY} | ${siteConfig('TITLE')}`, - description: siteConfig('DESCRIPTION'), - image: siteConfig('HOME_BANNER_IMAGE'), + title: `${locale.COMMON.CATEGORY} | ${siteInfo?.title}`, + description: `${siteInfo?.description}`, + image: `${siteInfo?.pageCover}`, slug: 'category', type: 'website' } default: return { - title: post ? `${post?.title} | ${siteConfig('TITLE')}` : `${siteConfig('TITLE')} | loading`, + title: post ? `${post?.title} | ${siteInfo?.title}` : `${siteInfo?.title} | loading`, description: post?.summary, type: post?.type, slug: post?.slug, - image: post?.pageCoverThumbnail || siteConfig('HOME_BANNER_IMAGE'), + image: post?.pageCoverThumbnail || `${siteInfo?.pageCover}`, category: post?.category?.[0], tags: post?.tags }