Googletagmanager with Turbolinks

浪子不回头ぞ 提交于 2019-11-29 11:00:05

I got page refreshes working following this guide

It suggests that you set up a virtual url macro and pageview rule in Tag Manager, and then push it to the dataLayer:

$(document).on('page:change', function(){
  dataLayer.push({
    'event':'pageview',
    'virtualUrl': window.location.pathname
  });
});

You can bind events with Turbolinks to page:load (as opposed to $(document).ready)

$( window ).on( 'page:load', function () {
  // Do something
} );

Google Tag Manager's documentation specifies:

Google Tag Manager supports dynamic pages through events.

They provide some documentation about events here: https://developers.google.com/tag-manager/devguide#events - but the specific implementation will depend on what you're doing with GTM.

The two existing answers are incomplete. Here is the full solution, along with information on how to configure GTM for your change:

Add this to your site:

 <script type="text/javascript">
     $(document).on('page:change', function(){
         var url = window.location.href;

         dataLayer.push({
             'event':'pageView',
             'virtualUrl': url
         });
     });
 </script>

Once you've done that, register the trigger in Google Tag Manager and associate that trigger with the desired tags.

The complete instructions are available here: http://labs.wrprojects.com/how-to-use-google-tag-manager-with-rails-and-turbolinks/

Implement google tag manager with turbolink 5. copy the code below and paste inside the head.

        <!-- 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 -->
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!