You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Gatsby站点中添加Drift聊天服务代码的位置咨询

在Gatsby博客中添加Drift聊天服务的解决方案

我来帮你搞定这个问题!针对你用的gatsby-starter-blog项目(默认没有直接暴露<head>标签),有几种简单可靠的方式来添加Drift的聊天代码,下面给你详细拆解:

方法一:用Gatsby SSR API注入(推荐,无需修改模板)

Gatsby提供了SSR(服务端渲染)API来帮我们往页面的<head>或<body>注入内容,这是最标准的做法:

  1. 在项目根目录创建一个gatsby-ssr.js文件(如果还没有的话)
  2. 把下面的代码粘贴进去,替换掉你的Drift App ID(就是代码里的XYZXYZXYZXYZ):
exports.onRenderBody = ({ setHeadComponents }) => {
  setHeadComponents([
    <script
      dangerouslySetInnerHTML={{
        __html: `
          "use strict"; !function() { var t = window.driftt = window.drift = window.driftt || []; if (!t.init) { if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice.")); t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ], t.factory = function(e) { return function() { var n = Array.prototype.slice.call(arguments); return n.unshift(e), t.push(n), t; }; }, t.methods.forEach(function(e) { t[e] = t.factory(e); }), t.load = function(t) { var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script"); o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + n + "/" + t + ".js"; var i = document.getElementsByTagName("script")[0]; i.parentNode.insertBefore(o, i); }; } }(); drift.SNIPPET_VERSION = '0.3.1'; drift.load('XYZXYZXYZXYZ');
        `,
      }}
    />,
  ]);
};

保存后重启开发服务器,Drift聊天框就会出现在你的网站上了。这个方法的好处是完全遵循Gatsby的最佳实践,不用碰任何模板文件。

方法二:使用官方Gatsby Drift插件(更简洁)

如果你不想自己写代码,用现成的插件会更省心:

  1. 先安装插件:
npm install gatsby-plugin-drift
# 或者用yarn
yarn add gatsby-plugin-drift
  1. 打开gatsby-config.js,在plugins数组里添加插件配置:
module.exports = {
  plugins: [
    // 其他已有的插件...
    {
      resolve: `gatsby-plugin-drift`,
      options: {
        appId: `XYZXYZXYZXYZ`, // 替换成你的Drift App ID
        enableDuringDevelop: false, // 可选:开发环境要不要启用,默认是false(避免开发时被打扰)
      },
    },
  ],
};

配置好后重启服务,插件会自动帮你把Drift代码注入到<head>里,非常方便。

方法三:自定义html.js模板(不推荐,除非特殊需求)

如果你的项目需要完全自定义HTML结构,可以从Gatsby的缓存目录复制出html.js模板来修改:

  1. 从项目根目录的.cache/default-html.js文件,复制一份到src/html.js
  2. 打开src/html.js,找到<head>标签,把Drift的代码直接粘贴进去:
<head>
  <!-- 保留原有的head内容,比如meta标签、样式链接等 -->
  
  <!-- Start of Async Drift Code -->
  <script> "use strict"; !function() { var t = window.driftt = window.drift = window.driftt || []; if (!t.init) { if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice.")); t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ], t.factory = function(e) { return function() { var n = Array.prototype.slice.call(arguments); return n.unshift(e), t.push(n), t; }; }, t.methods.forEach(function(e) { t[e] = t.factory(e); }), t.load = function(t) { var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script"); o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + n + "/" + t + ".js"; var i = document.getElementsByTagName("script")[0]; i.parentNode.insertBefore(o, i); }; } }(); drift.SNIPPET_VERSION = '0.3.1'; drift.load('XYZXYZXYZXYZ');
  </script>
  <!-- End of Async Drift Code -->
</head>

不过这个方法需要自己维护模板,Gatsby版本更新时可能需要同步修改模板内容,所以除非你有特殊的自定义需求,不然还是优先用前两种方法。


内容的提问来源于stack exchange,提问作者James Brightman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:15:54