Neu Google Kundenrezensionen einbauen in Bestellabschluss

Stephs182

Gut bekanntes Mitglied
21. Januar 2015
248
24
Luckau NL
Hallo zusammen,

ich habe eine Frage.... mit PlugIns schreiben bin ich noch nicht wirklich fit... mir fehlen da noch die richtigen Ansätze. Dennoch versuche ich gerade den Skript vom Google Merchant Center (Kundenrezensionen) einzubauen.

in die Datei /templates/Evo/checkout/inc_order_completed.tpl

möchte ich dies einbauen:

JavaScript:
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>

<script>
  window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          // REQUIRED FIELDS
          "merchant_id": xxx,
          "order_id": "ORDER_ID",
          "email": "CUSTOMER_EMAIL",
          "delivery_country": "COUNTRY_CODE",
          "estimated_delivery_date": "YYYY-MM-DD",

          // OPTIONAL FIELDS
          "products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]
        });
    });
  }
</script>
Brauche aber Variablen:

OrderID bekomme ich aus der Variable $Bestellung->kBestellung
estimated_delivery_date kann ich aus dem heutigen Datum und dem $Bestellung->cEstimatedDelivery was machen.
Gtins kann ich eh nicht nutzen, da die nur bei den wenigesten Produkten gesetzt sind.

Fehlt noch die CUSTOMER_EMAIL & COUNTRY_CODE. Da ich die KundenID ($Bestellung->kKunde) habe, müsste ich in der Datenbank nur die Felder cLand und cMail aus Tabelle tkunde holen.

Also müsste ich

SQL:
SELECT `cLand, cMail` FROM `tkunde` WHERE 'kKunde'=`$Bestellung->kKunde`;

ausführen... doch meines erachtens geht das doch in den TPL Dateien nicht, da wir ja schon in der Ausgabe sind.

Habt ihr nen Vorschlag wie ich da weiter komme!?
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Ich hatte mal im Shop3 das so eingebunden

Code:
<!-- ANFANG Code für Opt-in-Modul von Google Kundenrezensionen -->
{literal}  
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>
<script>
  window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          {/literal}
          "merchant_id": xxxxxxx,
          "order_id": "{$Bestellung->cBestellNr}",
          "email": "{$Kunde->cMail}",
          "delivery_country": "{$Kunde->cLand}",
          "estimated_delivery_date": "{$smarty.now+432000|date_format:"%Y-%m-%d"}"
          {literal}
        });
    });
  }
</script>
<!-- ENDE Code für Opt-in-Modul von Google Kundenrezensionen -->

<!-- ANFANG Sprachcode für Google Kundenrezensionen -->
<script>
  window.___gcfg = {
    lang: 'de'
  };
</script>
<!-- ENDE Sprachcode für Google Kundenrezensionen -->
{/literal}
 

Stephs182

Gut bekanntes Mitglied
21. Januar 2015
248
24
Luckau NL
Das Object $Kunde hatte ich total übersehen. Na klar... dann sind ja alle Probleme beseitigt und das Sktipt ist eingebunden und läuft. Nur habe ich es nun in die /templates/Evo/checkout/inc_conversion_tracking.tpl eingebunden. Am Ende habe ich eingefügt:
JavaScript:
<!-- ANFANG Code fuer Opt-in-Modul von Google Kundenrezensionen -->
 
<script src='https://apis.google.com/js/platform.js?onload=renderOptIn' async defer></script>

<script>
  window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          // REQUIRED FIELDS
          'merchant_id': BITTE DEINE ID EINTRAGEN,
          'order_id': '{$Bestellung->cBestellNr}',
          'email': '{$Kunde->cMail}',
          'delivery_country': '{$Kunde->cLand}',
          'estimated_delivery_date': '{$smarty.now+432000|date_format:'%Y-%m-%d'}',

        
        });
    });
  }
</script>
<!-- ENDE Sprachcode fuer Google Kundenrezensionen -->

Vielen lieben Dank dafür.

Wer es noch das Badget/Logo haben möche, der kann in der /templates/Evo/layout/header.tpl vor dem {/literal}

Das eintragen:
JavaScript:
<script src="https://apis.google.com/js/platform.js?onload=renderBadge" async defer></script>

<script>
  window.renderBadge = function() {
    var ratingBadgeContainer = document.createElement("div");
    document.body.appendChild(ratingBadgeContainer);
    window.gapi.load('ratingbadge', function() {
      window.gapi.ratingbadge.render(ratingBadgeContainer, {"merchant_id": BITTE DEINE ID EINTRAGEN});
    });
  }
</script>
 

Stephs182

