Schick programmiert

Reparatur von GoogleAnalytics in Magento 1.4.0.1

In einer Magento-Installation (Version 1.4.0.1) wurden im GoogleAnalytics-Account fast keine Bestellungen getrackt.

Die Seite /checkout/success/ selbst wurde um ein vielfaches öfter getrackt, als Bestellungen im ECommerce-Bereich von GoogleAnalytics zu finden waren.

Nachdem ich Google wieder etwas gequält habe, bekam ich einen Blog-Beitrag von inchoo.net zu Gesicht, in dem sie das gleiche Problem hatten. http://inchoo.net/ecommerce/magento/magento-1-4-0-1-google-analytics-fix/

Sie haben es gelöst, indem sie den JavaScript-Fehler behoben haben, der dadurch entstand, das die Variable _gaq nicht definiert war und als Array genutzt wurde. Anscheinend war dies aber nicht der einzige Fehler.

In den Release-News der Magento-Version 1.4.2.0 stehen Informationen von mehreren Fixes im Modul GoogleAnalytics … In diesem Zuge wurde direkt ein komplettes Refactoring des Modules vorgenommen. Nachdem ich diese Information gelesen hatte, habe ich einen SVN-Zugang zum Magento-Projekt gesucht und auch gefunden.

http://svn.magentocommerce.com/source/branches/1.6-trunk/app/code/core/Mage/GoogleAnalytics/

Statt dem 1.6-trunk kann man hier auch durch einfaches Ändern der URL auf den 1.4-trunk zugreifen. Dort habe ich mir das gesamte Modul GoogleAnalytics Datei für Datei heruntergeladen (sind ja nur 6) und direkt in einem Patch geprüft welche Daten sich in diesen Versionen geändert haben.

Nachdem ich mit einer Woche Arbeit die GA-Statistik des Unternehmens versaut habe (indem Google gar keine Bestellungen im ECommerce-Bereich getrackt hat) bekam ich doch eine recht gute Version heraus, die ich euch gerne zur Verfügung stellen möchte.

Hier ist der Auszug eines Diff meiner Änderungen um die aktuelle Version des 1.6-trunk zum Laufen zu bekommen. Sollte der 1.6-trunk nicht mehr funktionieren, sollte es auch nicht viel ändern wenn man die Daten aus dem 1.5-trunk nutzt.

In dem hier geschriebenen Diff habe ich zusätzlich eine Änderung eingespielt, die in diesem Post beschrieben wird (nur den ersten Punkt – falsche Reihenfolge der GA-Daten und dem Erstellen des Script-Tags): http://magentist.com/magento_help/magento-google-analytics-issues/

 

Index: trunk/brodering/app/code/core/Mage/GoogleAnalytics/Model/Observer.php
===================================================================
--- trunk/brodering/app/code/core/Mage/GoogleAnalytics/Model/Observer.php	(revision 34)
+++ trunk/brodering/app/code/core/Mage/GoogleAnalytics/Model/Observer.php	(revision 35)
@@ -58,11 +58,11 @@
     public function setGoogleAnalyticsOnOrderSuccessPageView(Varien_Event_Observer $observer)
     {
-        $orderIds = $observer->getEvent()->getOrderIds();
-        if (empty($orderIds) || !is_array($orderIds)) {
+        $quoteId = Mage::getSingleton('checkout/session')->getLastQuoteId();
+        if (!$quoteId) {
             return;
         }
         $block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('google_analytics');
         if ($block) {
-            $block->setOrderIds($orderIds);
+            $block->setQuoteId($quoteId);
         }
     }
Index: trunk/brodering/app/code/core/Mage/GoogleAnalytics/Block/Ga.php
===================================================================
--- trunk/brodering/app/code/core/Mage/GoogleAnalytics/Block/Ga.php	(revision 34)
+++ trunk/brodering/app/code/core/Mage/GoogleAnalytics/Block/Ga.php	(revision 37)
@@ -105,11 +105,12 @@
     protected function _getOrdersTrackingCode()
     {
-        $orderIds = $this->getOrderIds();
-        if (empty($orderIds) || !is_array($orderIds)) {
-            return;
-        }
-        $collection = Mage::getResourceModel('sales/order_collection')
-            ->addFieldToFilter('entity_id', array('in' => $orderIds))
-        ;
+		$quoteId = $this->getQuoteId();
+		if (empty($quoteId)) {
+			return;
+		}
+		$collection = Mage::getResourceModel('sales/order_collection')
+			->addAttributeToFilter('quote_id', $quoteId)
+			->load()
+		;
         $result = array();
         foreach ($collection as $order) {
@@ -142,4 +143,7 @@
      * Render GA tracking scripts
      *
+     * @author Simon Schick- Done some fixes
+     * @see http://magentist.com/magento_help/magento-google-analytics-issues/
+     *
      * @return string
      */
@@ -154,4 +158,8 @@<script type="text/javascript">// <![CDATA[
 +    var _gaq = _gaq || []; +' . $this->_getPageTrackingCode($accountId) . '
+' . $this->_getOrdersTrackingCode() . '
+
     (function() {
         var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
@@ -159,8 +167,4 @@
         (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
     })();
-
-    var _gaq = _gaq || [];
-' . $this->_getPageTrackingCode($accountId) . '
-' . $this->_getOrdersTrackingCode() . '
// ]]></script>

Categorised as: Uncategorized


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.