Hallo an alle, ich musst mich heute mal mit der chekout_success.html befassen, da soll ein JS rein welches die Bestellsumme, die Kundennummer die Währung und die Bestellnummer an einen Anbieter übermittelt. Jetzt gibt es ja schon jede Menge was man in dieser Datei über Smarty Variablen auslesen kann, unter anderem auch die Kundenummer und die Währung. Die Bestellnummer und die Bestellsumme funktionieren leider nicht, was mir etwas unverständlich ist, da ja z.B der MwSt Satz und die enthaltene MwSt, Geschlecht, Name, Vorname komplette Anschrift, Sprache ja auch funktionieren. Sei wie es sei, weiß jemand wie ich die Bestellnummer und den Gesamt Bestellpreis da rein bekomme?
Hallo Kai, dein Vorhaben solltest du mittels Extender lösen. In deinem Fall ein Overload der CheckoutSuccessExtenderComponent-Klasse. Bist du mit dem Extender-System vertraut? Eine Vorlage für dich wäre die Klasse system/overloads/CheckoutSuccessExtenderComponent/GoogleConversionTrackingCheckoutSuccessExtender.inc.php, die bereits sehr ähnliches tut.
Hallo Moritz, vertraut bin ich mit der Funktionsweise nur bei der Umsetzung hapert es, ich schau mir das mal an, mal sehen ob ich was zusammengebaut bekomme.
Hallo Moritz, ich habe jetzt mal eine Datei ZanoxCheckoutSuccessExtender.inc.php in user_classes\overloads\CheckoutSuccessExtenderComponent/ angelegt mit folgendem Inhalt Code: <?php class ZanoxCheckoutSuccessExtender extends ZanoxCheckoutSuccessExtender_parent { function proceed() { parent::proceed(); $this->v_output_buffer['ZANOX_CONVERSION'] = ZANOX_CONVERSION; if (isset($this->v_data_array['orders_id']) && !empty($this->v_data_array['orders_id']) && isset($this->v_data_array['coo_order']) && is_object($this->v_data_array['coo_order'])) { $t_amount = round($this->v_data_array['coo_order']->info['pp_total'], 2); $t_conversion_id = ZANOX_CONVERSION_ID; $t_html = ' <script type="text/javascript" src="https://ad.zanox.com/pps/?17625C1499035435&mode=[[1]]&CustomerID=[[XXX]]&OrderID=[[XXX]]&CurrencySymbol=[[XXX]]&TotalPrice=[[XXX]]&PartnerID=[[XXX]]"> </script> <noscript> <img src="https://ad.zanox.com/pps/?17625C1499035435&mode=[[2]]&CustomerID=[[XXX]]&OrderID=[[XXX]]&CurrencySymbol=[[XXX]]&TotalPrice=[[XXX]]&PartnerID=[[XXX]]" width="1" height="1" /> </noscript> '; $this->v_output_buffer['ZANOX_CONVERSION_BLOCK'] = !empty($t_conversion_id) ? $t_html : ''; } } } Dann habe ich eine checkout_success-USERMOD.html dort habe ich folgendes drin Code: {if $ZANOX_CONVERSION} {$ZANOX_CONVERSION_BLOCK} {/if} Der Inhalt der ZanoxCheckoutSuccessExtender.inc.php erscheint jetzt auch im Checkout. jetzt müssten "nur noch" OrderID, CurrencySymbol, CustomerID und TotalPrice gefüllt werden. Und da klemmt es bei mir! Hier wäre Hilfe angebracht. Danke!
Hallo, der GoogleConversionCheckingCheckoutSuccessExtender war nur so ein halbgutes Beispiel, weil der noch das alte System mit dem explizit benannten Ausgabeblock verwendet. Das ist nicht mehr nötig, checkout_success-USERMOD.html braucht man in der Regel NICHT, das kannst du löschen. Befülle stattdessen im Extender $this->html_output_array (statt $this->v_output_buffer), die Inhalte von $this->html_output_array werden ohne weitere Maßnahmen ausgegeben.
Das funktioniert jetzt auch, danke für den Tipp, jetzt fehlen mir ur noch die entsprechenden Daten. Das ganze sieht jetzt so aus Code: <?php class ZanoxCheckoutSuccessExtender extends ZanoxCheckoutSuccessExtender_parent { function proceed() { parent::proceed(); $this->v_output_buffer['ZANOX_CONVERSION'] = ZANOX_CONVERSION; if (isset($this->v_data_array['orders_id']) && !empty($this->v_data_array['orders_id']) && isset($this->v_data_array['coo_order']) && is_object($this->v_data_array['coo_order'])) { $t_amount = round($this->v_data_array['coo_order']->info['pp_total'], 2); $t_conversion_id = ZANOX_CONVERSION_ID; $t_html = ' <script type="text/javascript" src="https://ad.zanox.com/pps/?17625C1499035435&mode=[[1]]&CustomerID=[[XXX]]&OrderID=[[XXX]]&CurrencySymbol=[[XXX]]&TotalPrice=[[XXX]]&PartnerID=[[XXX]]"> </script> <noscript> <img src="https://ad.zanox.com/pps/?17625C1499035435&mode=[[2]]&CustomerID=[[XXX]]&OrderID=[[XXX]]&CurrencySymbol=[[XXX]]&TotalPrice=[[XXX]]&PartnerID=[[XXX]]" width="1" height="1" /> </noscript> '; $this->html_output_array['ZANOX_CONVERSION_BLOCK'] = !empty($t_conversion_id) ? $t_html : ''; } } } Da kann doch bestimmt das $this->v_output_buffer['ZANOX_CONVERSION'] = ZANOX_CONVERSION; jetzt komplett weg?
So ist es. Tipp am Rande (nur Beispielcode): PHP: $t_html = '<script type="text/javascript" src="https://ad.zanox.com/pps/?17625C1499035435&mode=:mode&CustomerID=:customer_id&OrderID=:order_id&CurrencySymbol=:currency&TotalPrice=:totalprice&PartnerID=:partnerid"> </script> <noscript> <img src="https://ad.zanox.com/pps/?17625C1499035435&mode=:mode&CustomerID=:customer_id&OrderID=:order_id&CurrencySymbol=:currency&TotalPrice=:totalprice&PartnerID=:partnerid" width="1" height="1" /> </noscript> '; $replacements = array( ':mode' => 'live', ':customer_id' => $_SESSION['customer_id'], ':order_id' => $this->v_data_array['coo_order']->info['order_id'], ':currency' => $currency, ':totalprice' => $t_amount, ':partnerid' => 'neureinbeispiel', ); $t_html = strtr($t_html, $replacements); Nach dem Schema baue ich solche Tracking-Schnippsel zusammen, das ist hypsch übersichtlich und wartbar.
Hallo Marko, das klappt ja super, ich habe das jetzt so PHP: <?phpclass ZanoxCheckoutSuccessExtender extends ZanoxCheckoutSuccessExtender_parent { function proceed() { parent::proceed(); if (isset($this->v_data_array['orders_id']) && !empty($this->v_data_array['orders_id']) && isset($this->v_data_array['coo_order']) && is_object($this->v_data_array['coo_order'])) { $t_amount = round($this->v_data_array['coo_order']->info['pp_total'], 2); $t_conversion_id = ZANOX_CONVERSION_ID;$t_html = '<script type="text/javascript" src="https://ad.zanox.com/pps/?17625C1499035435&mode=:mode&CustomerID=:customer_id&OrderID=:order_id&CurrencySymbol=:currency&TotalPrice=:totalprice&PartnerID=:partnerid"></script><noscript><img src="https://ad.zanox.com/pps/?17625C1499035435&mode=:mode&CustomerID=:customer_id&OrderID=:order_id&CurrencySymbol=:currency&TotalPrice=:totalprice&PartnerID=:partnerid" width="1" height="1" /></noscript>';$replacements = array( ':mode' => 'live', ':customer_id' => $_SESSION['customer_id'], ':order_id' => $this->v_data_array['coo_order']->info['orders_id'], ':currency' => $_SESSION['currency'], ':totalprice' => $t_amount, ':partnerid' => 'neureinbeispiel',);$t_html = strtr($t_html, $replacements);$this->html_output_array['ZANOX_CONVERSION_BLOCK'] = !empty($t_conversion_id) ? $t_html : '';} }} jetzt noch eine kleine Sache, ich habe gerade erfahren das der totalprice netto sein soll. Zitat: Bei der Übergabe des Warenkorbwertes sprechen wir üblicherweise vom Nettowert. Dieser Wert wird immer mit 2 Nachkommastellen und ohne 1000er Trennzeichen übergeben. Am schönsten wäre es ja, wenn man nur das pp_total austauschen müsste, ich fürchte leider so einfach ist das nicht. Hast du noch einen Tipp für mich?
Hallo, ich fürchte, den Netto-Betrag wirst du dir aus der orders_total-Tabelle raustüddeln müssen. Ich hab das gerade nicht hinreichend zuverlässig im Kopf, weil man da verschiedene Fälle (B2C, B2B, außergemeinschaftlicher Handel, …) berücksichtigen muss, die zu unterschiedlichen Daten in orders_total führen. Am besten probierst du das einfach mal aus.