Spaces. Smartes Cloud Hosting für anspruchsvolle Webprojekte. Loslegen und Spaces testen. Von Mittwald.
Gastautor 4. Mai 2005

Breadcrumb-Navigation mit PHP

Kein Beitragsbild

von Florian Fischer

Brotkrumen als Navigationshilfe sind zwar kein zen­tra­les Instrument, doch alle­mal hilf­reich – beson­ders wenn es zahl­rei­che Rubriken gibt. Man kann das manu­ell, mit Javascript oder mit PHP rea­li­sie­ren. Angenehmer Zusatznutzen der PHP-Variante: bar­rie­re­arm und such­ma­schi­nen­taug­lich ist die­se Lösung eben­falls.

Dabei wird die URL zur jewei­li­gen Seite unter­sucht, die ein­zel­nen Unterordner ermit­telt und ver­linkt. Eine so genann­te Breadcrumb-Navigation ent­steht.


Brotkrume bei Yahoo

Der Usability-Experte Steve Krug schreibt in “Don’t make me think!” ab Seite 75 über das opti­ma­le Erscheinungsbild von Breadcrumbs.

Demnach soll­te eine Breadcrumb-Navigation im Idealfall:

  • oben plat­ziert sein
  • zwi­schen den ein­zel­nen Levels ein grö­ßer-als-Zeichen ‘>’ ent­hal­ten (Doppelpunkt ‘:’ oder ein Slash ‘/’ geht auch)
  • in einer klei­nen Schriftart geschrie­ben sein
  • die Worte ‘Sie befin­den sich hier:’ ent­hal­ten und
  • die ange­zeig­te Seite auf der man sich befin­det, soll­te in fet­ter Schrift gesetzt und nicht klick­bar sein.

Alles klar! Aufbauend auf die­sen Vorschlägen, hier nun das fol­gen­de PHP-Script:

 <?php
    $an="Sie befinden sind hier: ";
    $home="http://www.drweb.de/"; // Hier Ihre Domain 
    $pie=explode("/","$_SERVER[PHP_SELF]");
    $tr=" > "; // Alternativ: ':', '/'
    $b=count($pie);
    echo $an."<a href=\"".$home."\">Startseite</a>";
    // Alternativ: 'Home', 'Start'
    for($a=1;$a<$b-1;$a++){
    $ta=$ta.$pie[$a]."/";
    echo $tr."<a href=\"".$home.$ta."\">".ucfirst($pie[$a])."</a>";}
    $file=explode('.',ucfirst($pie[$b-1]));
    echo "<b>".$tr.$file[0]."</b>";
    ?>

Fügen Sie die­sen Codeabschnitt auf allen Seiten die mit der Breadcrumb-Navigation aus­ge­stat­tet wer­den sol­len, an der gewünsch­ten Position ein.

Das Script arbei­tet recht ein­fach:

  • per ‘explode(“/”,”$_SERVER[PHP_SELF]”)’ wird die momen­tan aktu­el­le URL mit Hilfe des Trennzeichens ‘/’ auf­ge­löst und in ein Array geschrie­ben.
  • ‘Startseite’ wird mit einem Link zu Ihrer Domain aus­ge­ge­ben.
  • Anschließend wird mit einer Schleife jedes Element aus dem Array mit sich selbst ver­linkt, per ‘ucfirst’ das ers­te Zeichen jedes vor­han­de­nen Ordners gross­ge­schrie­ben und mit dem Trennzeichen ‘/’ aus­ge­ge­ben.
  • Und in der Folge die momen­tan aktu­el­le Datei, dies­mal ohne Verlinkung und auch ohne Dateiendung, ange­zeigt.

Da das Script die Ordner- und Dateinamen anzeigt, ach­ten Sie bereits bei der Vergabe von Bezeichnungen der ein­zel­nen Ordner auf eine les­ba­re Struktur. Immerhin liest sich:

Sie befin­den sich hier: Startseite > Onlineshop > Computer > Eingabegeräte

bes­ser als

Sie befin­den sich hier: Startseite > Sho > Comp > Index

Nach dem Einbau, steht den Benützern Ihrer Website eine voll-funk­ti­ons­fä­hi­ge Breadcrumb-Navigation zur Verfügung, die nicht auf akti­vier­tes JavaScript ange­wie­sen ist, sich bes­tes für eine kor­rek­te Indexierung durch Suchmaschinen eig­net und auch den Segen von Steve Krug bekom­men soll­te.

15 Kommentare

  1. Das Script funk­tio­niert nach wie vor ein­wand­frei. Man benö­tigt jedoch auf jeder Ebene eine index.html oder index.php Datei, damit der gewünsch­te Effekt erzielt wird.

  2. Vielen Dank für das klas­se Script. Erfüllt genau sei­nen Zweck.

  3. Ziemlich alter Artikel, den ich hier gefun­den habe. Das Skript funk­tio­niert wohl nur im Falle von sta­ti­schen HTML-Seiten. Bei aus Datenbanken gene­rier­tem Inhalt (zen­tra­le index.php + Theme-Dateien + Datenbankinhalte) klappt es nicht. Aber für aktu­el­le Content-Management-Systeme kann man meis­tens eine Brotkrumen-Navigation als Add-on bekom­men.

  4. Hallo,
    bekom­me die fol­gen­de Fehlermeldung wenn ich es in einem Unterordner anle­ge!’

    Notice: Undefined varia­ble: ta in /var/www/web4/html/include/breadcrumb.php on line 10 >

    Was muss ich hier ändern?

  5. Super Anleitung. Nur eine Frage hier­zu:

    Da ich die ver­schie­de­nen index.php in Unterordnern nicht über .htac­cess umschrei­ben kann, habe ich fol­gen­de Linkstruktur für die Startseiten der Unterordner:

    http://www.domain.de/ordner anstel­le von http://www.domain.de/ordner/index

    Leider Gibt die Breadcrumb den Index auch mit aus, obwohl die Datei gar nicht in der URL steht:

    Sie befin­den sich hier: Startseite > Ordner > Index

    Kann man eine Regel anwen­den, dass die Index in der Breadcrumb nicht ange­zeigt wird?

    Danke für Tipps vor­ab!

    Gruß

  6. super Anleitung, trotz­dem eine Frage:

    wie muss der Code aus­se­hen, wenn die Ordnerstruktur nicht ver­linkt sein soll, d.h. nur die Startseite soll als Link nutz­bar sein, der Rest als ein­fa­cher Text?

  7. Danke für gute anlei­tung

  8. Also ich dach­te mit mei­nem jet­zi­gen PHP Stand könn­te ich sowas noch nicht, aber das Beispiel hier ist so sim­pel, dass es schon wie­der geni­al ist!
    Danke! ;D

  9. Stammt der Begriff Breadcrumb (deutsch: Brotkrumen) nicht aus dem Märchen “Hänsel und Gretel”?

  10. Supergeschichte, nur lei­der habe ich eine inter­ne Umleitung auf mei­ner Domain. Da muss ich wohl etwas wei­ter­pfrie­meln. Gruß. Petra.

  11. Muss schon sagen, genau so was habe ich gesucht
    dan­ke

  12. das kommt davon, wenn man zu schnell mit dem tip­pen ist. sor­ry

  13. Danke, end­lich mal ein rich­tig gute anlei­tung, um die sei­ten zu opti­mie­ren. noch­mals dan­ke

Schreibe einen Kommentar zu Jürgen Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.