Weil ich gerade was dazu in einem WP-Blog las und ich durchaus Interesse an sowas hätte, mal ein paar Gedanken zum Thema kontextsensitive Navigation. Was ist das, was verstehe ich darunter?
Wenn ich auf einer statischen Seite bin, dann sollte ich die Möglichkeit haben in der Seitenleiste, bei der Auflistung der statischen Seiten diejenige Seite besonders zu markieren, auf der ich gerade bin.
So, ich habe jetzt gerade nicht die Zeit mich in das nächste Plugin codetechnisch zu stürzen, und ohne hin ist "coden" ja die Handwerkerarbeit, richtiges Programmieren findet im Kopf satt!
Daher nur ein paar Ansätze als Anregung fürs Coden, vielleicht helfen diese Vorüberlegungen in Pseudo-Code ja etwas.
Grundlegend: Die Markierung der aktuellen Seite sollte per CSS erfolgen. Sprich, es sollte (zusätzlich) dem korrekten Eintrag in der Navigation ein class="actual_page" zugeordnet werden.
Wie soll das gehen?
In der ausgabefunktion des Plugins müßte ja wohl eine Schleife stehen, die die statischen Seiten den Hierarchiebaum lang abgrast und ausgibt.
Irgendwo steht da also wohl:
Code: Select all
<a href=$seiten-URL>seiten_titel</a>Code: Select all
<a href=$seiten-URL
if $aktuell-gezeigte_seite=seiten_ID then class="actual_page"
>
seiten_titel</a>Soweit so einfach. Die aktuelle ID dürfte wohl auch irgendwo zu bekommen sein.
Nun gibt es aber Unterseiten, die nicht in der Seitennavigation erscheinen sollen. Dennoch sollte ja irgendwas markiert werden können. Also muß wohl nicht nur eine Variable $aktuell-gezeigte-seite herhalten, sondern eine Funktion, die ggf. die tiefste, der aktuellen seite übergeordnete Seite angibt, die gerade noch in der Navigation angezeigt werden soll.
Also in der Art:
Code: Select all
<a href=$seiten-URL
if $gib_aktuell_seite()=seiten_ID then class="actual_page"
>
seiten_titel</a>Code: Select all
$aktuell=hole_id_der_aktuellen_seite();
aktuelle_seite($aktuell)
function gib_aktuelle_seite($aktuell) {
if $aktuell->zeige_in_Navigation=ja
return $aktuell
else
$aktuell=hole_mutterseiten_ID($aktuell)
gib_aktuelle_seite($aktuell)
return $aktuell
}Nun ist es vielleicht erwünscht, wenn per CSS unterschieden werden kann, ob a) wirklich die markierte Seite die gezeigte ist oder ob es bloß eine Oberseite ist, weil die aktuelle Seite selber garnicht in der Navigation steht.
Erweiterung des Codes:
Code: Select all
<a href=$seiten-URL
if $gib_aktuell_seite()=seiten_ID then class="actual_page"
if $gib_aktuell_mutterseite()=seiten_ID then class="actual_mutter_page"
>
seiten_titel</a>Die gib_aktuell_mutter_page hingegen würde auch zuerst prüfen, ob die aktuelle Seite in der Navigation zu zeigen ist, dann aber ein false liefern und nur dann wenn sie unsichtbar ist, weiter nach einer sichtbaren Mutterseite suchen.
Alternativ läßt man die gib_aktuell_mutter_page immer ein Ergebnis liefern und schließt das doppelte Markieren bereits in der Ausgabe-Erstellung aus:
Code: Select all
<a href=$seiten-URL
if $gib_aktuell_seite()=seiten_ID then class="actual_page"
elseif $gib_aktuell_mutterseite()=seiten_ID then class="actual_mutter_page"
>
seiten_titel</a>