Google Analytics

Thema wurde von Gianluca Lombardi, 9. August 2016 erstellt.

  1. handkante

    handkante Erfahrener Benutzer

    Registriert seit:
    17. Juli 2018
    Beiträge:
    239
    Danke erhalten:
    5
    Danke vergeben:
    76
    Funktioniert diese Methode das beschrieben wird, mit der aktuellen Version ?
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    Hallo, ich hänge da gerade auch bei dem Thema den Google Tag-Manager über den head-Bereich einzubinden.
    Das man Google auch über das Gambio Modul mit Analytics und Ads verbinden kann, nutzt mir nichts, ich brauch das im head.

    ich habe dazu folgende Anleitung verwendet:
    (Link nur für registrierte Nutzer sichtbar.)

    Wie beschriebene habe ich die SampleHeaderExtender geladen, geändert, umbenannt und in die system/overloads/HeaderExtenderComponent hochgeladen.

    Die sah dann so aus:
    Code:
    <?php
    /* --------------------------------------------------------------
    GoogleAnalyticsTracking.inc.php
    Gambio GmbH
    http://www.gambio.de
    Copyright (c) 2016 Gambio GmbH
    Released under the GNU General Public License (Version 2)
    [http://www.gnu.org/licenses/gpl-2.0.html]
    --------------------------------------------------------------
    */
    
    class GoogleAnalyticsTracking extends GoogleAnalyticsTracking_parent // Name muss mit Dateiname ubereinstimmen
    {
    function proceed()
    {
    parent::proceed();
    
    $this->v_output_buffer['google_analytics'] = <<<EOB
    <!-- Google Tag Manager -->
    <script>(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'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-XXXX');</script>
    <!-- End Google Tag Manager -->
    EOB;
    }
    }
    Leider führt das im Frontend nach dem Löschen der Caches zu der fehlermeldung:
    Code:
    GoogleAnalyticsTracking, because the name is already in use"
    Information:
    <br />
    <b>Fatal error</b>:  Cannot declare class GoogleAnalyticsTracking, because the name is already in use in <b>/var/www/vhosts/webxx.www36.hostkraft.de/html/gx2/system/overloads/HeaderExtenderComponent/GoogleAnalyticsTracking.inc.php</b> on line <b>0</b><br />
    Irgendwas zwickt da, und ich bekomme es nicht raus, was. Wer kann mir da helfen?
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    schubs... vieleicht weis jemand von Gambio was?
     
  4. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Der Name ist besetzt, du müsstest einen anderen nehmen.

    Aber wozu das Ganze? Der GoogleTagManager ist im Head.
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    Kann ich den einfach einen anderen Namen wählen, oder muss dann noch mehr in anderen dateien angepasst werden?

    @Wilken Der jetzige googleTagManager im head ist ja das Modul von euch und das reicht nicht um alles abbilden zu können, deswegen benötige ich den "herkömmlichen" GTM im head, der Hauseigene von Gambio wird dann deaktiviert.

    Wie kann ich den nun den herkömmlichen GTM einbauen, das da nichts zwickt?
     
  6. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Nein, reicht.

    Was fehlt denn?
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    #27 Anonymous, 29. Oktober 2019
    Zuletzt bearbeitet: 29. Oktober 2019
    Hier die Details zu den zwei Problemen die uns aktuell im Wege stehen - weitergeleitet von unserem Analysten:
    ------------

    Mein Name ist Florian Schoel, ich bin der "Tracker"/Analyst im Team von little-eyelet.de.

    2 brennende Themen bei little-eyelet.de

    1. Produkt-Detail-Ansichten werden vom Analytics Enhanced-Ecommerce Plugin nicht übermittelt

    2. Fehlende Möglichkeit "Google Optimize" mit im Plugin zu aktivieren.

    --> Lass uns die Sache von hinten aufrollen :)
    (also 2. vor 1.)

    Zu 2.: Fehlende Möglichkeit "Google Optimize" im Analytics Plugin zu aktivieren.

    Es gibt aktuell im Plugin keine Möglichkeit das Google Optimize-Plugin zu aktivieren.

    Keine der anderen Varianten das Optimize Plugin zu laden (z.B über Google Tagmanager, etc.) funktioniert wenn man das E-Commerce Plugin in Gambio im Einsatz hat.
    (Technische-Details hierzu siehe etwas weiter unten - deutlich versehen mit der Warnung "Nerd-Area")

    Kurz gefasst:
    Euer E-Commerce Plugin liefert die "gtag" Variante von Google Analytics aus.
    Der entsprechende "Call" für gtag um Google Optimize (zum Split-Testing) zu aktivieren sieht dementsprechend so aus:

    gtag('config', 'GA_TRACKING_ID', { 'optimize_id': 'OPT_CONTAINER_ID'});
    --> Leider fehlt im Plugin die Möglichkeit die Optimize Container-ID einzugeben.
    Es wäre super, wenn Ihr das einfach zur Verfügung stellen könntet.

    (Das ist sicher die Hoffnung und der größte Wunsch aller Gambio-Nutzer die ernsthaft an Conversion-Optimierung Interesse haben,
    und Google Optimize zum A/B Testing einsetzen möchten.)

    (Vorsicht: Nerd-Area: Technische Details im Folgenden)
    Eine Frage Eurerseits könnte jetzt sein: "Warum nicht einfach Google Optimize über den Google Tagmanager (GTM) aktivieren?"
    1. Weil die offizielle Google Empfehlung (aus verschiedenen - unter anderem Performance-Gründen) die ist, bei der Verwendung von gtag den Call (siehe oben) zu verwenden anstatt auf den Google Tagmanager zurück zu greifen.

    2. Weil in der speziellen Situation in Kombination mit Eurem Plugin ohnehin die Möglichkeit den GTM zu nutzen komplett wegfällt.
    Warum? Weil die Aktivierung von Google Optimize im GTM voraussetzt, dass der GTM auch einen "Pageview" Event auslöst, mit dem der Optimize-Code dann angefordert wird.
    --> Da ist der Haken: Ich kann diesen Pageview Event nich auslösen, weil das Euer Plugin bereits macht.
    Ansonsten würde jeder Seitenaufruf doppelt getrackt werden.

    Hier die offizielle Doku von Google (falls Euch das interessiert):
    (Link nur für registrierte Nutzer sichtbar.)

    ------------- Jetzt zum zweiten Anliegen: ............

    Zu 1.: Fehlende Produktdetail-Ansichten im Enhanced-Ecommerce Report

    "Add to Carts" und "Käufe" werden ja getrackt (inklusive Umsatz) (Wunderbar).
    Aber: Die Produkt-Detail-Ansichten werden allerdings nicht erfasst (siehe screenshots unten).

    Das gleiche Dashboard haben wir in anderen Shop-Systemen (shopify, shopware, woocommerce, etc.) im Einsatz und dort laufen die Zahlen einwandfrei.
    Am Dashboard/Darstellung kann es also nicht liegen.
    Denn die Zahlen kommen auch erst garnicht in dem Analytics Konto an (screenshot noch weiter unten)

    Villeicht erkennst du direkt auf der Produktseite ein Problem?

    (Link nur für registrierte Nutzer sichtbar.)


    Hier meine Fragen:
    Zu 1.: Was muss geändert werden? Wo liegt das Problem?
    Zu 2.: Wie realistisch ist die Hoffnung, dass eine Möglichkeit die Google Optimize ID im Analytics PLugin mit zu aktiveren tatsächlich hinzugefügt werden kann? Und wie bereit ist das Gambio Team generell auf solche Hinweise/wünsche zu reagieren? (wir hatten schon ähnliche Anforderungen an Plugin-Hersteller bei Woocommerce und Shopware gestellt und waren angenehm überrascht über die Bereitschaft und Reaktionszeit zur Umsetzung solcher Hinweise )

    ---------------------

    ... (so. hier wieder Uwe )
    PS: Der Umweg über den Head hat das Problem nicht gelöst. Alles nach wie vor so wie von Florian oben beschrieben.
     

    Anhänge:

  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    Zudem folgender Hinweis von Florian Schoel:
    ----------
    Habe den Download des Plugins gerade erzwungen...
    Der Versuch das Plugin von Google zu laden wurde direkt von der Seite abgelehnt:
    Siehe screenshot.

    PS: Das ändert nichts an der Tatsache, dass wir ohne die zusätzliche Eingabemöglichkeit der Optimize ID im Analytics Plugin aktuell auf Google Optimize verzichten müssen.
    --> Nur ein kleiner Hinweis der dann zum Tragen kommen würde wenn diese Eingabemöglichkeit in Zukunft hinzugefügt würde.
     

    Anhänge:

  9. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    Irgendwie gehts nicht weiter, das Supportticket #100818436 bleibt unbeantwortet, könnte sich vieleicht jemand von Gambio dem annehmen? Danke
     
  10. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Ich hab mir das gerade mal überflogen, das liegt zur Entscheidungsfindung herum. Es wird aber tendenziell keine kurzfristige Lösung geben: Google Optimize unterstützen wir schlicht nicht, das war nie im Plan, und die wenn dann passende Entwicklermannschaft hat gerade einen vollen Projektplan. Da ist aktuell superwenig Luft um mal eben adhoc irgendwelche Features abseits der Marschrichtung dazu zu programmieren.
     
  11. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    8. Februar 2013
    Beiträge:
    1.425
    Danke erhalten:
    250
    Danke vergeben:
    173
    Danke für deine Antwort und Einschätzung, wäre ich mit einer Customizing-Anfrage richtig?
     
  12. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Das wäre zumindest eine Möglichkeit, ich hab nur gerade keinen adhoc Überblick wie die Warteschlange da aktuell aussieht.
     
  13. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    16. März 2016
    Beiträge:
    34
    Danke erhalten:
    4
    Danke vergeben:
    1
    Hallo Wilken,
    ich hätte Google Optimize auch gern. :)
     
  14. manuel_koschtjan

    manuel_koschtjan Erfahrener Benutzer

    Registriert seit:
    17. November 2018
    Beiträge:
    120
    Danke erhalten:
    2
    Danke vergeben:
    43
    2) CheckoutSuccess-Seite mit Analytics-eCommerceTracking ergänzen, damit alle Verkäufe getrackt werden:
    • Ordner GXUserComponents/overloads/CheckoutSuccessExtenderComponent anlegen
    • darin Datei GAeCommerceTracking.inc.php erstellen mit folgendem Inhalt:
      • PHP:
        <?php

        class GAeCommerceTracking extends GAeCommerceTracking_parent {

            function 
        proceed() {
                
        parent::proceed();

                
        $coo_order MainFactory::create_object('order', array($this->v_data_array['orders_id']));
                
        $orders_total_query xtc_db_query("select * from " TABLE_ORDERS_TOTAL " where orders_id = '" . (int) $this->v_data_array['orders_id'] . "'");
                
        $orders_products_query xtc_db_query("select * from " TABLE_ORDERS_PRODUCTS " where orders_id = '" . (int) $this->v_data_array['orders_id'] . "'");
                
        $i 0;
                while (
        $product xtc_db_fetch_array($orders_products_query)) {
                    
        $orders_products[$i] = $product;
                    
        $catname xtc_db_fetch_array(xtc_db_query(
                            
        "SELECT c.categories_name
                             FROM categories_description c, products_to_categories p
                             WHERE p.products_id = '"
        .$orders_products[$i]['products_id']."'
                             AND p.categories_id != '0'
                             AND p.categories_id = c.categories_id
                            "
        ));
                    
        $orders_products[$i]['categories'] = $catname['categories_name'];
                    
        $i++;
                }

                while (
        $product xtc_db_fetch_array($orders_total_query)) {
                    
        $orders_total[$product['class']] = $product['value'];
                }
                
        $trans = array(
                    
        'id' => $this->v_data_array['orders_id'],
                    
        'affiliation' => 'Shopname',
                    
        'revenue' => $orders_total['ot_total'],
                    
        'shipping' => $orders_total['ot_shipping'],
                    
        'tax' => $orders_total['ot_tax']);

                
        $i 0;
                foreach (
        $orders_products as $value) {
                    
        $items[$i] = array(
                        
        'sku' => $value['products_model'],
                        
        'name' => $value['products_name'],
                        
        'category' => $value['categories'],
                        
        'price' => $value['products_price'],
                        
        'quantity' => $value['products_quantity']
                    );
                    
        $i++;
                }

                function 
        getTransactionJs(&$trans) {

                    
        $mytotal "ga('ecommerce:addTransaction', {
                          'id': '
        {$trans['id']}',
                          'affiliation': '
        {$trans['affiliation']}',
                          'revenue': '
        {$trans['revenue']}',
                          'shipping': '
        {$trans['shipping']}',
                          'tax': '
        {$trans['tax']}'
                        });

                         "
        ;
                    return 
        $mytotal;
                }

                function 
        getItemJs(&$transId, &$item) {

                    
        $myitem "ga('ecommerce:addItem', {
                          'id': '
        $transId',
                          'name': '
        {$item['name']}',
                          'sku': '
        {$item['sku']}',
                          'category': '
        {$item['category']}',
                          'price': '
        {$item['price']}',
                          'quantity': '
        {$item['quantity']}'
                        });

                        "
        ;
                    return 
        $myitem;
                }

                
        $google_analytics "<script type=\"text/javascript\">";
                
        $google_analytics .= getTransactionJs($trans);
                foreach (
        $items as &$item) {
                    
        $google_analytics .= getItemJs($trans['id'], $item);
                }
                
        $google_analytics .= "
                    ga('ecommerce:send');
                </script>"
        ;

                
        $this->html_output_array['google_analytics'] = $google_analytics;
                return 
        $this->html_output_array;
                
        //Änderung Ende
            
        }

    • Das ist praktisch "Dein" Codevorschlag, aber ohne die hier eigentlich nicht ganz korrekte Integration des allgemeinen Analytics-Codes. Wichtig ist ja auch, dass ga('require', 'ecommerce'); VOR ga('ecommerce:send'); im Code steht, und das wäre mit der Lösung, den allgemeinen Code über das Admin-Panel zu integrieren, nicht der Fall (da wird der allg. Analytics-Code ganz unten vor dem schließenden BODY eingebaut.

    Schönen Gruß Christian[/QUOTE]

    Ist das denn auch 2021 noch aktuell? Falls nicht, wie müsste ich den Code abändern?

    LG
    Manuel