We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1924
    • 119 Posts
    Hallo Forum,

    ich habe ein Snippet geschrieben, welches bei jedem Reload einer Seite, genauso wie beim Springen zu einer anderen Seite im Rotationsverfahren einen Gif-Banner anzeigen soll.

    Beispiel: gegeben eine Website mit 10 Seiten (Startseite + neun Unterseiten) und 4 verschieden Banner. Nun soll beim ersten Aufruf der Website Banner1 gezeigt werden. Beim Sprung auf eine der Unterseiten dann Banner2, beim nächsten Sprung Banner3 usw. Nach Banner4 folgt dann logisch wieder Banner1. ich hoffe ich habe mich verständlich ausgedrückt!?

    So nun habe diese Aufgabenstellung als PHP-Rookie versucht mit Sessions oder Cookies zu lösen. Beide funktioniert bei mir lokal (nicht in Modx eingebunden, sondern ganz normal als PHP-Seite im Apache) aber leider nicht als Snippet auf dem Produktions-Server. Warum???

    Hier mein Code zum lokalen Test (Cookie-Variante):
    <?php
    
    if(!isset($_COOKIE["banner"]))
    {
      $count=(int)1;
      
      setcookie("banner",$count,time()+(30*24*60*60));
      
      echo"<img src='images/banner".$_COOKIE["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
    }
    else {
     if($_COOKIE["banner"]<4)
     {
     	$count=(int)$_COOKIE["banner"]+(int)1;
    	setcookie("banner",$count,time()+(30*24*60*60));
     		
     	echo"<img src='images/banner".$_COOKIE["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
     else {
     
    	$count=(int)1;
    	setcookie("banner",$count,time()+(30*24*60*60));
        
     	echo"<img src='images/banner".$_COOKIE["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
    }
    ?>


    Session-Variante:
    <?php
    session_start();
    if(!isset($_SESSION["banner"]))
    {
      $_SESSION["banner"]=(int)1;
      echo"<img src='images/banner".$_SESSION["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
    }
    else {
     if($_SESSION["banner"]<4)
     {
     	$_SESSION["banner"]+=(int)1;
     	echo"<img src='images/banner".$_SESSION["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
     else {
    	$_SESSION["banner"]=(int)1;
     	echo"<img src='images/banner".$_SESSION["banner"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
    }
    ?>


    Und hier das Snippet (Session-Variante):
    session_start();
    if(!isset($_SESSION["bannerwahl"]))
    {
      $_SESSION["bannerwahl"]=(int)1;
      echo"<img src='assets/images/banner".$_SESSION["bannerwahl"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
    }
    else 
    {
     if($_SESSION["bannerwahl"]<4)
     {
     	$_SESSION["bannerwahl"]+=(int)1;
     	echo"<img src='assets/images/banner".$_SESSION["bannerwahl"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
     else 
     {
    	$_SESSION["bannerwahl"]=(int)1;
     	echo"<img src='assets/images/banner".$_SESSION["bannerwahl"].".gif' witdh='700' height='147' alt='Banner' title='Banner' />";
     }
    }


    Ich hoffe irgendwer kann die Dunkelheit lichten!?

    Lieben Gruß aus Hannover, Alex
      • 17883
      • 1,039 Posts
      Kann nach dem kurzen Blick auch nicht so viel sagen, aber probier mal zurückzugebenden Wert (<img src...) in eine Variable zu schreiben und dann sauber per return $value zurückzugeben. Wird denn gar nichts ausgegeben? Kenne mich mit der session verwaltung in modx aber leider auch nicht aus.
        • 1924
        • 119 Posts
        Hi Marc,

        habe vorhin daran rumgeschraubt und bin drauf gekommen, das der Fehler bei der Session-Version am gecachten Snippet-Aufruf liegt.
        Habe den Aufruf von [[BannerCall]] auf [!BannerCall!] geändert und schon funktioniert es.

        Vielen Dank und Gruß aus H-Town, Alex