Navigationspunkt der aktuellen Seite hervorheben

Wer kennt das nicht, im Laufe der Zeit nimmt der Umfang der Navigation zu und es ist dann sehr aufwändig diese auf allen Seiten zu aktualisieren. Abhilfe kann die PHP include()-Anweisung schaffen. Dazu wird eine Navigation erstellt und in einer externen Datei gespeichert. Diese lässt sich dann mit Hilfe der include()-Anweisung in jedes Dokument einfügen.



<?php include("navi.php");?>

PHP ist eine serverseitige Scriptsparache. Um die include-Anweisung nutzen zu können, muss ein Server mit installiertem PHP vorhanden sein.

Navigationspunkt hervorheben

Bisher wurde ja auf der aktuellen Seite der Link entfernt und bspw. durch <strong>Linkname</strong> ersetzt.

Wie aber soll nun der aktuelle Link entfernt werden, wenn doch immer dieselbe Navigation eingebunden wird?

Nun, da gibt es ja bekanntlich viele Möglichkeiten um dieses Problem zu lösen. Hier möchte ich mal mein Experiment vorstellen.

Auch wenn es mit Arrays besser zu lösen wäre, habe ich mich für eine Nachbehandlung mittels str_replace entschlossen, weil diese relativ einfach umzusetzen ist. Es wird also erst die komplette Navigation inkludiert und anschließend erfolgt die Ersetzung.

Genug der langen Worte. Nun folgt eine kleine Anleitung in drei Schritten.

Schritt 1: Navigation erstellen

Da wir für diesen Vorschlag keine Arrays benötigen, kann also eine normale ungeordnete Liste erstellt und als navilist.inc abgespeichert werden.

Achtet darauf, dass die Dateien die Endung php erhalten, da sonst keine PHP-Anweisungen ausgeführt werden.


 <ul>
  <li><a href="/">Startseite</a></li>
  <li><a href="/kontakt.php">Kontakt</a></li>
  <li><a href="/impressum.php">Impressum</a></li>
 </ul>

Schritt 2: Navigation inkludieren

Mit der include-Anweisung wird das PHP-Script(chen) navi.php eingebunden.

<div id="navigation">
 <?php include("navi.php"); ?>
</div> 

Schritt 3: Das SCRIPT ;-) navi.php erstellen

Mit $_SERVER['REQUEST_URI'] wird die aktuelle Seite ermittelt. Die Funktion file_get_contents liest den kompletten Inhalt der Datei navilist.inc ein. Mit preg_match() wird der Linktext der aktuellen Seite ermittelt. Die gefundene Übereinstimmung wird in ein mehrdimensionales Array gespeichert. Wobei array[0] das gesamte A-Element und array[1] den Linktext enthält. Zu guter Letzt sorgt str_replace für die Ersetzung, und echo für die Ausgabe. Fertig.

<?php
$seite = $_SERVER['REQUEST_URI']; 

$navi = file_get_contents("navilist.inc"); 

preg_match("#<a href=\"$seite\">(.+?)</a>#s",$navi, $titel); 

$navigation = str_replace($titel[0],'<strong>'.$titel[1].'</strong>',$navi);

echo $navigation;
?>

Fazit

Wer auf Arrays verzichten und seine Navigation lieber wie gewohnt erstellen möchte, wird sich mit dieser Methode vielleicht anfreunden können.Beispiel»

Für z.B. WordPress Nutzer bietet sich toscho's Alternative an.

erstellt am 08.03.2011 überarbeitet am 08.01.2013

nach oben