Wie Tracking-Code Yahoo Search Marketing einbinden?

Hallo,hat jemand die Analysefunktionen von Yahoo Search Marketing (ehemals: Overture) im Einsatz und weiß, wie der Tracking-Code in der laststep.tpl (bzw. bei Vier-Schritt-Bestellung in die thankyou.tpl) eingefügt werden muss? Problematisch ist im Gegensatz zum Adwords-Tracking-Code, dass der Code von Yahoo in den Header der Konversionsseite (also zwischen <HEAD> und </HEAD>) eingebunden werden muss.Die obersten beiden Zeilen der laststep.tpl lauten:[{assign var=“template_title” value=“Vielen Dank”}][{include file=“inc_header.tpl” title=$template_title location=“Bestellung abgeschlossen”}]Ich habe das Einbinden testweise auf einem lokalen Xampp-Server versucht; leider ohne Erfolg: Fügt man den Tracking-Code über oder unter der ersten Zeile ein, so befindet sich der Code oberhalb und damit außerhalb des Headers. Wird der Code aber unter der zweiten Zeile eingefügt, so befindet sich der Code aber mitten im Dokument, also im Body und nicht im Header. Ein Einfügen in die inc_header.tpl kann ebenfalls nicht der richtige Weg sein, da dann jede Seite als Konversionsseite zählen würde.Für einen guten Tip im Voraus besten Dank.
Viele Grüße
designer

Hallo

ich sehe da zwei Möglichkeiten.

Entweder die Zeilen in die inc_header.tpl reinkopieren.

Auch möglich die inc_header.tpl kopieren, umbenennen, Zeilen rein und der Aufruf anpassen.

Gruss Fredi


Im Shop finden Sie Mikrofon bis zum Lautsprecher alles

Hallo Fredi,

danke für den Tip. Leider funktoniert das auch nicht. In die inc_header.tpl kann man den Code nicht hineinkopieren, weil er nur auf der Konversionsseite (laststep.tpl) aufgerufen werden soll. Die zweite Variante habe ich eben getestet und dazu eine inc_test.tpl angelegt, in welche der Tracking-Code eingefügt wurde und welche durch Einfügen von [{include file=“inc_test.tpl”}] in die laststep.tpl aufgerufen wurde. Allerdings tritt dort das Problem auf, dass bei Einfügen oberhalb der zweiten Zeile der laststep.tpl ([{include file=“inc_header.tpl” title=$template_title location=“Bestellung abgeschlossen”}]) der Tracking-Code wieder oberhalb des Headers steht und man - wenn man das Head-Tag in der inc_test.tpl gesetzt hat - zwei Header in der Ausgabeseite hat. Bei Einfügen von [{include file=“inc_test.tpl”}] unterhalb der zweiten Zeile der laststep.tpl befindet sich der Tracking-Code wieder mitten im Body und damit außerhalb des Heads.

Viele Grüße und nochmals besten Dank für diese Idee.

Hallo Fredi,

ich bins nochmal. Jetzt habe ich erst verstanden, dass die zweite Möglichkeit so gemeint war, dass die Tracking-Code-Zeilen zusätzlich in die umbenannte, aber ansonsten unveränderte inc_header.tpl eingefügt werden sollen und in der laststep.tpl dieses geänderte Template dann statt der inc_header.tpl aufgerufen wird. Das funktioniert großartig, habe es eben gestestet.

Vielen Dank nochmals für die Hilfe. Da war ich wohl etwas betriebsblind :slight_smile:

kurze Frage: wie sieht denn der Code aus den du da einfügen musst?

Weil eigentlich ist das relativ egal wo du den Code einfügst weil meist ist das eh nur Javascript-Zeug und es ist an der stelle nur das Thema, das der Code überhaupt geladen werden muss - aber eig. egal wo. Weil wie zb bei google analytics ist das ja auch egal ob der im head od. foot steht - hauptsache der code wird geladen, denn nur dann passiert ja etwas - also hättest wahrscheinlich wenns nur JScript ist was nachgeladen wird - auch einfach im 4. Step mit reinbringen können.

