Hallo Freunde,
habe hier ein komplexeres Problem.
Ich möchte, dass beim Aufrufen einer Seite ein Sessioncookie bzw. eine Session ausgelesen wird und damit dann das Menu aus einem Seitenbaum aufgerufen wird.
Ich habe dazu in der Vorbereitung eine Extension geschrieben, die immer (eingebunden im TS der ROOTSeite) folgendes macht. (Es geht um Stadtspezifische und Deutschlandweite Ausgaben)
Wenn POST und SESSION leer -> erzeuge POST und SESSION sowie Cookie mit einem WERT in -> anzeige (für Erstbesucher)
Diese sollten dann auf der Startseite das Menu für DEUTSCHLAND erhalten.
Sollten diese dann über ein DropDown Menu eine Stadt wählen, wird ein POST erzeugt, der als Wert den Namen der Stadt erhält. Gleichzeitig wird mit dem POST auch eine Session und ein Cookie erzeugt.
In der Extension steht somit-> Wenn POST = STADTNAME erzeuge auch eine Session sowie ein Cookie mit dem Stadtnamen (damit beim Seitenumschalten auch immer Ausgaben aus dieser Stadt erscheinen).
Solange bis ein neuer POST mit einem anderen Stadtname oder wieder Deutschland aufgerufen wird.
Ich mache das so in der EXTENSION:
if(!isset($_SESSION['anzeige'])){$_SESSION['anzeige'] = 'Deutschland';}
if(!empty($_POST['anzeige'])){
$_SESSION['anzeige'] = $_POST['anzeige'];
setcookie("anzeige", $_POST['anzeige']);
}elseif(!empty($_COOKIE["anzeige"]) AND $_COOKIE["anzeige"] != $_SESSION['anzeige']){
$_SESSION['anzeige'] = $_COOKIE["anzeige"];
}
Im TS der ROOTSEITE steht:
# grundsätzlicher Navigationstree einstieg
temp.nav = TEXT
temp.nav = 38
...
[globalVar = GP:anzeige = *]
temp.nav = TEXT
temp.nav = 38
[globalVar = GP:anzeige = Deutschland]
temp.nav = TEXT
temp.nav = 38
[else]
temp.nav = TEXT
temp.nav = 39
[global]
Was dazu führen sollte, dass wenn kein POST Wert vorhanden oder Deutschland als Wert ausgelesen wird, die Navigation für Deutschland (38-)
und bei vorhandenem Postwert für eine Stadt die 39 (für die Städte) ausgegeben wird.
Außerdem soll dauerhaft diese AUSWAHL auf der Seite gezeigt werden (damit man weiss wo man sich befindet).
Dieses erledigt:
seite.10.marks.STADTANZEIGE = TEXT
seite.10.marks.STADTANZEIGE.data = GPvar : anzeige
seite.10.marks.STADTANZEIGE.ifEmpty = nicht gesetzt
Der Wert anzeige ist sowohl der POST als auch der SESSION und Cookie Wert.
Grundsätzlich funktioniert das auch, aber nun zu meinen Problemen.
1: Wenn ich mit dem DropDown umschalte erhalte ich gewünschte Ausgaben, aber sobald ich auf Unterseiten gehen möchte, verschwindet meine Anzeige.
Mit einem Print auf SESSION und POST erhalte ich aber die richtigen Ausgaben im Header der Seite. Das heißt ja, dass meine POST/SESSION und Cookie Daten da sind!
POSTDATEN werden so im Header angezeigt -> Array ( [anzeige] => Deutschland )
SESSIONDATEN werden ebenfalls so angezeigt -> Array ( [anzeige] => Deutschland )
Ich denke also, dass meine Abfrage mit globalVar auf die GP:anzeige nicht richtig ist.
Beim ersten Aufrufen nach dem DropDown umschalten wird die "ANZEIGE" richtig angezeigt dann nicht mehr.
Hier meine konkrete Frage:
Mit welchem TS Code erhalte ich dauerhaft die Ausgabe des gerade aufgerufenen Session/Post Werts?
2: Beim ersten Aufrufen der Seite erhalte ich gar keine Werte. Es müßte ja zumindest das letzte Cookie und auch die letzte Session noch gespeichert sein und somit auch eine Zuweisung per Condition funktionieren. Sowohl im Header (per Print als auch in einem Marker stehen sie ja auch noch drin), aber innerhalb meiner Condition hat das keine Auswirkungen. Auch die ANZEIGE liefert nichts.
Ich weiss, dass das Cookies sowie die Session ja erst nach dem Aufrufen erzeugt werden und somit meine Condition auf Sessions und Cookies nicht greifen kann, aber dann doch zumindest die POST Daten.
Es müßte in den CONDITIONS also heißen:
Wenn kein Cookie oder keine SESSIONDATEN, dann zeige DEUTSCHLAND ansonsten nehme die gerade erzeugten POST Daten.
Das habe ich aber trotz aller Bemühungen noch nicht erreicht.
Ich habe es mit globalVar, globalString, HTTP_SESSION_VAR sowie
globalString = TSFE|fe_user|sesData|auswahl=Deutschland ect.pp. probiert.
Ist ein bisserl kompliziert, aber ich hoffe ihr habt einen Lösungsansatz für mich
Lieben Gruß Andreas