我认为GTM没有正确记录我的Rails应用程序的数据。当我使用预览功能时,开发人员工具中的GTM预览数据仅在初始页面加载时显示,随后的页面加载(使用turbolinks)不显示预览数据。如何使用TurboLinks设置GTM?
我已经在标题中设置了我的GTM,如下所示:
<script>
var dataLayer = [];
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-N7MDCP');</script>
<!-- End Google Tag Manager -->
然后在身体的顶部:
<script>
<% if user_signed_in? %>
dataLayer.push({'userID': '<%= current_user.id %>'},{'userCategory': 'User'});
<% end %>
</script>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N7MDCP"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- Google Tag Manager trigger for Turbolinks -->
<script type="text/javascript">
var url = window.location.href;
dataLayer.push({
'event':'pageView',
'virtualUrl': url
});
</script>
<!-- End Google Tag Manager trigger for Turbolinks -->
3条答案
按热度按时间q1qsirdb1#
这与预览模式如何注入调试器iframe有关。
它在初始页面加载时注入,但由于turbolinks替换了整个主体,因此它也从-ALL-后续页面重新加载中删除了预览面板。
可悲的是,它几乎是如何,没有多少人可以做的。
您的GTM实现可能仍在工作,但Google Tag Manager中的预览模式与turbolinks页面重新加载不兼容。
是的,这使得在turbolinks增强的站点中调试GTM成为一个主要的痛苦。
xienkqul2#
我已经挖掘了很长一段时间同样的问题,这条线索似乎是一个很好的地方离开我的解决方案。
我有Rails 7应用程序,使用turbolinks,大多数页面/表单都使用turbo处理。
发生了什么,在“PageView”触发器类型中,它只适用于重新加载gtm.js的完整页面切换,这是一个“隐藏”触发器。
对于SPA或turbolinks应用程序,您需要将触发器配置为“自定义事件”,事件名称为“pageView”(或任何您想要的),并添加触发器名称:
Ofc,那么你需要具备:
希望它能帮助别人!快乐编码!
g0czyy6m3#
请尝试
这是未经测试的。
我注意到你使用了大括号'{'