Navigation Vor/Zurück

Erstellt am 08.03.2022 Lesedauer ≤ 1 Min.

Mit diesem Script werden Links zum (definierten) Vorgänger und Nachfolger der aktuellen Datei erzeugt.

Der Meta-Eintrags „Rang“ (s. zListe.php) legt die Position der aktuellen Datei in der Reihenfolge der Dateien im aktuellen Verzeichnis fest. Der Vorgänger und Nachfolger wird als verlinkter Seitentitel zurück gegeben. Gleichrangige Dateien werden alphabetisch sortiert.

Das Skript

Stand: 21.10.2022

<?php
function blaettern($Pfad,$rang,$stil) {
  $items = glob($_SERVER["DOCUMENT_ROOT"] . $Pfad . '*{php,html}', GLOB_BRACE);
  unset($Datei);
  $wo = pathinfo($_SERVER['REQUEST_URI'], PATHINFO_FILENAME);
  $comp = '-1';
  if (count($items)){
    $i = 0;
    foreach ($items as $item){
      if ($item == "index.php" or $item == "." or is_dir($item)){   }
      else {
        $Datei[$i]['pfad'] = $Pfad . pathinfo($item, PATHINFO_FILENAME);
        $tags = get_meta_tags($item);
        if (!isset($tags['title'])) { 
          Return '';
          Exit;
        }
        $Datei[$i]['titel'] = $tags['title'];
        $Datei[$i]['rang'] = (isset ($tags['rang']) ? $tags['rang'] : 999);
        $Datei[$i]['id'] = $i;
        if (pathinfo($Datei[$i]['pfad'], PATHINFO_FILENAME)  == $wo) {
          $comp = $i;
        }
        $i++;
      } 
    } // foreach
    array_multisort(array_column($Datei, 'rang'),SORT_NATURAL,array_column($Datei, 'titel'),SORT_NATURAL |  SORT_FLAG_CASE ,$Datei);
    $i = 0;
    foreach ($Datei As $Inhalt){
      if ($Datei[$i]['rang']<0){ continue; }
 
      $compr = str_pad(intval($Datei[$i]['rang']), 5 , "0" , STR_PAD_LEFT) . $Datei[$i]['titel'];
      if ($compr < $rang) {
        $vorher = $i;
      }
      if ($compr > $rang) {
        $nachher = $i;
        Break;
      }
      $i++;
    }
    $Ergebnis = '<div class="' . $stil . '">';
    $Ergebnis .=  (isset ($vorher) ? '<a href="'.$Datei[$vorher]['pfad'] .'?m" title="Voriger Artikel">'.$Datei[$vorher]['titel'].'</a>' : 'Kapitelanfang');
    $Ergebnis .=  ' « &#x25C9; » ';
    $Ergebnis .=  (isset ($nachher) ? '<a href="'.$Datei[$nachher]['pfad'] .'?m" title="Nächster Artikel">'.$Datei[$nachher]['titel'].'</a>' : 'Kapitelende');
    $Ergebnis .= '</DIV>';
  }
  else {
    $Ergebnis = '';
  }
  return $Ergebnis;  
}
?>