fix(v2): use page title from config if not set (#4600)

This commit is contained in:
Alexey Pyltsyn 2021-04-12 19:39:34 +03:00 committed by GitHub
parent 6b0df65786
commit 2b4a52e27a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 15 deletions

View file

@ -82,15 +82,13 @@ function CanonicalUrlHeaders({permalink}: {permalink?: string}) {
export default function LayoutHead(props: Props): JSX.Element { export default function LayoutHead(props: Props): JSX.Element {
const { const {
siteConfig, siteConfig: {
favicon,
themeConfig: {metadatas},
},
i18n: {currentLocale, localeConfigs}, i18n: {currentLocale, localeConfigs},
} = useDocusaurusContext(); } = useDocusaurusContext();
const {
favicon,
themeConfig: {image: defaultImage, metadatas},
} = siteConfig;
const {title, description, image, keywords, searchMetadatas} = props; const {title, description, image, keywords, searchMetadatas} = props;
const faviconUrl = useBaseUrl(favicon); const faviconUrl = useBaseUrl(favicon);
// See https://github.com/facebook/docusaurus/issues/3317#issuecomment-754661855 // See https://github.com/facebook/docusaurus/issues/3317#issuecomment-754661855
@ -105,7 +103,7 @@ export default function LayoutHead(props: Props): JSX.Element {
{favicon && <link rel="shortcut icon" href={faviconUrl} />} {favicon && <link rel="shortcut icon" href={faviconUrl} />}
</Head> </Head>
<Seo {...{title, description, keywords, image: image || defaultImage}} /> <Seo {...{title, description, keywords, image}} />
<CanonicalUrlHeaders /> <CanonicalUrlHeaders />

View file

@ -7,8 +7,9 @@
import React from 'react'; import React from 'react';
import Head from '@docusaurus/Head'; import Head from '@docusaurus/Head';
import {useThemeConfig, useTitleFormatter} from '@docusaurus/theme-common';
import useBaseUrl from '@docusaurus/useBaseUrl'; import useBaseUrl from '@docusaurus/useBaseUrl';
import {useTitleFormatter} from '@docusaurus/theme-common';
import type {Props} from '@theme/Seo'; import type {Props} from '@theme/Seo';
export default function Seo({ export default function Seo({
@ -17,13 +18,14 @@ export default function Seo({
keywords, keywords,
image, image,
}: Props): JSX.Element { }: Props): JSX.Element {
const metaTitle = useTitleFormatter(title); const {image: defaultImage} = useThemeConfig();
const metaImageUrl = useBaseUrl(image, {absolute: true}); const pageTitle = useTitleFormatter(title);
const pageImage = useBaseUrl(image || defaultImage, {absolute: true});
return ( return (
<Head> <Head>
{title && <title>{metaTitle}</title>} <title>{pageTitle}</title>
{title && <meta property="og:title" content={metaTitle} />} <meta property="og:title" content={pageTitle} />
{description && <meta name="description" content={description} />} {description && <meta name="description" content={description} />}
{description && <meta property="og:description" content={description} />} {description && <meta property="og:description" content={description} />}
@ -37,9 +39,9 @@ export default function Seo({
/> />
)} )}
{image && <meta property="og:image" content={metaImageUrl} />} {pageImage && <meta property="og:image" content={pageImage} />}
{image && <meta name="twitter:image" content={metaImageUrl} />} {pageImage && <meta name="twitter:image" content={pageImage} />}
{image && <meta name="twitter:card" content="summary_large_image" />} {pageImage && <meta name="twitter:card" content="summary_large_image" />}
</Head> </Head>
); );
} }

View file

@ -100,6 +100,7 @@ export type ThemeConfig = {
prism: PrismConfig; prism: PrismConfig;
footer?: Footer; footer?: Footer;
hideableSidebar: boolean; hideableSidebar: boolean;
image: string;
}; };
export function useThemeConfig(): ThemeConfig { export function useThemeConfig(): ThemeConfig {