Das Grundprinzip ist recht simple. In der Liste stehen alle Dateien nach Datum sortiert, also die neuste Datei oben. Nun wird geschaut, was fürn Änderungsjahr die Datei hat und eine Gruppe dazu geöffnet (indem das Jahr ausgegeben wird). Nun wird die nächste Datei genommen. Hat sie das gleiche Jahr, dann einfach ausgeben, wenn nicht, dann vorher eine neue Gruppe öffnen (da nun ja keine Datei mehr der ersten Gruppe kommt). Ich habe den Code nochmal was kommentiert:
Code:
<?
// Dateien nach Datum sortiert als Liste auslesen
$dir = './';
$files = ListFiles($dir, 'time');
// Aktuelle Gruppe bekommt das Jahr 0 (bedeutet, dass es noch keine Gruppe
// vorher gibt - es wäre auch ein anderer Angangswert möglich, hauptsache ist
// das der Wert nicht das Änderungsjahr einer Datei ist und somit eindeutig
// als Anfangswert erkennbar bleibt [siehe spätere if Abfrage])
$group_year = 0;
// Alle Dateinamen der Liste einzelnd durchgehen und in $file schreiben
foreach ($files as $file) {
// Dem Dateinamen direkt den Ordner voransetzen, damit wir eine komplette
// Pfadangabe haben (wird bspw. für filemtime() gebraucht)
$file = $dir . $file;
// Das Änderungsjahr der Datei ermitteln
$file_year = date('Y', filemtime($file));
// Hat die Datei ein anderes Änderungsjahr als das der aktuellen Gruppe
// ($group_year), dann muss eine neue Gruppe angelegt werden
if ($file_year <> $group_year) {
// Sollte es sich nicht um die erste Gruppe (daher die 0) handeln, es
// also schon eine andere Gruppe davor geben, dann die Zeilenumbrüche
// ausgeben
if ($group_year > 0) {
echo '
';
}
// Die aktuelle Gruppe bekommt nun das Änderungsjahr der Datei
$group_year = $file_year;
// Jahr wird ausgegeben
echo $group_year . '
';
}
// Dateiname, -datum, etc. ausgeben
echo GetTitleFromHTML($file) . '
';
}
?>