Ankündigung

Einklappen
Keine Ankündigung bisher.

Breadcrumb-Navigation: Einzelne Bestandteile ersetzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Breadcrumb-Navigation: Einzelne Bestandteile ersetzen

    Guten Abend zusammen,

    ich versuche gerade eine Breadcrumb-Navigation dynamisch mit PHP zu realisieren. Hierzu habe ich mich an diesem Script https://www.drweb.de/breadcrumb-navigation-mit-php/ orientiert. Das funktioniert soweit auch wie es soll:

    PHP-Code:
        //Variablen
     
    $an="Sie befinden sind hier: ";
        
    $home="https://www.meineurl.de/";   //URL
        
    $pie=explode("/","$_SERVER[PHP_SELF]");
        
    $tr=" > "//Trennzeichen zwischen einzelnen Zeilen
        
    $b=count($pie);

        echo 
    $an."<a href="".$home."">Start</a>"//Bezeichnung Startseite

        
    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 
    $tr."<b>".$file[0]."</b>"
    Nun versuche ich jedoch, einzelne Verzeichnis- und Seitennamen durch vorgegebene zu ersetzen. Z.B. soll statt Start > Verzeichnis 1 > Seite 1 dann entsprechend Start > Verzeichnis X > Seite 1 angezeigt werden. Weiterhin möchte ich den Fällen, in denen der Seitenname auf index.php oder ähnlich lautet, den Seitentitel anzeigen lassen.
    Allerdings komme ich hier bei der Umsetzung nicht weiter.
    Für den ersten Fall habe ich bisher folgendes versucht:

    PHP-Code:
           for($a=1;$a<$b-1;$a++){
         
    $ta=$ta.$pie[$a]."/";
      
    $pie['Verzeichnis 1'] == 'Verzeichnis X';
         echo 
    $tr."<a href="".$home.$ta."">".ucfirst($pie[$a])."</a>";
     } 
    Das hat aber leider nicht zu dem gewünschten Ergebnis geführt, es passiert nichts bzw. das Skript läuft so weiter wie bisher.
    Für den zweiten Fall habe ich leider gar keine Idee, wie man das lösen könnte. Es wird im Prinzip wohl auf eine if-Abfrage hinauslaufen, also sowas wie

    PHP-Code:
    if(Dateiname index.php) {Anzeigename Seitentitel aus index.php
    Hat hier jemand vielleicht ein paar Lösungsimpulse wie man die beiden Punkte umsetzen könnte?

  • #2
    Hallo!

    Die Bezeichnungen deiner Variablen würde ich ändern, da diese unverständlich sind. Lieber aussagekräftige Namen nutzen, statt $b lieber $number oder $anzahl. Das selbe für $an, $tr, $ta usw.

    Um strings zu verändern können dir die funktionen str_replace oder strtr vielleicht helfen.

    MfG

    Kommentar


    • #3
      Das ist invalider und schlechter Code.
      PHP-Code:
      $replace = [
          
      'dir-1' => 'dir-x'
      ];
      $url substr($_SERVER['PHP_SELF'], 1);
      if (
      $url === '' || $url === 'index.php') {
          
      $out 'Custom Page Name';
      } else {
          
      $out 'Start > ';
          foreach (
      $crumbs explode('/'$url) as $i => $crumb) {
              if (
      array_key_exists($crumb$replace)) {
                  
      $crumb $replace[$crumb];   
              }
              
      $out .= str_replace('-'' 'ucfirst($crumb)) . ($i count($crumbs) - ' > ' '');
          }
      }
      echo 
      $out
      "Software is like Sex, it's best if it's free." - Linus Torvalds

      Kommentar

      Lädt...
      X