eigentlich steht schon alles im Titel. Ich will, dass die Navigation sich immer die letzte ausgewählte Unterkategorie, -seite merkt und automatisch dorthin springt. Catx soll nicht angezeigt werden, nur die Seiten.
Cat1->Seite1
->Seite2 gespeichert
->Seite3
->Seite4
Cat2->Seite1
->Seite2
->Seite3 gespeichert
->Seite4
wenn zB Cat1->S2 aktiv ist, soll das gespeichert werden. Wenn ich nun zB auf Cat2->Seite3 bin und zur Cat1 wechseln will, soll automatisch die Seite 2 angezeigt werden.
Hätte als erstes an Cookies gedacht...
Lösung:
am Anfang der Frontendausgabe, ab 2. zeile (zwischen <cmsphp> und <cmsphp:cache>):
QUELLTEXT
session_start();
if ($idcat == 2) {
$_SESSION["work"] = $idcatside;
}
if ($idcat == 3 || $idcat == 6 || $idcat == 8) { //cat6 und 8 sind unterkategorien von cat3. cat3 hat keine eigenen seiten
$_SESSION["assigned"] = $idcatside;
}
if ($idcat == 2) {
$_SESSION["work"] = $idcatside;
}
if ($idcat == 3 || $idcat == 6 || $idcat == 8) { //cat6 und 8 sind unterkategorien von cat3. cat3 hat keine eigenen seiten
$_SESSION["assigned"] = $idcatside;
}
Am Ende ca. 751. Zeile den Moduloutput abändern:
QUELLTEXT
$tempwork = $_SESSION["work"];
$tempassigned = $_SESSION["assigned"];
$mod['output'] = str_replace('index.php?idcat=2','index.php?idcatside='.$tempwork,$mod['output']);
$mod['output'] = str_replace('index.php?idcat=3','index.php?idcatside='.$tempassigned,$mod['output']);
// Navigation ausgeben
echo $mod['intro'] . $mod['output'] . $mod['outro'];
$tempassigned = $_SESSION["assigned"];
$mod['output'] = str_replace('index.php?idcat=2','index.php?idcatside='.$tempwork,$mod['output']);
$mod['output'] = str_replace('index.php?idcat=3','index.php?idcatside='.$tempassigned,$mod['output']);
// Navigation ausgeben
echo $mod['intro'] . $mod['output'] . $mod['outro'];
Zur Erklärung:
Es wird innerhalb meherer festgelegter Kategorien die jeweils zuletzt besuchte Seite in einer Session-Variable gespeichert.
Vor der Modulausgabe werden die Ziele (href) der Links der Kategorien so abgeändert, dass sie auf die gespeicherte Seite zeigen.
In der Konfiguration der Navi darf die Einstellung "Bei Ordnerlinks immer Link zur Startseite des Ordners generieren
(statt Link zum Ordner)" kein Häkchen haben. Damit kann ich bequem die jew. idcat durch die gewünschte idcatside ersetzen.
Anmerkung:
Ich bin php-neuling und kein modul-profi. ich gebe mich mit dieser fixen lösung zufrieden. Über Verbesserungsvorschläge würde ich mich trotzdem freuen. Probleme sehe ich vor allem in komplizierteren Hierarchien bzw. Ordnungen. Hoffe, der Code hilft dem ein oder anderen.
Lg,
monk