我正在一个混合应用程序中,其中登录页面是用php编写的,其余应用程序是用react编写的。我想针对相同的SPA实施Google Analytics(分析)。我在componentWillMount中推送数据层,并通过index.php文件中的php代码添加了我的gtm脚本。

我面临的问题是第一次,每当页面从非反应页面转换为反应页面时,我的GTM层都不会将数据推送到gtm中。如果在React页面中进行移动,则一切工作正常。

非常感谢您的帮助。

谢谢

最佳答案

使用SPA时,您面临的问题非常普遍。

让我举一个例子:


当您从https://digitalmarketingbloq.com移至
https://digitalmarketingbloq.com/2018/08/07/how-to-filter-internal-traffic-in-google-analytics-with-google-tag-manager/
浏览器与服务器通信。页面正在呈现
然后GTM开始
在您的示例的首页视图中
您的SPA,因为与服务器建立了通信,所以可以正常工作
。但是在SPA中,从一页移动到另一页
发生在客户端。做GTM没有任何要采取的行动。


你怎么解决呢?

第一个选项是在“历史记录”(变量>配置>历史记录)部分中启用内置变量:
javascript - GTM层未推送数据-LMLPHP

其次,创建一个触发器(“触发器”>“新建”>“历史记录更改”),以触发所有“历史记录”更改:
javascript - GTM层未推送数据-LMLPHP

在预览模式下,您可以检查历史记录是否更改了您的SPA。在以下位置了解有关变量的更多信息:https://support.google.com/tagmanager/answer/7182738?hl=en&ref_topic=7182737#history在此处有关有关触发器的信息https://support.google.com/tagmanager/answer/7679322?hl=en

如果这不起作用,则需要在转换完成后在SPA中开发“虚拟页面视图”事件。让我再给您一些角度。从页面A到页面B的转换完成后,触发以下事件:

  dataLayer.push({
    'virtualPageTitle': 'My Login Screen',
    'virtualPageURL': 'https://www.my-example/login',
    'event': 'VirtualPageview'
  });


上面的代码会将virtualPageTitle和virtualPageURL作为事件推送到dataLayer,并将事件VirtualPageview推入。 GTM可以使用此功能,但是您需要创建2个用户定义的变量virtualPageTitle和virtualPageURL。触发器将为VirtualPageview。

希望这可以为您澄清一切。

关于javascript - GTM层未推送数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52639604/

10-12 14:25