任何人都可以帮助使用基于函数的 id 实现 Nuxt.js Google 跟踪代码管理器

2024-04-01

我安装了这段代码并将其添加到我的 nuxt.config.js 中,它工作得很好。 (链接到package https://github.com/nuxt-community/modules/tree/master/packages/google-tag-manager)

  modules: [
   ['@nuxtjs/google-tag-manager', { id: 'GTM-XXXXXXX' }],
  ]

现在我尝试实现一个返回 ID 的函数,而不是静态 ID。

我尝试将此行添加到我的 nuxt.config 中。 js 但它不起作用。显然我必须把它放在其他地方或者其他地方......

这就是我尝试过的

nuxt.config.js

const code = '1234567'
id: () => {
  return 'GTM-' + code
}

export default {
...

modules: [
   ['@nuxtjs/google-tag-manager', { id: id }],
  ]
...
}

实施这个的正确方法是什么?

我想在最后做类似的事情。

modules: [
   ['@nuxtjs/google-tag-manager', { 
       id: ({ req }) => {
         if (req.headers.referer == "exmple.com")
           return 'GTM-156'
         if (req.headers.referer == "exmple.it")
           return 'GTM-24424'
         if (req.headers.referer == "exmple.es")
           return 'GTM-2424'
       }
   }]]

EDIT:我通过重写整个模块解决了我的问题。无法使用此模块,因为它仅在构建时加载。我重写了该模块并将代码移至 nuxtServerInit 中。

nuxtServerInit 在每个请求时被调用(模块仅一次)。在请求中,我询问请求来自哪个域。根据域的不同,我将不同的 google-tag-manager id 添加到头部和插件中。


来自包文档:

modules: [
   ['@nuxtjs/google-tag-manager', { 
       id: () => {
          return axios.get('http://example.com/')
            .then(({ data }) => {
              return data.gtm_id
            })
       }
   }]]

您可以使用process.env.NODE_ENV内部函数将返回一个 ID

Edit 1

要放置 gtm id,根据 req.headers.referer,您需要为返回 id 的函数提供上下文。这可以在中间件中完成

在这里查看它是如何工作的https://github.com/nuxt-community/modules/blob/master/packages/google-tag-manager/plugin.js https://github.com/nuxt-community/modules/blob/master/packages/google-tag-manager/plugin.js

Edit 2

据我了解您的问题,在配置中包含查询上下文是行不通的。

看i18n中间件:request.locale -> store -> 更新模块(router、vuetify、moment等)https://nuxtjs.org/examples/i18n/ https://nuxtjs.org/examples/i18n/

〜/中间件/gtm.js

export default function ({ app, store }) {
  // app.$gtm contains id, you can set another from store
}

不要忘记向页面添加中间件

page.vue

export default {
  middleware: ['gtm']
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

任何人都可以帮助使用基于函数的 id 实现 Nuxt.js Google 跟踪代码管理器 的相关文章

随机推荐

  • WPF 在选择时更改 ListboxItem 突出显示颜色

    我在设置时遇到问题HighlightBrushKey of a SelectedItem of a Listbox在 WPF 中 我的目的是根据代码中给定的布尔值设置项目的颜色 我尝试了以下步骤 实现转换器 检查布尔值并返回正确的颜色 例子
  • openssl 1.1.0 中替代 AES_ctr128_encrypt 的确切替代 API 是什么?

    我需要在 CTR 模式下使用 128 位 AES 算法来从 openssl 库进行加密 但似乎相应的函数AES ctr128 encrypt已从openssl 1 1 0g中删除 因为我收到以下错误 Documentation or ref
  • Html:无需控件即可播放音频?

    当用户单击图像时 我需要播放 mp3 音频文件 我只想播放音频 即不应该有控件 小部件等 浏览器也不应该启动外部应用程序 编辑 好的 我也许可以尝试一下 flash 有推荐的轻量级Flash播放器吗 现在有办法做到这一点 把这个
  • 更改Delphi中单元的初始化顺序

    我正在使用 Delphi XE7 开发 Windows 32 位应用程序 我的应用程序包含许多单元 其中有一个初始化部分 我需要首先初始化一个特定的初始化部分 可以设置优先级吗 我尝试在 dpr 文件中写入初始化部分 但编译器拒绝了这一点
  • Backbone - 从 API 获取 JSON 数据

    这几天我在玩Backbone 我想从 Twitter 搜索 API 接收一些数据 但我真的不明白它是如何工作的 这是我的代码 function Tweet Backbone Model extend Tweets Backbone Coll
  • 调用 .next() 方法时扫描仪出现 NoSuchElementException

    在 Java 中 我收到此异常 Exception in thread main java util NoSuchElementException at java util Scanner throwFor Unknown Source a
  • pthread_mutex_t VS @synchronized 块?

    static pthread mutex t gLock global pthread mutex init gLock NULL in init pthread mutex lock gLock for int i 0 i lt mess
  • FileNotFoundError 但文件存在

    我正在创建一个导入许多 JSON 文件的 Python 应用程序 这些文件与 python 脚本位置位于同一文件夹中 在我将整个文件夹移到其他地方之前 文件已完美导入 由于脚本会在不存在文件的情况下创建一个文件 因此它会继续在主目录中创建该
  • 在 Windows 上针对 Mac/Linux 进行编译

    显然 您无法真正在 Windows 上运行 Mac 或 Linux 应用程序 但是您可以使用 MSVC 为这些平台编译二进制文件吗 显然要插入额外的编译器和工具 对于一个严肃的构建系统 您不希望每个平台都有一个构建服务器 因此拥有一个为所有
  • 在表创建脚本中显式指定排序规则有哪些优点和缺点?

    创建表时 COLLATE 子句是可选的 所以 在 CREATE TABLE T1 F1 varchar 50 COLLATE SQL Latin1 General CP1 CS AS NOT NULL F2 varchar 50 NOT N
  • 定义 ADT 时案例对象 T 和案例类 T() 之间的区别?

    假设在 scala 中我有一个 ADT 如下所示 sealed trait Animal object Animal case class Lion name String extends Animal case class Elephan
  • Perl 中的 SHA256 摘要

    我需要对电子邮件地址进行 SHA256 哈希 并且需要将结果作为字符串 我尝试了以下方法 use Digest SHA qw sha256 my data swara email protected cdn cgi l email prot
  • 使用 Waterline ORM SailsJS 的日期之间

    目标 返回两个日期之间创建的项目的列表 根据这个问题https github com balderdashy waterline issues 110 https github com balderdashy waterline issue
  • 页面加载后自动显示 qTip(jQuery 插件)工具提示

    有没有人曾经使用 qTip 创建一个工具提示来响应元素上的点击 但也设置为在页面加载后弹出 我尝试使用 setTimeout 但似乎无法让它自动加载 Thanks 您可以将 qtip 定义为在您喜欢的任何事件中显示 只需将其配置为不在事件中
  • 如何从文本框中删除重复项?

    我有一个文本框 其中每个项目都占新行 我正在尝试从此文本框中删除重复项 我想不出什么 我尝试将每个项目添加到数组中并删除重复项 但它不起作用 还有其他选择吗 yourTextBox Text string Join Environment
  • 单击时清除角度材质自动完成

    您好 我想在单击时重置角度材料自动完成的值 但我不知道怎么办 我的代码
  • 如何使用用户名和密码获取github令牌

    我正在使用 rhodes 开发移动应用程序 我想访问 github 的私人仓库 我只有用户名和密码 如何获取给定用户名和密码的令牌 一旦您只有登录名和密码 您就可以使用基本身份验证来使用它们 首先 检查此代码是否显示所需存储库的 json
  • 如何使用通配符 TABLE_DATE_RANGE() 删除大查询中的多个表?

    我正在查看文档 但没有找到使用通配符删除多个表的方法 我试图做这样的事情 但它不起作用 DROP TABLE TABLE DATE RANGE clients sessions TIMESTAMP 2017 01 01 TIMESTAMP
  • 将 grunt 附加到 VSCODE 调试器

    我正在尝试将默认的 grunt 任务附加到 vscode 调试器 所以我想要的工作流程是启动调试器并运行默认的 grunt 任务 然后我可以使用 vscode 调试器在代码中放置断点 我的启动 JSON 文件如下所示 version 0 2
  • 任何人都可以帮助使用基于函数的 id 实现 Nuxt.js Google 跟踪代码管理器

    我安装了这段代码并将其添加到我的 nuxt config js 中 它工作得很好 链接到package https github com nuxt community modules tree master packages google