Piwik ist die kostenlose Open-Source Alternative zu Google’s Analytics Service. Der Service kann, sofern MySQL und PHP 5.1 vorhanden, problemlos auf dem eigenen Web Server betrieben werden.
Integration in Magento
Im Administrationsinterface von Piwik benötigen wir für die Integration in Magento (hier: Version 1.4.2) den JavaScript Code, der im head Bereich eingefügt werden soll. Dieser steht unter Einstellungen -> Webseiten -> Tracking Code anzeigen.
Der Aufbau des angezeigten Tracking Codes ist in etwa wie folgt:
<!-- Piwik --> <script type="text/javascript"> var pkBaseURL = (("https:" == document.location.protocol) ? "https://my.domain/" : "http://my.domain/"); document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); </script><script type="text/javascript"> try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2); piwikTracker.trackPageView(); piwikTracker.enableLinkTracking(); } catch( err ) {} </script><noscript><p><img src="http://my.domain/piwik.php?idsite=2" style="border:0" alt="" /></p></noscript> <!-- End Piwik Tag -->
Mit der Zeile
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
wird per document.write ein Javascript File von extern eingebunden. Dies ist in Magento so ohne Weiteres nicht möglich und muss anderweitig gelöst werden.
Da der String unescaped nur http://my.domain/piwik.js ausgibt, laden wir die piwik.js einfach temporär auf unseren Rechner.
Die letzte Zeile
<noscript><p><img src="http://my.domain/piwik.php?idsite=2" style="border:0" alt="" /></p></noscript>
versucht ohne Javascript eine Verbindung zu Piwik aufzubauen – Benötigen wir natürlich auch nicht, kann daher gelöscht werden. Die Aussagekraft von Benutzern, die JavaScript deaktiviert haben, geht so und so gegen Null.
Da Magento die script Tags automatisch setzt (bzw. gar nicht setzen braucht bei Komprimierung aller .js Files zu einer Einzigen) können diese auch entfernt werden.
Übrig bleibt daher nun noch in etwa folgender Code
var pkBaseURL = (("https:" == document.location.protocol) ? "https://my.domain/" : "http://my.domain/"); try { var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2); piwikTracker.trackPageView(); piwikTracker.enableLinkTracking(); } catch( err ) {}
Dieses JS File speichern wir nun in Magento unter /js/meineJSFiles/piwik_1.js
Das vorhin von unserem Server geladene JavaSript File speichern wir ebenfalls unter /js/meineJSFiles/piwik_2.js
(zu finden unter http://my.domain/piwik.js)
Änderungen in Magento
Damit Magento nun noch die Javascript Files aus dem Ordner /js/meineJSFiles lädt, müssen wir die page.xml unseres Templates unter /app/design/frontend/default/Template-Name/layout/page.xml bearbeiten.
Im Bereich
<block type="page/html_head" name="head" as="head">
binden wir die JavaScript Dateien wie folgt ein:
<!-- Piwik Start Tag --> <action method="addJs"><script>meineJSFiles/piwik_2.js</script></action> <action method="addJs"><script>meineJSFiles/piwik_1.js</script></action> <!-- Piwik End Tag -->
Noch kurz den Magento Cache leeren und prüfen, ob Piwik nun ordnungsgemäß funktionert.

Pingback: Piwik und Magento | Tim Zahn
Pingback: Links 03/2011: Magento, PHP & e-Commerce | Matthias Zeis
Warum so umständlich?
Der Tracking-Code lässt sich auch ganz einfach im Admin-Backend über System/Konfiguration/Allgemein/Gestaltung/Fußzeile/Verschiedenes HTML eingeben, was ja genau dafür vorgesehen ist, und wird dann automatisch vor dem abschließenden body-Tag eingefügt.
Geht das genauso bei Magento 1.5?
Theoretisch ja, aber ich würde den Tip von Thomas Pretsch folgen:
Der Tracking-Code lässt sich auch ganz einfach im Admin-Backend über System/Konfiguration/Allgemein/Gestaltung/Fußzeile/Verschiedenes HTML eingeben, was ja genau dafür vorgesehen ist, und wird dann automatisch vor dem abschließenden body-Tag eingefügt.
Funktioniert auch mit 1.6 wunderbar!
Danke!