Chronologische Navigation
Mit diesem Script werden Links zum (chronologischen) Vorgänger und Nachfolger der aktuellen Datei im aktuellen Ordner erzeugt (s. Seitenende).
Maßgeblich ist das Publikationsdatum der Datei. Ausgehend vom Speicherdatum wird nach dem Parameter „published“ und „modified“ gessucht und das in dieser Reihe zuletzt gefundene Datum verwendet.
- Querverweis
Das Skript
Stand: 27.12.2022
<?php // @ vor einer Funktion unterdrückt Fehlermeldungen // $matches[1] ?? null → gibt auf jeden Fall was zurück, auch wenn die Variable/der Schlüssel undefiniert ist function chrono($stil) { $talt = 'Älterer'; $takt = 'Aktueller'; $dalt = 'Das älteste Dokument'; $dakt = 'Das aktuellste Dokument'; $aktuell = $_SERVER["DOCUMENT_ROOT"].$_SERVER["REQUEST_URI"].'.php'; $aktuell = str_replace('.php.php','.php',$aktuell); preg_match("/<title>(.+)<\/title>/siU", @file_get_contents($aktuell), $matches); $titel = (Trim($matches[1] ?? null) ? Trim($matches[1] ?? null) : '') ; $cur = @get_meta_tags($aktuell); $curdat = @date("Y-m-d", @filemtime($aktuell)); $curdat = Isset($cur['published']) ? $cur['published'] : $curdat; $curdat = Isset($cur['modified']) ? $cur['modified'] : $curdat; $curdat .= @date (' H:i:s', @filemtime($aktuell)) . $titel; $items = glob('./*{php,html}', GLOB_BRACE); if (count($items)) { $i = 0; foreach ($items as $item){ if ($item == 'index' or $item == '.' or is_dir($item)){ } else { preg_match("/<title>(.+)<\/title>/siU", file_get_contents($item), $matches); if ($matches) { $Datei[$i]['titel'] = $matches[1]; $Datei[$i]['pfad'] = pathinfo($item, PATHINFO_DIRNAME) .'/'. pathinfo($item, PATHINFO_FILENAME); $Datei[$i]['comp'] = date ('Y-m-d', filemtime($item)); $tags = get_meta_tags($item); $Datei[$i]['comp'] = (Isset($tags['published'])) ? $tags['published'] : $Datei[$i]['comp']; $Datei[$i]['comp'] = (Isset($tags['modified'])) ? $tags['modified'] : $Datei[$i]['comp']; $Datei[$i]['comp'] .= date (' H:i:s', filemtime($item)) . $Datei[$i]['titel']; } $i++; } } // foreach array_multisort (array_column($Datei, 'comp'), SORT_ASC, $Datei); $i = 0; foreach ($Datei As $Inhalt){ if ($Datei[$i]['comp'] < $curdat) { $vorher = $i; } if ($Datei[$i]['comp'] > $curdat) { $nachher = $i; Break; } $i++; } $Ergebnis = '<div class="' . $stil . '"><span>'; $Ergebnis .= (isset ($vorher) ? '<a href="'.$Datei[$vorher]['pfad'] .'" title="'.$talt.'">'. ((strlen($Datei[$vorher]['titel'])>30) ? mb_substr($Datei[$vorher]['titel'],0,30).'…' : $Datei[$vorher]['titel']).'</a>' : $dalt); $Ergebnis .= '</span><span>←▼→</span><span>'; $Ergebnis .= (isset ($nachher) ? '<a href="'.$Datei[$nachher]['pfad'] .'" title="'.$takt.'">'.((strlen($Datei[$nachher]['titel'])>30) ? mb_substr($Datei[$nachher]['titel'],0,30).'…' : $Datei[$nachher]['titel']).'</a>' : $dakt); $Ergebnis .= '</span></DIV>'; } // count else { $Ergebnis = ''; } Return $Ergebnis; }