Wenn man den neuen Google Analytics-Code auf “dynamischen” Websites (z.B. xt:Commerce) einsetzen möchte, ist dazu jetzt ein bisschen mehr zu tun als vorher - Er kann nicht mehr einfach ans Ende jeder Seite gesetzt werden.

Sonderlich schwierig ist der Einbau jedoch nicht: Einfach nach Anleitung eine Datei namens “analyticstracking.php” erstellen, hochladen und auf jeder Seite includen, auf der der Analytics-Code angezeigt werden soll.

JavaScript-Fehler …

Allerdings scheint sich ein kleiner Fehler in der Google-Vorlage eingeschlichen zu haben, ich hatte nach dem Einbau jedenfalls immer JavaScript-Warnungen (die schicken gelben Dreiecke) unten links im Browser stehen.

Google analyticstracking.php
Screenshot aus der Anleitung

Nach Entfernen der beiden rot eingekreisten Zeichen waren die Fehlermeldungen weg. Den rot unterstrichenen Slash habe ich beim Einbau in xt:Commerce ebenfalls weggelassen - Ich hab ihn stattdessen direkt in die Variable $virtual_page eingebaut - Das sollte aufs Gleiche hinauslaufen.

Und wer’s mag: Zusätzliche Kommentarmarken innerhalb der Scripts wären auch nicht schlecht (valid XHTML) …

Include …

Die “analyticstracking.php” muss dann noch auf jeder Seite includet werden. Das kann man entweder in der “meinShop.de/includes/application_bottom.php” machen - oder im Template. Da ich immer gerne so wenig wie möglich an System-Dateien herumbasteln möchte, habe ich mich für den Einbau über das Shop-Template entschieden.

Analytics-Tracking includen
Screenshot aus der Anleitung

Da in Template-Dateien die Smarty-Engine läuft, muss der Code aber ein wenig angepasst werden. Außerdem brauchen wir noch einen Wert für $virtual_page

In der Anleitung bei Google ist dazu Folgendes zu lesen:

Ersetzen Sie beispiel_seite_name_1 durch einen Wert, mit dem Sie die Seite, die sie erfassen wollen, eindeutig wiedererkennen. Durch diese Deklaration wird der Inhalt der Variablen an den Aufruf für _trackPageview() weitergegeben. Falls kein Wert festgelegt wurde, wird _trackPageview() lediglich normal aufgerufen.

… so wäre mein Vorschlag, gleich die komplette URL der jeweils aufgerufenen Seite dafür einzusetzen. Man sollte allerdings das http://www.meinshop.de/ bzw. https://www.meinshop.de/ herausfiltern.

Eindeutige Seitenbezeichnung

Ebenso sollte man (vermutlich) “mitgeschleifte” Session-Variablen entfernen. Ich weiß zwar noch nicht so genau ob das zutrifft, aber ich kann mir vorstellen, dass sonst jede neue Session als “eigene Seite” getrackt wird. Muss ja nicht sein.

Am Ende der “boxes.php” im Template ermitteln wir also die aktuelle Shop-Seite und weisen den Wert der Variablen $virtual_page zu - das dürfte eindeutig genug sein …


global $virtual_page;
$virtual_page = xtc_href_link(preg_replace("/.*\/([^\/]*)/","$1",$_SERVER['SCRIPT_NAME']),xtc_get_all_get_params(array('XTCsid')));
$virtual_page = str_replace(array(HTTP_SERVER,HTTPS_SERVER),'',$virtual_page);
	

… und das hier …

<?php
$virtual_page = "beispiel_seite_name_1"
include_once "analyticstracking.php" ?>

… wird entsprechend angepasst, “nach Smarty übersetzt” und ans Ende der “index.html” im Template geschrieben:

{php}
global $virtual_page;
include_once(DIR_FS_CATALOG.'analyticstracking.php');
{/php}

Hinweis: Das DIR_FS_CATALOG ist wohl nicht auf jedem Server nötig. Wenn der Server im SafeMode läuft, gibt’s ohne aber vermutlich Fehlermeldungen (Ich habe grad keine Möglichkeit, das zu testen).

 

Zusammenfassung

Für den Einbau von Google Analytics in xt:Commerce sind drei Schritte nötig: Tracking-Code hochladen, eine eindeutige Seitenbezeichnung ermitteln, Tracking-Code aufrufen.

1. “meinShop.de”

Eine Datei namens analyticstracking.php mit folgendem Inhalt erstellen und ins Hauptverzeichnis des Shops hochladen
(Statt xxx ist die Google-Konto-Nummer einzutragen):


<script type="text/javascript">
<!--
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
//-->
</script>

<script type="text/javascript">
<!--
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._initData();
pageTracker._trackPageview('<?php echo$virtual_page?>');
//-->
</script>
	

 

2. “meinShop.de/templates/meinTemplate/source/boxes.php”

Ans Ende Folgendes schreiben:


global $virtual_page;
$virtual_page = xtc_href_link(preg_replace("/.*\/([^\/]*)/","$1",$_SERVER['SCRIPT_NAME']),xtc_get_all_get_params(array('XTCsid')));
$virtual_page = str_replace(array(HTTP_SERVER,HTTPS_SERVER),'',$virtual_page);

	

… und wer (wie » hier beschrieben) die Admins nicht mitzählen möchte, fügt noch diese vier Zeilen hinzu:


if ($_SESSION['customers_status']['customers_status_id'] == 0 || isset($_GET['admin']))
	$smarty->assign('SHOW_ANALYTICS', false);
else
	$smarty->assign('SHOW_ANALYTICS', true);

	

 

3. “meinShop.de/templates/meinTemplate/index.html”

Ans Ende Folgendes schreiben:

{php}
global $virtual_page;
include_once(DIR_FS_CATALOG.'analyticstracking.php');
{/php}

… wer (wie » hier beschrieben) die Admins nicht mitzählen möchte, schreibt stattdessen:

{if $SHOW_ANALYTICS}
{php}
global $virtual_page;
include_once(DIR_FS_CATALOG.'analyticstracking.php');
{/php}
{/if}

… und damit dürfte Google Analytics korrekt eingebunden sein.

Fertig …?

Google Analytics - Status
Screenshots aus dem Admin-Menü

Vermutlich: Ob wirklich alles geklappt hat, sieht man im Analytics-Konto zwar immer erst nach 24 Stunden - aber scheint bei mir gut gelaufen zu sein.