如何在 Gatsby 站点的正文中包含带有外部脚本的嵌入代码?
How do I include embed code with an external script in the body of a Gatsby site?
我正在开发我的第一个 Gatsby 网站,除了需要放置在其中一个页面的主体中的嵌入代码外,一切顺利。我查看了 SSR API 的文档,但似乎找不到关于如何完成的任何明确文档。需要嵌入的代码如下。任何帮助将不胜感激。
下面的嵌入代码只需要放在一页的正文中(而不是网站上的每个页面)?
<style>.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</div>
如果您需要将这些内容添加到每个页面,您可以使用 html.js
来完成。
首先复制现有的 html.js
以便您可以进行持久更改:
cp .cache/default-html.js src/html.js
然后清除缓存和 public 文件夹:
盖茨比干净
然后在 <head>
.
结束前用您需要的代码编辑 src/html.js
import React from "react"
import PropTypes from "prop-types"
export default function HTML(props) {
return (
<html {...props.htmlAttributes}>
<head>
<meta charSet="utf-8" />
<meta httpEquiv="x-ua-compatible" content="ie=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
{props.headComponents}
<style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</head>
<body {...props.bodyAttributes}>
{props.preBodyComponents}
<div
key={`body`}
id="___gatsby"
dangerouslySetInnerHTML={{ __html: props.body }}
/>
{props.postBodyComponents}
</body>
</html>
)
}
HTML.propTypes = {
htmlAttributes: PropTypes.object,
headComponents: PropTypes.array,
bodyAttributes: PropTypes.object,
preBodyComponents: PropTypes.array,
body: PropTypes.string,
postBodyComponents: PropTypes.array,
}
如果只需要添加到单个页面,使用react-helmet
import React from 'react';
import Helmet from 'react-helmet';
const SecondPage = () => {
return (
<>
<Helmet>
<title>Page Two</title>
<style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</Helmet>
<h1>Page Two</h1>
<p>Welcome to page 2</p>
</>
);
};
export default SecondPage;
我正在开发我的第一个 Gatsby 网站,除了需要放置在其中一个页面的主体中的嵌入代码外,一切顺利。我查看了 SSR API 的文档,但似乎找不到关于如何完成的任何明确文档。需要嵌入的代码如下。任何帮助将不胜感激。
下面的嵌入代码只需要放在一页的正文中(而不是网站上的每个页面)?
<style>.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</div>
如果您需要将这些内容添加到每个页面,您可以使用 html.js
来完成。
首先复制现有的 html.js
以便您可以进行持久更改:
cp .cache/default-html.js src/html.js
然后清除缓存和 public 文件夹: 盖茨比干净
然后在 <head>
.
src/html.js
import React from "react"
import PropTypes from "prop-types"
export default function HTML(props) {
return (
<html {...props.htmlAttributes}>
<head>
<meta charSet="utf-8" />
<meta httpEquiv="x-ua-compatible" content="ie=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
{props.headComponents}
<style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</head>
<body {...props.bodyAttributes}>
{props.preBodyComponents}
<div
key={`body`}
id="___gatsby"
dangerouslySetInnerHTML={{ __html: props.body }}
/>
{props.postBodyComponents}
</body>
</html>
)
}
HTML.propTypes = {
htmlAttributes: PropTypes.object,
headComponents: PropTypes.array,
bodyAttributes: PropTypes.object,
preBodyComponents: PropTypes.array,
body: PropTypes.string,
postBodyComponents: PropTypes.array,
}
如果只需要添加到单个页面,使用react-helmet
import React from 'react';
import Helmet from 'react-helmet';
const SecondPage = () => {
return (
<>
<Helmet>
<title>Page Two</title>
<style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
<script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
</Helmet>
<h1>Page Two</h1>
<p>Welcome to page 2</p>
</>
);
};
export default SecondPage;