1

我想在 SEO 的元标记中添加图像 url。但是如何创建图像链接以添加元标记?我正在使用盖茨比。我有src/img/img1.png图像,现在我想创建这样的图像 URL

https://website.com/src/img/img1.png 

如何在 gatsby-config.js 文件中执行此操作?

4

1 回答 1

1

大多数 Gatsby 初学者都带有一个SEO 组件,这可以让您从头开始构建一个。在内部,它使用<Helmet>一个组件,该组件将包装在其中的所有内容都放入<header>标签中。所以,给定:

import React from "react"
import PropTypes from "prop-types"
import { Helmet } from "react-helmet"
import { useStaticQuery, graphql } from "gatsby"

function SEO({ description, lang, meta, title, image }) {
  const { site } = useStaticQuery(
    graphql`
      query {
        site {
          siteMetadata {
            title
            description
            author
            image
          }
        }
      }
    `
  )

  const metaDescription = description || site.siteMetadata.description
  const defaultTitle = site.siteMetadata?.title

  return (
    <Helmet
      htmlAttributes={{
        lang,
      }}
      title={title}
      titleTemplate={defaultTitle ? `%s | ${defaultTitle}` : null}
      meta={[
        {
          name: `description`,
          content: metaDescription,
        },
        {
          property: `og:title`,
          content: title,
        },
        {
          property: `og:description`,
          content: metaDescription,
        },
        {
          property: `og:type`,
          content: `website`,
        },
        {
          name: `twitter:card`,
          content: `summary`,
        },
        {
          name: `twitter:creator`,
          content: site.siteMetadata?.author || ``,
        },
        {
          name: `twitter:title`,
          content: title,
        },
        {
          name: `twitter:description`,
          content: metaDescription,
        },
      ].concat(meta)}
    />
  )
}

SEO.defaultProps = {
  lang: `en`,
  meta: [],
  description: ``,
}

SEO.propTypes = {
  description: PropTypes.string,
  lang: PropTypes.string,
  meta: PropTypes.arrayOf(PropTypes.object),
  title: PropTypes.string.isRequired,
}

export default SEO

您可以添加 og:image 属性,例如:

{
  name: `og:image`,
  content: site.siteMetadata?.image || image,
},

此时,您可以在siteMetadata(设置在您的gatsby-config.js)中使用您的图像或将图像道具传递给您的SEO组件:

  siteMetadata: {
    title: `Gatsby Default Starter`,
    description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`,
    author: `@gatsbyjs`,
    image: `https://website.com/src/img/img1.png`
  },

或者:

<SEO image="https://website.com/src/img/img1.png" />

将您的图像放在src/img/img1.png,您有两种不同的解决方法来指向该图像。

siteMetadata: {
    title: `Gatsby Default Starter`,
    description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`,
    author: `@gatsbyjs`,
    image: `${__dirname}/src/img/img1.png`
  },

然后使用前面提到的方法使用useStaticQuery钩子获取图像。

将图像移动到/static文件夹:静态文件夹中的所有内容都将被克隆到/public具有相同内部结构的文件夹中。因此,您可以使用以下方法直接引用该图像:

    image: `/img/img1.png`

假设您的静态文件夹结构是/static/img/img1.png

于 2021-01-18T14:45:11.240 回答