Für verschiedene Aktionen im Shop, benötige ich ein Pop-Up Fenster, welches ich durch ein ganz einfaches Java-Script gelöst habe.
Nun möchte ich das Vorhandensein eines Cookies abfragen … und wenn das Cookie nicht vorhanden ist, soll das PopUp als Info angezeigt werden, bei vorhandenem Cookie soll garnichts passieren.
Das Cookie wird beim Aufruf bestimmter Seiten im Shop gesetzt … und das funktioniert ohne Probleme. Nur beim Abfragen des Cookies komme ich nicht weiter …
Das Cookie habe ich in einer Datei gesetzt mit:
<script type="text/javascript">
var ablauf = new Date();
var indreissigTagen = ablauf.getTime() + (30 * 24 * 60 * 60 * 1000);
ablauf.setTime(indreissigTagen);
document.cookie = "Info_PopUp=MeinShop_Aktion; expires=" + ablauf.toGMTString();
</script>
Jetzt möchte ich in der _header.tpl des Shops prüfen, ob das Cookie vorhanden ist … dann soll nichts passieren … und wenn das Cookie nicht vorhanden ist soll ein PopUp angezeigt werden.
Um dies zu testen habe ich in der _header.tpl direkt vor folgendes eingefügt:
<script type="text/javascript">
function checkCookie(){
if (!getCookie("Info_PopUp"))
alert("Info PopUp vorhanden");
else{
alert("Info PopUp nichtvorhanden");
}
}
</script>
Zunächst mal sollte man besser den Cookie in php setzen, aber das mal am Rande.
Dann wird der Cookie falsch gesetzt.
Hier mal eine setCookie Funktion die es richtig macht eingebaut:
[QUOTE=HeidelBÄR;72124]
<script type="text/javascript">
setCookie("Info_PopUp,"MeinShop_Aktion", 30);// in 30 Tagen
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
</script>
<script type="text/javascript">
function checkCookie(){
if (!getCookie("Info_PopUp"))
alert("Info PopUp vorhanden");
else{
alert("Info PopUp nichtvorhanden");
}
}
</script>
Hmm ahja also habe es jetzt nicht ausprobiert aber schaut schon mal nicht ganz sauber aus und kann man auch universeller handhaben, ausserdem fehlt ein getCookie …, so sollte es gehen:
function getCookie(c_name) {
var i,x,y,ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
function checkCookie(c_name) {
var mycookie = getCookie(c_name);
if (mycookie != null && mycookie != "") {
return true;
}
else {
false;
}
}
und hier jetzt die Abfrage mit alert als Testausgabe
if (getCookie('Info_PopUp')){
alert('Info_PopUp vorhanden');
}
else{
alert('Info_PopUp vorhanden');
}