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
548
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
548
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
548
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
548
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
548
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
548
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 2.2.2 JTL-Shop - Fehler und Bugs 2
Neu Neues Plugin: Google Translate / Übersetzer (DSGVO-konform und weitere Features) Plugins für JTL-Shop 1
Neu Google Shopping Problem Allgemeine Fragen zu JTL-Shop 1
Neu Unterseitenindexierung bei Google - wo ausschalten? Allgemeine Fragen zu JTL-Shop 1
Neu PayPal Checkout mit Apple Pay und Google Pay Plugins für JTL-Shop 1
Neu Google Listings & Ads image Fehler WooCommerce-Connector 2
Datenfeed google shopping - Übertragung saleprice JTL-Wawi 1.8 2
Neu Strukturierte Daten für VarKombis/Varianten nach Google Ankündigung vom 20.02.2024 JTL-Shop - Ideen, Lob und Kritik 0
Neu Unterstuetzung Google Consent Mode V2 Allgemeine Fragen zu JTL-Shop 11
Neu google recaptcha ablösen? dadurch ohne consentmanager leben JTL-Shop - Ideen, Lob und Kritik 7
Neu Google Pmax Kampagnen in Österreich - Shopping Produkte - Erfahrungswerte Smalltalk 0
Neu Inaktive Artikel werden mit 404 Fehler bei Google Search angezeigt Allgemeine Fragen zu JTL-Shop 2
Neu JTL Cookie Banner vs Consent Mode v2 für Google ADs Allgemeine Fragen zu JTL-Shop 6
Exportformat Google Shopping Merkmale Einrichtung JTL-Shop5 1
Neu Fehler beim Update von Exportformat Google Shopping JTL-Shop - Fehler und Bugs 1
Neu Google Shopping - Exportiert nicht alle Artikel? Plugins für JTL-Shop 2
Neu JTL Exportformat Google Shopping - Exportvorlage um Staffelpreise [bulk_price] erweitern? Plugins für JTL-Shop 4
Neu Shopumstellung - Google Ads funktioniert nicht Plugins für JTL-Shop 3
Neu cDeeplink für Google Shopping direkt aus der Shop-Datenbank? Allgemeine Fragen zu JTL-Shop 0
Neu Prüfung ob Wert vorhanden ist einbauen Gelöste Themen in diesem Bereich 4

Ähnliche Themen