Ankündigung

Einklappen
Keine Ankündigung bisher.

Google Enhanced E-Commerce Analytics 1.2.0

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Google Enhanced E-Commerce Analytics 1.2.0

    In der Zeile 32 in der Datei includes/classes/observers/class.ec_analytics.php ist am Ende ein Punkt. Müsste das nicht ein Komma sein?

    'NOTIFY_HEADER_START_LOGIN_TIMEOUT'.

    #2
    Ja, ist ein Tippfehler, im aktuellen Download ab sofort behoben.

    Kommentar


      #3


      Jetzt muss ich das nur noch zum Laufen bringen. Startseite und Kategorie funktioniert noch nach dem Installieren und seh auch den Kategorie-Zugriff im Analytics-Frontend. Login ins Kundenkonto geht auch, seh ich auch im Frontend. Aber sobald ich mir einen Artikel anzeigen lassen will, kommt ein 500'er Serverfehler :(

      Leider schreibt mein Webserver keine Logfiles mehr seit dem letzten Ubuntu-Upgrade auf die 16.04 LTS, daher weiß ich im Moment überhaupt nicht, wo ich suchen soll.

      Kommentar


        #4
        Hallo Zusammen,

        ich häng mich mal drann, ich dachte der Fehler sei evtl. durch das fehlende Komma.
        Ist leider nicht so.
        Mein Log Eintrag:

        Code:
        [15-Aug-2017 19:32:28 Europe/Berlin] PHP Fatal error:  Uncaught Error:  Call to undefined function split() in  /XXX/XXX/ZC_SHOP/includes/classes/observers/class.ec_analytics.php:62
        Stack trace:
        #0 /XXX/XXX/ZC_SHOP/includes/classes/observers/class.ec_analytics.php(112): ec_analytics->getCatString(146)
        #1 /XXX/XXX/ZC_SHOP/includes/classes/class.base.php(103):  ec_analytics->update(Object(notifier), 'NOTIFY_HEADER_S...', Array,  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
        #2 /XXX/XXX/ZC_SHOP/includes/modules/pages/product_info/header_php.php(13): base->notify('NOTIFY_HEADER_S...')
        #3 /XXX/XXX/ZC_SHOP/index.php(36): require('/home/www/ZC_SH...')
        #4 {main}
          thrown in /XXX/XXX/ZC_SHOP/includes/classes/observers/class.ec_analytics.php on line 62
        Ist ein ganz neuer ZC 155e Shop mit diversen Erweiterungen als Testshop
        Wenn ich das Tool im normalen upgedateten Shop instaliere kommt der gleiche Log übrigens.
        DB 5.7.16 und PHP 7.0.21

        Grüße

        Guido

        Kommentar


          #5
          Danke, das war der fehlende Hinweis, den ich dank fehlender Logs nicht bekommen habe

          Ersetz in der Zeile 62 von includes/classes/observers/class.ec_analytics.php das split durch preg_split, die Zeile sollte dann so aussehen:
          Code:
          $p = preg_split("_",$cPath) ;
          Damit funktioniert es bei mir. Die Funktion split wurde in PHP 7 entfernt.

          Allerdings habe ich beim checkout den nächsten Fehler, den ich dank fehlender Logs nicht beheben kann :(

          Kommentar


            #6
            Insgesamt muss man in der Datei includes/classes/observers/class.ec_analytics.php vier mal split mit preg_split ersetzen, dann funktioniert es auch unter PHP 7

            Kommentar


              #7
              Statt mit preg_split würde es besser mit explode ersetzt

              Kommentar


                #8
                Und der Code für nichtprogramierer?
                Das Tool ist doch mit PHP 7.X getestet dachte ich.
                Ich kenne leider PHP nicht wirklich, und bin deshalb fragend unwissend.

                Kommentar


                  #9
                  Es war nicht wirklich für PHP 7 geeignet, hier die korrekte includes/classes/observers/class.ec_analytics.php, mit der das auch unter PHP 7.0.x problemlos läuft (getestet mit PHP 7.0.20)
                  Wird im Download noch ausgetauscht
                  Code:
                  <?php 
                  /**
                   * @package Google Enhanced E-Commerce Analytics
                   * @copyright (c) 2015 RodG
                   * @copyright Copyright 2003-2017 Zen Cart Development Team
                   * @copyright Portions Copyright 2003 osCommerce
                   * @license http://www.zen-cart-pro.at/license/2_0.txt GNU Public License V2.0
                   * @version $Id: class.ec_analytics.php 2017-08-15 20:49:36Z webchills $
                   */
                  class ec_analytics extends base {
                  
                      function ec_analytics() {
                          global $zco_notifier;
                          $zco_notifier->attach($this, array('NOTIFY_HEADER_TIMEOUT'));
                  
                          $this->attach($this, array(
                              // actionable events //
                              'NOTIFY_HEADER_START_PRODUCT_INFO',
                              'NOTIFIER_CART_ADD_CART_END', 
                              'NOTIFIER_CART_REMOVE_END',
                              'NOTIFY_HEADER_START_LOGIN',
                              'NOTIFY_LOGIN_SUCCESS',
                              'NOTIFY_LOGIN_SUCCESS_VIA_CREATE_ACCOUNT',
                              'NOTIFY_LOGIN_SUCCESS_VIA_NO_ACCOUNT',
                              'NOTIFY_CHECKOUT_PROCESS_BEGIN',
                              'NOTIFY_HEADER_START_CHECKOUT_SHIPPING',
                              'NOTIFY_HEADER_START_CHECKOUT_PAYMENT',
                              'NOTIFY_HEADER_START_CHECKOUT_CONFIRMATION',
                              'NOTIFY_HEADER_START_CHECKOUT_SUCCESS',
                              //  Generic events // 
                              'NOTIFY_LOGIN_FAILURE',  
                              'NOTIFY_HEADER_START_LOGIN_TIMEOUT',     
                              'NOTIFY_FAILURE_DURING_CREATE_ACCOUNT',
                              'NOTIFY_FAILURE_DURING_NO_ACCOUNT',
                              'NOTIFY_PAYMENT_PAYPAL_RETURN_TO_STORE',
                              'NOTIFY_PAYMENT_PAYPAL_CANCELLED_DURING_CHECKOUT'
                          ));
                      }
                  
                      function getID() {
                          $id = '';
                          if (isset($_REQUEST['products_id'])) {
                              if (is_array($_REQUEST['products_id'])) {  $id = explode(":", $_REQUEST['products_id'][0]);
                              } else {  $id = explode(":", $_REQUEST['products_id']);  }
                          } else {
                              if (isset($_REQUEST['product_id'])) {
                                  if (is_array($_REQUEST['product_id'])) { $id = explode(":", $_REQUEST['product_id'][0]);
                                  } else {  $id = explode(":", $_REQUEST['product_id']);  }
                              }
                          }
                          $id = intval($id[0]);
                          if ($id == 0)  $id = "";
                     return $id;
                      }
                  
                      
                   function getCatString($id) {
                    global $db, $cPath ;
                    $masterCat = zen_get_categories_name_from_product($id) ;
                       $i = 0 ; $flag = 0 ;
                          if(isset($cPath)) {
                              $p = explode("_",$cPath) ; 
                              while ($i < sizeof($p)) {
                                  $the_categories_name= $db->Execute("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id= '" . $p[$i] . "' and language_id= '" . $_SESSION['languages_id'] . "'");
                                  if ($masterCat ==  $the_categories_name->fields['categories_name'])  {$flag = 1 ;}
                                       
                              $i++ ;        
                              } 
                          $catTxt = substr($catTxt, 1);
                          }     
                    return ($flag != 1 ) ? $masterCat:$catTxt;      
                  // return $catTxt ;    
                   }   
                      
                   function addProductItemsStr() { 
                      $itemsStr = "" ;  $i=0 ; 
                         $products = $_SESSION['cart']->get_products(); 
                           if(is_array($products)) { 
                                     foreach ($products as $item) { 
                                       if(is_array($item['attributes']))  $varTxt = zen_values_name($item['attributes'][1]);                     
                                       if(!$varTxt) $varTxt = "n/a"; 
                                       
                                       $itemID = explode(":", $item['id'] ) ; 
                  
                                       $brand = zen_get_products_manufacturers_name($itemID[0]) ; 
                                           $brandTxt = ($brand != "") ? $brand:"n/a";
                                          $itemsStr .= "ga('ec:addProduct',"
                                                              . " {'id': '{$itemID[0]}',"
                                                              . " 'name': '".addslashes($item['name'])."',"
                                                              . " 'brand': '{$brandTxt}',"
                                                              . " 'category': '". zen_get_categories_name_from_product($itemID[0])."' ,"
                                                              . " 'variant': '{$varTxt}',"
                                                              .  " 'price': '".number_format((float)($item['price'] + ($item['price'] *  $item['tax_class_id'] / 100 )) ,2,'.','')."',"
                                                              . " 'quantity': '{$item['quantity']}',"
                                                              . " 'position': '{$i}' } );\n";
                                  $i++ ;  
                                }
                              }    
                    return $itemsStr ;           
                  }
                    /////////////////////////////          
                      function update(&$callingClass, $notifier, $paramsArray) {
                        global $db, $analytics;
                  
                          switch ($notifier) {
                              case 'NOTIFY_HEADER_START_PRODUCT_INFO' :
                                  $id = $this->getID();
                                  if ($id) {
                                      $brand = zen_get_products_manufacturers_name($id) ;  
                                       $brandTxt = ($brand != "") ? $brand:"n/a";
                                      $res = $db->Execute("SELECT products_name FROM " . TABLE_PRODUCTS_DESCRIPTION . " WHERE products_id = $id");
                                      $analytics['item'] = array('productID' => $id, 'productName' => addslashes($res->fields['products_name']), 'category' => $this->getCatString($id), 'brand' => $brandTxt);
                                      $analytics['action'] = "View Product";
                                  }
                                  break;
                  
                                  
                              case 'NOTIFIER_CART_ADD_CART_END' :
                              case 'NOTIFIER_CART_REMOVE_END' :
                                   $analytics['action'] = "Delete from Cart";
                                   $varTxt = "n/a";  $qty = '';
                                  if ($notifier == 'NOTIFIER_CART_ADD_CART_END') {
                                      $analytics['action'] = "Add to Cart";
                                      if (isset($_REQUEST['cart_quantity'])) $qty = intval($_REQUEST['cart_quantity']);
                                           if (!$qty)  $qty = 1;                     
                                          $products = $_SESSION['cart']->get_products(); 
                                              if(is_array($products)) { 
                                                  foreach ($products as $item) { 
                                                      if(is_array($item['attributes'])) {
                                                          $itemID = explode(":", $item['id'] ) ; 
                                                          $requestID = explode(":", (string)$_REQUEST['products_id'] ) ; 
                                                          if ($requestID[0] === $itemID[0]) {
                                                              $varTxt = zen_values_name($item['attributes'][1]);
                                                          }      
                                                      }
                                                  }
                                              }  
                                  } 
                                  $id = $this->getID();
                                  if ($id) {
                                  $brand = zen_get_products_manufacturers_name($id) ;  
                                  $brandTxt = ($brand != "") ? $brand:"n/a"; 
                  
                                  $res = $db->Execute("SELECT products_name FROM " . TABLE_PRODUCTS_DESCRIPTION . " WHERE products_id = $id");
                                  $analytics['item'] = array('productID' => $id, 'productName' => $res->fields['products_name'], 'category' => $this->getCatString($id), 'brand' => $brandTxt, 'productQTY' => $qty, 'variant' => $varTxt);
                                  }
                                  break;
                  
                    /////////////   Chckout steps ////////////////////////////              
                              case 'NOTIFY_HEADER_START_LOGIN':         //  Checkout Step 1
                                  $analytics['action'] = "Start Login";
                                  $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                  break;
                         
                              case 'NOTIFY_LOGIN_SUCCESS'://  Checkout Step 2
                                  $analytics['action'] = "Login Success";
                                   $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                   break;
                               
                              case 'NOTIFY_LOGIN_SUCCESS_VIA_CREATE_ACCOUNT'://  Could also be Checkout step 2
                                  $analytics['action'] = "Login Success via Create Account";
                                   $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                   break;
                               
                              case 'NOTIFY_LOGIN_SUCCESS_VIA_NO_ACCOUNT'://   Could also be Checkout Step 2
                                  $analytics['action'] = "Login Success via No account";
                                   $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                  break;
                            
                              case 'NOTIFY_CHECKOUT_PROCESS_BEGIN': //  Checkout Step 3
                                  $analytics['action'] = "Checkout Process begin";
                                    $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                  break;       
                  
                              case 'NOTIFY_HEADER_START_CHECKOUT_SHIPPING'://  Checkout Step 4
                                  $analytics['action'] = "Checkout Shipping";
                                   $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                   break;
                              
                              case 'NOTIFY_HEADER_START_CHECKOUT_PAYMENT'://   Checkout Step 5
                                  $analytics['action'] = "Checkout Payment";
                                    $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                  break;
                              
                              case 'NOTIFY_HEADER_START_CHECKOUT_CONFIRMATION'://   Checkout Step 6
                                  $analytics['action'] = "Checkout Confirmation";
                                   $analytics['addProductItemsStr'] = $this->addProductItemsStr() ;
                                   break;
                  /////////////////////////////////////////////////////////
                               
                              case 'NOTIFY_HEADER_START_CHECKOUT_SUCCESS'://  All Checkout complete/successful 
                                  $order_summary = $_SESSION['order_summary'];
                                      if ($order_summary['order_number']) {
                                 
                                    // add other cases as you wish for your other payment modules       
                                       switch ((string) $order_summary['payment_module_code']) {
                                                  case "paypalwpp":   $affiliation = "PayPal Express" ; break ;
                                                 
                                                  default : $affiliation = (string) $order_summary['payment_module_code'] ;
                                       }
                      
                                  
                                  
                                  $coupon = (isset($order_summary['coupon_code'])) ? $order_summary['coupon_code'] : "n/a";
                                  $analytics['transaction'] = array('id' => (string) $order_summary['order_number'], 'affiliation' => $affiliation,
                                  'revenue'  => number_format($order_summary['order_total'],2,'.',''), 'shipping'  => number_format($order_summary['shipping'],2,'.',''), 'tax' =>  number_format($order_summary['tax'],2,'.',''), 'coupon' =>  $coupon);
                  
                                  $items_query = "SELECT DISTINCT orders_products_id, products_id, products_name, products_model, final_price, products_tax, products_quantity
                                       FROM " . TABLE_ORDERS_PRODUCTS . " WHERE orders_id = :ordersID ORDER BY products_name";
                  
                                  $items_query = $db->bindVars($items_query, ':ordersID', $order_summary['order_number'], 'integer');
                                  $items_in_cart = $db->Execute($items_query);
                                  $i = 0 ; $analytics['addProductItemsStr']= "" ;
                                  while (!$items_in_cart->EOF) {
                                      $variant = $db->Execute("SELECT products_options_values FROM " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " WHERE orders_products_id = " . (string)$items_in_cart->fields['orders_products_id']);
                                          $varTxt = ($variant->fields['products_options_values'] != "") ? $variant->fields['products_options_values']:"n/a";
                                      $brand = zen_get_products_manufacturers_name($items_in_cart->fields['orders_products_id']); 
                                           $brandTxt = ($brand != "") ? $brand:"n/a";
                                      
                                      $analytics['addProductItemsStr'] .= "ga('ec:addProduct',"
                                                              . " {   'id': '{$items_in_cart->fields['products_id']}',"
                                                                  . " 'name': '".addslashes($items_in_cart->fields['products_name'])."',"
                                                                  . " 'brand': '{$brandTxt}',"
                                                                  . " 'category': '".zen_get_categories_name_from_product($items_in_cart->fields['products_id'])."',"
                                                                  . " 'variant': '{$varTxt}',"
                                                                  . " 'price':  '".number_format($items_in_cart->fields['final_price'] +  ($items_in_cart->fields['final_price'] *  $items_in_cart->fields['products_tax'] / 100 ),2,'.','')."',"
                                                                  . " 'quantity': '{$items_in_cart->fields['products_quantity']}',"
                                                                  . " 'coupon': '{$coupon}',"
                                                                  . " 'position': '{$i}' } );\n";
                                  $i++ ;  
                                   $items_in_cart->MoveNext();
                                  }
                                  $analytics['action'] = "Checkout Success";
                              }
                                  break;
                  
                  
                              default:   
                                  $notifyArr = explode("_", $notifier, 2);
                                  $analytics['action'] = ucwords(strtolower(str_replace("_", " ", $notifyArr[1])));
                  }
                  $_SESSION['analytics'] = $analytics;
                      }
                  }

                  Kommentar


                    #10
                    So, ich noch mal.
                    Im Admin klappt jetzt alles, aber beim Aufruf des Shops kommt folgende Fehlemeldung:

                    The Google Analytics trackingID is not yet defined in
                    /includes/extra_datafiles/ec_analytics.php

                    Erst nach klicken von OK kommt mann im Shop.

                    Mein Eintrag in der Datei:
                    define('GOOGLE_UA', 'UA-12345678-1');

                    Steht drinn mit der richigen ID...
                    Wo hackt es jetzt wieder?

                    Kommentar


                      #11
                      Zitat von bumerang24 Beitrag anzeigen
                      Wo hackt es jetzt wieder?
                      daran, dass die includes/extra_datafiles/ec_analytics.php ganz eindeutig eben nicht geändert wurde

                      Kommentar


                        #12
                        dann erklär mir doch bitte wie ich es machen soll.
                        Ich habe meinen Code den ich von Google habe hanau so wie du sehen kannst eingetragen.
                        Nur habe ich halt wie vom Admin vorgeschrieben keine Original Daten gepostet.

                        Kommentar


                          #13
                          Überprüfe den Inhalt der Datei am Server, ihr Inhalt wurde nicht geändert, sonst würde diese Meldung nicht kommen.
                          Es ist wirklich eindeutig.

                          Verwende ein FTP Programm, das zuverlässig bestehende Dateien überschreibt.
                          Eine sehr große Zahl Deiner Postings bezieht sich auf Probleme mit dem Hochladen/Überschreiben von Dateien.
                          Wenn es damit immer wieder Probleme gibt, dann ändere mal was und verwende ein anderes Programm dafür.

                          Kommentar


                            #14
                            Den gesammten Inhalt der Datei habe ich ja schon gepostet, mehr ist da nicht drin.
                            Für den Upload verwende ichwie die meisten Wohl FileZilla in der neusten Version.
                            Ich bin aber gerne für bessere Programme offen, ich hab nur noch keins gefunden.
                            Hir noch mal der ges. Inhalt der Datei auf dem Server ( ist gleich mit dem Download ) nur mit meiner Goggle UA-
                            Code:
                            <?php
                            // Tragen Sie hier Ihre Google Analytics Tracking ID ein
                            define('GOOGLE_UA', 'UA-12345678-1');
                            Zum Vergleich der Org Code aus dem Download

                            Code:
                            <?php
                            // Tragen Sie hier Ihre Google Analytics Tracking ID ein
                            define('GOOGLE_UA', 'UA-XXXXXXXX-X');;
                            Bin gespannt, was da noch rauskommt....
                            Ich weis du hast deine Zeit auch nicht gestohlen, und hilfst immer und gerne wo du kannst
                            Zuletzt geändert von bumerang24; 16.08.2017, 16:38. Grund: weiterer Code

                            Kommentar


                              #15
                              Es gibt da nicht mehr dazu zu sagen.
                              Das ist mit Sicherheit nicht der Inhalt der Datei auf dem Server des Shops, der diese Meldung bringt.

                              Empfehlenswerte Software ist im Linkbereich zusammengestellt:

                              Kommentar

                              Info zu diesem Forenarchiv:
                              Mit Release von 1.5.7 wurde die deutsche Zen Cart Version auf eine reine DIY-Lösung umgestellt.
                              Für einen Support via Forum stehen keine personellen und zeitlichen Ressourcen mehr zur Verfügung.
                              Dieses Supportforum bleibt im Nur-Lesen-Modus als Wissensarchiv noch online verfügbar.
                              PM Funktionalität, Registrierung und Posten neuer Beiträge sind deaktiviert.
                              Zugriff auf Anhänge in den Postings ist auch ohne Registrierung/Einloggen möglich.
                              FAQ und Downloadbereich des Forums wurden in die neue umfangreiche Knowledgebase auf der zen-cart-pro.at Website übernommen.

                              Das Development der deutschen Zen Cart Version geht wie bisher auf Github weiter.
                              Wir werden auch weiterhin neue Versionen bereitstellen und die Onlinedokumentation/Knowledgebase aktualisieren.
                              Fehler in der Software können auf Github als Issues gemeldet werden.
                              Follow us
                              aktuelle version
                              Zen Cart 1.5.7g deutsch
                              vom 12.12.2023
                              [Download]
                              Lädt...
                              X