Der Code schaut folgendermaßen aus (die Acoount-ID habe ich mal geändert):

<SCRIPT language=“JavaScript” type=“text/javascript”><!-- Yahoo! Inc.window.ysm_customData = new Object();window.ysm_customData.conversion = “transId=,currency=,amount=”;var ysm_accountid = “xxxxxxx”;document.write("<SCR" + "IPT language=‘JavaScript’ type=‘text/javascript’ " + “SRC=//” + “srv2.wa.marketingsolutions.yahoo.com” + “/script/ScriptServlet” + “?aid=” + ysm_accountid + “></SCR” + “IPT>”);// --></SCRIPT>

Da der Adwords-Tracking-Code ähnlich ist und im Body platziert wird, könnte das Snippet von Yahoo eigentlich auch in den Body. Allerdings weist Yahoo Search Marketing explizit darauf hin (sowohl auf der Website als auch im Installationshandbuch), dass der Code in den Header muss.

Hello Oxidians,

Also die Lösung, die hier beschrieben wird, finde ich unschön. _header.tpl zu duplizieren ist eine schlechte Idee wegen der Wartbarkeit des Templates. Mein Vorschlag wäre das render template mit Smarty-IF abzufragen. Wenn render() = ‘thankyou.tpl’, wird der Code von Yahoo eingebunden.

Zwischen <head> und </head> in _header.tpl:


[{* Yahoo Tracking *}]    
    [{if $oView->render() eq "thankyou.tpl"}]	
		<script type="text/javascript">
		<!-- Yahoo!
		window.ysm_customData = new Object();
		window.ysm_customData.conversion = "transId=,currency=,amount=";
		var ysm_accountid  = "mysecretyahooidgoeshere";
		document.write("<scr" + "ipt type='text/javascript' " 
		+ "src=//" + "srv3.wa.marketingsolutions.yahoo.com" + "/script/ScriptServlet" + "?aid=" + ysm_accountid 
		+ "></scr" + "ipt>");
		// -->
		</script>
	[{/if}]
[{* /Yahoo Tracking *}]

Bitte beachten: Ich habe den Code von Yahoo etwas aufgeräumt, da es auf dem Stand von 1997 war (alle Tags waren großgeschrieben, überflüssige language-attribute usw.). Ich bin ausserdem immernoch unsicher, ob document.write überhaupt im <head> Bereich verwendet werden darf/soll. Besser wäre die Einbindung per document.createElement();

[B]Update:[/B] habe gerade nachgelesen: document.write() darf eigentlich nicht benutzt werden wenn XHTML als application/xhtml+xml vom Server versendet wird, was keinen betrifft, da IE application/xhtml+xml nicht unterstützt. (Allerdings, laut Spezifikation, sollte XHTML als application/xhtml+xml verschickt werden). Von daher ist es empfehlenswert auf HTML5 umzustiegen, um zukünftige Javaskriptprobleme zu vermeiden. Siehe: http://hixie.ch/advocacy/xhtml

Schöne Grüße

Dave

[QUOTE=david;26778]Hello Oxidians,

Also die Lösung, die hier beschrieben wird, finde ich unschön. _header.tpl zu duplizieren ist eine schlechte Idee wegen der Wartbarkeit des Templates. Mein Vorschlag wäre das render template mit Smarty-IF abzufragen. Wenn render() = ‘thankyou.tpl’, wird der Code von Yahoo eingebunden.

Zwischen <head> und </head> in _header.tpl:


[{* Yahoo Tracking *}]    
    [{if $oView->render() eq "thankyou.tpl"}]    
        <script type="text/javascript">
        <!-- Yahoo!
        window.ysm_customData = new Object();
        window.ysm_customData.conversion = "transId=,currency=,amount=";
        var ysm_accountid  = "mysecretyahooidgoeshere";
        document.write("<scr" + "ipt type='text/javascript' " 
        + "src=//" + "srv3.wa.marketingsolutions.yahoo.com" + "/script/ScriptServlet" + "?aid=" + ysm_accountid 
        + "></scr" + "ipt>");
        // -->
        </script>
    [{/if}]
[{* /Yahoo Tracking *}]

Bitte beachten: Ich habe den Code von Yahoo etwas aufgeräumt, da es auf dem Stand von 1997 war (alle Tags waren großgeschrieben, überflüssige language-attribute usw.). Ich bin ausserdem immernoch unsicher, ob document.write überhaupt im Bereich verwendet werden darf/soll. Besser wäre die Einbindung per document.createElement();

[B]Update:[/B] habe gerade nachgelesen: document.write() darf eigentlich nicht benutzt werden wenn XHTML als application/xhtml+xml vom Server versendet wird, was keinen betrifft, da IE application/xhtml+xml nicht unterstützt. (Allerdings, laut Spezifikation, sollte XHTML als application/xhtml+xml verschickt werden). Von daher ist es empfehlenswert auf HTML5 umzustiegen, um zukünftige Javaskriptprobleme zu vermeiden. Siehe: http://hixie.ch/advocacy/xhtml

Schöne Grüße

Dave[/QUOTE]
So eng muss man das nicht sehen, dass das Script unbedingt im Header stehen muss…

Die Browser verstehen das auch, wenn man das in “thankyou.tpl” packt.

Der einzige, der wieder 'rumnölen wird, ist der “w3c-Validator”.

Und die “Standard-Junkies” natürlich.

Aber wen juckt das schon…

 [{if $oView->render() eq "thankyou.tpl"}]

halte ich übrigens für eine ganz schlechte Idee, da man damit den Render-Vorgang der kompletten Seite noch mal aufruft, nur um den Template-Namen zu erhalten…

Dafür gibt spezifischere und weniger resourcenfressende Abfragen, z.B.

[[{if  $oViewConf->getActiveClassName()=='thankyou'}]

Aber wenn man den Code direkt in die “thankyou.tpl” packt, brauch man das ja nicht mehr abzufragen.

habe gerade nachgelesen: document.write() darf eigentlich nicht benutzt werden wenn XHTML als application/xhtml+xml vom Server versendet wird
Und auch dieses “Problem” betrifft nur wieder XHTML-Validatoren…

Die Browser machen das schon, die sehen das nämlich auch nicht so eng mit den Standards…

Ich jedenfalls halte jede Sekunde, die man mit solchen Überlegungen verschwendet, nach wie vor für absolut vertane Zeit…

[B]Wobei sich mir, bei genauerem Hinsehen, der Sinn dieses komplexen Yahoo-Javascripts, sowieso verschließt…[/B]

Folgende Struktur sollte eigentlich denselben Zweck erfüllen

<script type="text/javascript">
window.ysm_customData = new Object();
window.ysm_customData.conversion = "transId=,currency=,amount=";
var ysm_accountid  = "mysecretyahooidgoeshere";
</script>
<script type="text/javascript" src="srv3.wa.marketingsolutions.yahoo.com/script/ScriptServlet?aid=mysecretyahooidgoeshere"></script>

Und schon ist man das unschöne “document.write” los…

Die Browser machen das schon, die sehen das nämlich auch nicht so eng mit den Standards…

Bei Javascript schon :wink: so ein document.write an der falschen stelle kann ziemliche probleme verursachen. Javascript verstehen nämlich nicht alle Browser, der IE versteht nur JScript, welches glücklichweise JavaScript sehr ähnlich ist, aber sich teils unterschiedlich verhält.

[[{if  $oViewConf->getActiveClassName()=='thankyou'}]

Noch besser! Danke. Das bauen wir so um.

Dave