Skip to content

Commit 848a5da

Browse files
committed
feat: react helmet seo perfect
1 parent ef8206e commit 848a5da

File tree

7 files changed

+45
-17
lines changed

7 files changed

+45
-17
lines changed

client/pages/archives/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { NextPage } from 'next';
33
import { useTranslations } from 'next-intl';
44
import Link from 'next/link';
55
import { useContext } from 'react';
6+
import { Helmet } from 'react-helmet';
67

78
import { ListTrail } from '@/components/Animation/Trail';
89
import { ArticleRecommend } from '@/components/ArticleRecommend';
@@ -69,6 +70,9 @@ const Archives: NextPage<IProps> = ({ articles }) => {
6970
<DoubleColumnLayout
7071
leftNode={
7172
<div className={style.content}>
73+
<Helmet>
74+
<title>{`${t('archives')} - ${setting.systemTitle}`}</title>
75+
</Helmet>
7276
<div className={style.summary}>
7377
<p>
7478
<span>{t('archives')}</span>

client/pages/article/[id].tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ const Article: NextPage<IProps> = ({ article }) => {
8383
<>
8484
{checkPassWordModal}
8585
<Helmet>
86-
<title>{(article?.title || t('unknownTitle')) + ' | ' + setting.systemTitle}</title>
86+
<title>{(article?.title || t('unknownTitle')) + ' - ' + setting.systemTitle}</title>
8787
</Helmet>
8888
<ImageViewer containerSelector="#js-article-wrapper">
8989
<article id="js-article-wrapper" className={style.articleWrap}>

client/pages/category/[category].tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Tags } from '@components/Tags';
33
import { NextPage } from 'next';
44
import { useTranslations } from 'next-intl';
55
import { useCallback, useContext, useEffect, useState } from 'react';
6+
import { Helmet } from 'react-helmet';
67
import InfiniteScroll from 'react-infinite-scroller';
78

89
import { ArticleRecommend } from '@/components/ArticleRecommend';
@@ -49,6 +50,9 @@ const Home: NextPage<IProps> = ({ articles: defaultArticles = [], total, categor
4950

5051
return (
5152
<div className={style.wrapper}>
53+
<Helmet>
54+
<title>{`${category?.label} - ${t('categoryArticle')} - ${setting.systemTitle}`}</title>
55+
</Helmet>
5256
<DoubleColumnLayout
5357
leftNode={
5458
<>

client/pages/knowledge/[pId]/[id]/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { LeftOutlined, RightOutlined } from '@ant-design/icons';
22
import { Breadcrumb } from 'antd';
33
import cls from 'classnames';
44
import { NextPage } from 'next';
5-
import Link from 'next/link';
65
import { useTranslations } from 'next-intl';
7-
import React, { useEffect, useMemo } from 'react';
6+
import Link from 'next/link';
7+
import { useContext, useEffect, useMemo } from 'react';
8+
import { Helmet } from 'react-helmet';
89

910
import { Comment } from '@/components/Comment';
1011
import { ImageViewer } from '@/components/ImageViewer';
@@ -14,6 +15,7 @@ import { Toc } from '@/components/Toc';
1415
import { DoubleColumnLayout } from '@/layout/DoubleColumnLayout';
1516
import { KnowledgeProvider } from '@/providers/knowledge';
1617

18+
import { GlobalContext } from '@/context/global';
1719
import style from './index.module.scss';
1820

1921
interface IProps {
@@ -28,6 +30,7 @@ const Page: NextPage<IProps> = ({ pId, id, book, chapter }) => {
2830
const chapters = book.children || [];
2931
const tocs = chapter.toc ? JSON.parse(chapter.toc) : [];
3032
const idx = chapters.findIndex((t) => t.id === chapter.id);
33+
const { setting } = useContext(GlobalContext);
3134

3235
const prev = useMemo(() => {
3336
if (idx <= 0) {
@@ -72,6 +75,9 @@ const Page: NextPage<IProps> = ({ pId, id, book, chapter }) => {
7275
<DoubleColumnLayout
7376
leftNode={
7477
<>
78+
<Helmet>
79+
<title>{`${book.title} - ${t('knowledge')} - ${setting.systemTitle}`}</title>
80+
</Helmet>
7581
<div className={cls(style.breadcrump)}>
7682
<Breadcrumb>
7783
<Breadcrumb.Item>

client/pages/knowledge/[pId]/index.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { Footer } from '@components/Footer';
33
import { Breadcrumb, Button } from 'antd';
44
import cls from 'classnames';
55
import { NextPage } from 'next';
6-
import Link from 'next/link';
76
import { useTranslations } from 'next-intl';
8-
import React, { useCallback, useContext, useMemo } from 'react';
7+
import Link from 'next/link';
8+
import { useCallback, useContext, useMemo } from 'react';
9+
import { Helmet } from 'react-helmet';
910

1011
import { ListTrail } from '@/components/Animation/Trail';
1112
import { KnowledgeList } from '@/components/KnowledgeList';
@@ -67,6 +68,9 @@ const Page: NextPage<IProps> = ({ pId, book, otherBooks = [] }) => {
6768
minHeight={'0px'}
6869
leftNode={
6970
<div className={style.content}>
71+
<Helmet>
72+
<title>{`${book.title} - ${t('knowledge')} - ${setting.systemTitle}`}</title>
73+
</Helmet>
7074
<section className={cls(style.tocWrapper)}>
7175
<header>{book.title}</header>
7276
<main className={style.bgMain}>

client/pages/knowledge/index.tsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { NextPage } from 'next';
44
import { useTranslations } from 'next-intl';
55
import { useCallback, useContext, useEffect, useState } from 'react';
66
import InfiniteScroll from 'react-infinite-scroller';
7+
import { Helmet } from 'react-helmet';
78

89
import { ArticleRecommend } from '@/components/ArticleRecommend';
910
import { GlobalContext } from '@/context/global';
@@ -45,18 +46,23 @@ const Page: NextPage<IHomeProps> = ({ books: defaultBooks = [], total = 0 }) =>
4546
<>
4647
<DoubleColumnLayout
4748
leftNode={
48-
<InfiniteScroll
49-
pageStart={1}
50-
loadMore={getArticles}
51-
hasMore={page * pageSize < total}
52-
loader={
53-
<div className={'loading'} key={0}>
54-
{t('gettingKnowledge')}
55-
</div>
56-
}
57-
>
58-
<KnowledgeList knowledges={books} />
59-
</InfiniteScroll>
49+
<>
50+
<Helmet>
51+
<title>{`${t('knowledge')} - ${setting.systemTitle}`}</title>
52+
</Helmet>
53+
<InfiniteScroll
54+
pageStart={1}
55+
loadMore={getArticles}
56+
hasMore={page * pageSize < total}
57+
loader={
58+
<div className={'loading'} key={0}>
59+
{t('gettingKnowledge')}
60+
</div>
61+
}
62+
>
63+
<KnowledgeList knowledges={books} />
64+
</InfiniteScroll>
65+
</>
6066
}
6167
rightNode={
6268
<div className={'sticky'}>

client/pages/tag/[tag].tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { NextPage } from 'next';
55
import { useTranslations } from 'next-intl';
66
import { useCallback, useContext, useEffect, useState } from 'react';
77
import InfiniteScroll from 'react-infinite-scroller';
8+
import { Helmet } from 'react-helmet';
89

910
import { ArticleRecommend } from '@/components/ArticleRecommend';
1011
import { GlobalContext } from '@/context/global';
@@ -52,6 +53,9 @@ const Home: NextPage<IProps> = ({ articles: defaultArticles = [], total, tag })
5253
<DoubleColumnLayout
5354
leftNode={
5455
<>
56+
<Helmet>
57+
<title>{`${tag.label} - ${t('tagTitle')} - ${setting.systemTitle}`}</title>
58+
</Helmet>
5559
<div className={style.tagOrCategoryDetail}>
5660
<p>
5761
{t('yu')} <span>{tag.label}</span> {t('tagRelativeArticles')}

0 commit comments

Comments
 (0)