contao/test — Issue #2739: Echte Unterseiten-Navigation mit ModuleNavigation
Author: importer
Created: 2011-11-29 10:13:31+00:00
State: open
Labels: Feature, frontend

Ich bin nach einigem Suchen erstaunt, dass entweder niemand in der Contao Community ein solches Problem je gesichtet hat oder aber wieder einmal Google derart überfrachtet ist mit false positives, als dass mir einfach die richtige Trefferseite nicht begegnet ist. Im Grunde zeigt mir aber ein Blick in den Code, dass zumindest ModuleNavigation.php nicht leistet, was ich gern hätte:

Angenommen, meine Site hat eine Seitenstruktur über 5 Ebenen und linkerhand ist eine Navigation, welche die ersten 3 Ebenen abdeckt. Ich möchte nun auf einer Seite der 3. Ebene auf die ihr untergeordneten Seiten hinweisen und hatte erwartet, auch dafür ein Navigationsmenü einsetzen zu können, da diese Form der Weiterleitung/Übersichtsseite ja nicht komplett unüblich ist. Leider wird jedoch das von mir gewünschte Verhalten augenscheinlich nicht unterstützt. Obwohl ich mit Start/Stoplevel von 3/1 sehr wohl in dieser Situation aushelfen kann, so ist die Wiederverwertbarkeit dieses Moduls nicht mehr gegeben, wenn ich auf einer Seite der 4. Ebene Seiten der 5. Ebene listen möchte. Im Grunde fehlt mir die Option eines variablen Startlevels oder die "aktuelle Seite als Referenzseite" zu setzen ... auch danach habe ich mal gegooglet und kaum brauchbare Suchtreffer gesehen.

Für Option 1 wäre eine (wenig zufriedenstellende) Anpassung in ModuleNavigation als Ersatz für Zeile 82 wie folgt denkbar:

```
if ( $this->levelOffset < 0 )
{
// try to use context-dependent depth
$level = array_search( $objPage->pid, $objPage->trail );
if ( $level !== false )
$level -= $this->levelOffset;
}
else
$level = ($this->levelOffset > 0) ? $this->levelOffset : 0;
```

Natürlich ist klar, dass aktuell keine negativen Startlevel gesetzt werden können. Wenig zufriedenstellend ist die Lösung aber auch, weil negative Startlevel nicht sonderlich intuitiv wären. Darum wäre dann die mögliche Alternative, dies zu ergänzen:

```
// Use current page as root page
if ($this->defineCurrentAsRoot )
{
$trail = array($objPage->pid);
$level = 0;
}
```

Eventuell habe ich ja auch eine vorhandene Option für solche Fälle komplett übersehen, doch für jede Ebene ein eigenes Modul anzulegen ist nur ein Workaround, aber keine Lösung, weil ich dann Redakteure anleiten müsste, erst einmal ihre aktuelle Seitenebene zu ermitteln und diesen Vorgang wiederholen müsste, sobald ich mal eine Umstrukturierung meiner Site angehe.

--- _Originally created by soletan on December 15th, 2010, at 02:07pm (ID 2739)_