Gut bekanntes Mitglied
21. Januar 2015
248
24
Luckau NL
In der inc_conversion_tracking.tpl ging es ohne in der inc_order_completed.tpl brauchte ich es... verstehe ich zwar auch nicht... aber egal.
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
{literal} / {/literal} = Wird benötigt wenn SMARTY den Code nicht beachten soll und ungefiltert ausliefert.
{ldelim} / {rdelim} = wird benötigt, wenn die "geschweifte Klammer" richtig interpretiert werden soll
 

Stephs182

Gut bekanntes Mitglied
21. Januar 2015
248
24
Luckau NL
Ja ich weiß, das ich alles in Child legen sollte... nun ist erstmal alles im EVO drin und nun lasse ich es erstmal so. Beim nächsten größeren Update (wahrscheinlich auf Shop 5.0) gehe ich dann auf das Child. War damals blöd gewesen.
Das PlugIn kenne ich auch, habe ich auch in einem Shop drin, aber ohne Rene nahe tretten zu wollen, den Wert da zu übergeben brauche ich kein PlugIn zu bezahlen. Es läuft ja nun auch.
Vielen Dank für alle Hilfe.
 

j0e

Gut bekanntes Mitglied
29. Oktober 2017
103
3
Danke an @Stephs182 und @Conny, damit habt ihr mir schon gut geholfen.

Mir fehlen noch zwei werte:
gtin ist bei mir immer die EAN. Weiß wer wie die Variable dazu lautet?

"estimated_delivery_date": "{$smarty.now+518400|date_format:"%Y-%m-%d"}", funktioniert bei mir nicht. Da wird mit lediglich der Unix timestamp ausgegeben: "1534007690". Ohne die addierten Stunden.

Mein Code:
JavaScript:
{extends file="{$parent_template_path}/checkout/order_completed.tpl"}

{block name="order-completed" append}
<!-- ANFANG Code für Opt-in-Modul von Google Kundenrezensionen -->
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn"
  async defer>
</script>

<script>
  window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          // ERFORDERLICH
          "merchant_id": 1122334455,
          "order_id": "{$Bestellung->cBestellNr}",
          "email": "{$Kunde->cMail}",
          "delivery_country": "{$Kunde->cLand}",
          "estimated_delivery_date": "{$smarty.now+518400|date_format:"%Y-%m-%d"}",

          // OPTIONAL
          "opt_in_style": "CENTER_DIALOG",
          "products": [{"gtin":""}]
        });
     });
  }
</script>
<!-- ENDE Code für Opt-in-Modul von Google Kundenrezensionen -->
<!-- ANFANG Sprachcode für Google Kundenrezensionen -->
<script>
  window.___gcfg = {
    lang: 'de'
  };
</script>
<!-- ENDE Sprachcode für Google Kundenrezensionen -->
{/block}
 

Stephs182

Gut bekanntes Mitglied
21. Januar 2015
248
24
Luckau NL
Naja die Artikel sind ja in einem Array abgelegt, desalb muss man die GTIN auch einzeln aus den Positionen auslesen.

Aber

$Bestellung->Positionen[0]->Artikel->cBarcode

beinhaltet die GTIN (EAN).
 

j0e

Gut bekanntes Mitglied
29. Oktober 2017
103
3
Hier mein fertiger Code:

JavaScript:
{extends file="{$parent_template_path}/checkout/order_completed.tpl"}

{block name="order-completed" append}
<!-- ANFANG Code für Opt-in-Modul von Google Kundenrezensionen -->
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn"
  async defer>
</script>

<script>
  window.renderOptIn = function() {
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          "merchant_id": 1122334455,
          "order_id": "{$Bestellung->cBestellNr}",
          "email": "{$Kunde->cMail}",
          "delivery_country": "{$Kunde->cLand}",
          "estimated_delivery_date": "{"+5 day"|date_format:"%Y-%m-%d"}",

          "opt_in_style": "CENTER_DIALOG",
          "products": {literal}[{{/literal}"gtin":"{$Bestellung->Positionen[0]->Artikel->cBarcode}"{literal}}]{/literal}
        });
     });
  }
</script>
<!-- ENDE Code für Opt-in-Modul von Google Kundenrezensionen -->
<!-- ANFANG Sprachcode für Google Kundenrezensionen -->
<script>
  window.___gcfg = {
    lang: 'de'
  };
</script>
<!-- ENDE Sprachcode für Google Kundenrezensionen -->
{/block}
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Ich glaube da ist was falsch.
Du hast praktisch nur den EAN Code für ein Produkt übergeben.
Wenn der Kunde aber mehr Produkte kauft wird das nicht mit berücksichtigt.
Du musst den EAN für alle Produkte eines Einkaufs angeben. (Also das klomplette Array in einer Schleife übergeben)

Evtl. solltest du auch das Verhalten bei Variationen und Varkombis prüfen.
 

j0e

