Dateiliste aus Pfad

Erstellt am 08.03.2022 Lesedauer ≤ 1 Min.

Dieses Skript erzeug aus einem übergebenen Pfad eine Liste der darin enthaltenen PHP- und HTML-Dateien. Die Einbettung erfolgt im Layout, abhängig von der Yaml-Variablen $menu.

Das Skript

Stand: 21.10.2022

<?php
// 2022-04-22  08:27:19
function Linkliste($Pfad,$Modus,$Stil) {
  ($Modus <>0) ? $Modus=1 : $Modus=0;  // Default 0 = Nur Titel
  $items = glob($_SERVER["DOCUMENT_ROOT"] . $Pfad . '*{php,html}', GLOB_BRACE);
  unset($Datei);  
  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 ($Modus==0) {
          $Datei[$i]['titel'] = (isset ($tags['menu']) ? $tags['menu'] : $tags['title']);
        }
        else {
          $Datei[$i]['titel'] = $tags['title'];
        }
        $Datei[$i]['rang'] = (isset ($tags['rang']) ? $tags['rang'] : 999);        
        if (isset ($tags['summary']) && ($tags['summary']>'')) {
          $Datei[$i]['text'] = $tags['summary'];
        }  
        else 
          if (isset ($tags['description']) && ($tags['description']>'')) {
            $Datei[$i]['text'] = $tags['description'];
          }
          else {
            $Datei[$i]['text'] = 'Keine weiteren Angaben.';
          }  
        $i++;  
      } 
    } // foreach
    array_multisort(array_column($Datei, 'rang'),SORT_NATURAL,array_column($Datei, 'titel'),SORT_NATURAL |  SORT_FLAG_CASE ,$Datei);
    $i=0;
        $wo = pathinfo($_SERVER['REQUEST_URI'], PATHINFO_FILENAME);
    $Ergebnis = '<div class="' . $Stil . '">'. PHP_EOL;
    foreach ($Datei As $Inhalt){
      if ($Datei[$i]['rang']>=0){
        (pathinfo($Datei[$i]['pfad'], PATHINFO_FILENAME)  == $wo) ? $active = ' class="active"' : $active = '';
        $Ergebnis .= (($Modus) ? '<div><h3>' : '<div>');
        $Ergebnis .= '<a'.$active.' href="'. $Datei[$i]['pfad'] . '">' . $Datei[$i]['titel']. '</a>';
        $Ergebnis .= (($Modus) ? '</h3>' : '</div>');
        $Ergebnis .= (($Modus) ? '<p>'.$Datei[$i]['text'].'</p></div>' : '');
        $Ergebnis .= PHP_EOL;
      }
      $i++;
    }
    $Ergebnis .= '</div>'. PHP_EOL;
  } // count items 
  else {
    $Ergebnis = '';
  }  
  return $Ergebnis;  
}
?>