Benutzerdefinierte Dimensionen in Google Analytics über das PHP-Framework setzen

Beim Einsatz von Google Analytics in Verbindung mit dem Google Tag Manager, lassen sich beliebige Daten über das PHP Framework setzen und so z.B. in benutzerdefinierten Dimensionen innerhalb von Google Analytics nutzen.

Neben einer Fülle an vordefinierten Dimensionen, die sich über Segmente anzeigen lassen, können eigene Dimensionen erstellt werden, die auf projektspezifischen Datenschichtvariablen basieren.

Datenschichtvariablen werden in einer Seite vor dem Google Tag Manager Tag per JavaScript gesetzt und so nach entsprechender Konfiguration Google Analytics zur Verfügung gestellt.

Diese Variablen können z.B. in der pre.php oder auch nach dem Absenden eines Formulars über die Framework-Funktion wWebstat::setDataLayer setzen. Beim nächsten Seitenaufruf werden sie dann an den Tag Manager übergeben.

Setzen von Data Layer Variablen in der pre.php

wWebstat::setDataLayer(array('type' => 'default', 'level' => 'height'));

Setzen von Data Layer Variablen nach dem Absenden eines Formulars. Die Variable wird beim nächsten Seitenaufruf übergeben.

wWebstat::setDataLayer(array('hasSentForm' => 'yes'));

Einbinden der gesetzten Variablen vor dem Google Tag Manager Script

  <!-- Code für Google Tag Manager -->
  <xsl:template name="googleTagManager">
    <xsl:if test="$wUsertype != 'admin' and $wUsertype != 'standard'">

      <xsl:variable name="gtmId"><xsl:value-of select="php:functionString('wVariables::getValue', 'googleTagManager_id', $wGlobalProjectPath)"/></xsl:variable>

      <wsl:php execution="post">
        if(method_exists('wWebstat', 'getDataLayerAsJson')){
          $dataLayerAsJson = wWebstat::getDataLayerAsJson();
          if($dataLayerAsJson != 'null'){
            <![CDATA[
            print '<script>dataLayer = '.$dataLayerAsJson.';</script>';
            ]]>
          }
        }
      </wsl:php>

      <noscript><iframe src="//www.googletagmanager.com/ns.html?id={$gtmId}" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
      <script type="text/javascript">
        (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'?'&amp;l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;
        f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','<xsl:value-of select="$gtmId"/>');
      </script>
    </xsl:if>
  </xsl:template>