Gut bekanntes Mitglied
29. Oktober 2017
103
3
Ja ich weiß. Ich habe das jetzt schnell so gelöst. Zu 99% sind bei uns nur Bestellungen mit einem Artikel. Varkombis haben wir auch nicht.

Ich habe aber ein anderes Problem. Das Badge spuckt immer diese Charakter mit aus: "​"
Sowas kenne ich von Problemen, wenn unterschiedliche Textkodierungen verwendet werden. Hier wohl auch das Problem.
Hat wer eine Idee?
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Habe ich zwar nicht getestet, aber so könnte die Schleife aussehen.
Was das Badge mit dem Charakter angegeht, so schick mir doch mal eine PM mit dem Link damit ich mir das mal anschauen kann

Code:
{foreach from=$Bestellung->Positionen item=KonfigPos}
    {if $Position->cUnique == $KonfigPos->cUnique}
         {$KonfigPos->cBarcode} <br>
    {/if}
{/foreach}
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
So - ich habe mal versucht alles zusammen zu fassen.

Im Child Template die Datei: /checkout/order_completed.tpl (erstellen oder ergänzen) und folgenden Code eintragen
Im Code bei "merchant id" deine ID eintragen

PHP:
{extends file="{$parent_template_path}/checkout/order_completed.tpl"}

{block name="order-completed" append}
<!-- ANFANG Code für Google Kundenrezensionen -->
<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>
<script>
  window.___gcfg = {ldelim} lang: 'de' {rdelim};
  window.renderOptIn = function() {ldelim}
    window.gapi.load('surveyoptin', function() {ldelim}
      window.gapi.surveyoptin.render(
        {ldelim}
          "merchant_id": HIER DEINE ID EINTRAGEN,
          "order_id": "{$Bestellung->cBestellNr}",
          "email": "{$Kunde->cMail}",
          "delivery_country": "{$Kunde->cLand}",
          "estimated_delivery_date": "{"+5 day"|date_format:"%Y-%m-%d"}",
         
          / OPTIONAL FIELDS
          "products": [
          {foreach from=$Bestellung->Positionen item=KonfigPos}
              {if !empty($KonfigPos->cBarcode)}
                 {ldelim}"gtin":" {$KonfigPos->cBarcode}"{rdelim},
              {/if}
          {/foreach}        
          ]
        {rdelim});
    {rdelim});
  {rdelim}
</script>
<!-- ENDE Code für Google Kundenrezensionen -->
{/block}
 

Conny

Sehr aktives Mitglied
7. September 2009
556
60
Dann schau mal in deinem Source nach.
Es kommt direkt hinter deinem Script
PHP:
<script>window.___gcfg={lang:"de"};</script>

evtl. mal im Editor "unsichtbare Zeichen" anzeigen anschalten
 

j0e

Gut bekanntes Mitglied
29. Oktober 2017
103
3
Ich hab die Codierung jetzt mal von UFT-8 auf Iso umgestellt. Da trat das hervor:
Code:
<!-- END GCR Language Code -->â';
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Google Shopping - Sonderpreise werden unter Umständen nicht in den Feed geschrieben Allgemeine Fragen zu JTL-Shop 1
Neu DRINGEND Hilfe - Google Analytics Plugin JTL-Shop - Fehler und Bugs 4
Google Search Console - Crawling-Fehler: Robots.txt nicht erreichbar Einrichtung JTL-Shop5 6
Neu Wie kann ich den Titel bei Google Ergebnissen ändern? Allgemeine Fragen zu JTL-Shop 6
Neu Produktbewertungen bei Google Shopping mit anzeigen Technische Fragen zu Plugins und Templates 2
Neu Google Enhanced Conversion Tracking Email JTL Datalayer Technische Fragen zu Plugins und Templates 2
Neu Google shopping JTL SHOP 4 - "geht" nicht mehr Allgemeine Fragen zu JTL-Shop 9
Neu JTL Google Shopping Plugin - Bilder Updaten Plugins für JTL-Shop 3
Neu Wie andere Länder und Sprachen vom Google Shopping Plugin mit dem Merchant Center verbinden Plugins für JTL-Shop 6
Neu Cookies für Google Ads User helfen Usern - Fragen zu JTL-Wawi 0
Neu Google Shopping Plugin - Artikel filtern Plugins für JTL-Shop 3
Neu Google Pay ohne Funktion Plugins für JTL-Shop 3
Neu Google - Vaterartikel und Kinderartikel Smalltalk 4
Neu Konfigurator Einzelteile in Google und im Shop sichtbar Plugins für JTL-Shop 6
Neu Google Bilder Bot Zugriff auf /dbeS/bild.php?a=1375538&n=1&url=0&s=0 Allgemeine Fragen zu JTL-Shop 3

Ähnliche Themen