有人可以解释我们应该如何将Googletagmanager与Turbolinks正确整合?
在普通页面上,我们只是在开始标记之后立即复制/粘贴此代码。
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-******"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(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=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); //f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-******');</script>
<!-- End Google Tag Manager -->
如果我在Turbolinks支持的页面中复制此代码,我可以看到只有一个网络请求(第一次加载页面时)
答案 0 :(得分:3)
它建议您在跟踪代码管理器中设置虚拟网址宏和网页浏览规则,然后将其推送到dataLayer:
$(document).on('page:change', function(){
dataLayer.push({
'event':'pageview',
'virtualUrl': window.location.pathname
});
});
答案 1 :(得分:1)
现有的两个答案都不完整。以下是完整的解决方案,以及有关如何为您的更改配置GTM的信息:
将此添加到您的网站:
<script type="text/javascript">
$(document).on('page:change', function(){
var url = window.location.href;
dataLayer.push({
'event':'pageView',
'virtualUrl': url
});
});
</script>
完成后,请在Google跟踪代码管理器中注册触发器,并将该触发器与所需的代码相关联。
完整说明可在此处找到:http://labs.wrprojects.com/how-to-use-google-tag-manager-with-rails-and-turbolinks/
答案 2 :(得分:0)
您可以将使用Turbolinks的事件绑定到page:load(而不是$(document).ready
)
$( window ).on( 'page:load', function () {
// Do something
} );
Google Tag Manager's documentation指定:
Google跟踪代码管理器通过事件支持动态网页。
他们在这里提供了一些关于事件的文档:https://developers.google.com/tag-manager/devguide#events - 但具体实现将取决于您使用GTM做什么。
答案 3 :(得分:0)
使用turbolink 5实施Google代码管理器。 复制下面的代码并粘贴在头部内。
<!-- Google Tag Manager -->
<% if Rails.env.production? %>
<script>
document.addEventListener('turbolinks:load', function(event) {
var url = event.data.url;
dataLayer.push({
'event':'pageView',
'virtualUrl': url
});
});
(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-MH56FWG');
</script>
<% end %>
<!-- End Google Tag Manager -->