WebsiteBaker Support (2.13.x) > Hilfe & Support (deutsch)

Verzeichnisstruktur abbilden

<< < (3/4) > >>

dbs:
Wollte gerade schreiben "bei mir gehts auch nicht".
Lieber nochmal in den Quelltext geschaut, wird alles aufgelistet, ist nur versteckt wegen .collapse (Bootstrap)  ;D
Das gilt für [[dirlist]]

Gebe ich einen Pfad an wirds nicht gefunden.
[[dirlist?path=PDFs]]

--- Code: ---[9] DirectoryIterator::__construct(/var/www/.../mediaPDFs/): Failed to open directory: No such file or directory
--- End code ---

sternchen8875:
mal so probiert?

[[dirlist?path=/mediaPDFs]]

dbs:
du meinst [[dirlist?path=/PDFs]]
Inzwischen ja, ohne Erfolg.

Hier im Anhang mal das Modul Dirlist (notdürftig repariert).
Lies sich installieren, einstellen und nutzen.

sternchen8875:
ich versteh es nicht... funktioniert bei mir auf drei Servern mit unterschiedlichen PHP-Versionen, funktioniert bei Harald

durch die Testerei hat sich rausgestellt, das der Slash am Beginn des Ordners im Dropletaufruf zwingend ist, läßt sich aber auch noch abfangen.

Der Code im Droplet ist einfach zu verstehen, hier mal als Foto wegen der Zeilennummern



Zeile 1 fängt den Pfad ab, falls der mit dem Droplet nicht übergeben wird
Zeile 2 definiert das leere Array, das ab Zeile 11 mit den Inhalten des Ordners gefüllt wird
Zeile 5 hängt einen Slash an den Pfad
Zeile 6 definiert den Pfad, der dann in Zeile 9 verwendet wird
Zeile 7 wird für die URL der jeweiligen Datei benötigt, damit diese anklickbar ist
Zeile 9 ist eine PHP-Funktion, die ab PHP 5 läuft und in WB an diversen Stellen verwendet wird, z.b. im Droplet-Modul zum Auslesen der Dateien eines ZIP, in der Foldergallery zum Erstellen der Ordnerliste zur Auswahl der jeweiligen Gallery oder auch im News-Modul bei Modul-Upgrade, wenn die Dateien im posts-Ordner neu geschrieben werden.
Zeile 10 ist Beginn der Schleife zum Eintragen der File-Infos

Der Rest ist hier nicht von Belang, da das Modul auf Grund des "falschen" Pfades in Zeile 9 ja nicht weiterkommt.

Testcode für eine einfache Code-Section, Zeile 1 definiert den Pfad /media/path1/path2/PDFs, der Droplet-Aufruf wäre dann, dem Pfad entsprechend: [[dirlist?path=/path1/path2/PDFs]]
Zur Kontrolle wird oberhalb der Ausgabe der definierte Pfad angezeigt, der natürlich so existieren muß


--- Code: ---$path = "/path1/path2/PDFs";
if (!isset($path)){ $path='';}
$file_array = array();

// add trailing slash if missing
if (substr($path, -1) != "/") $path .= "/";
$sDirectory = WB_PATH.MEDIA_DIRECTORY.$path;
$sFileUrl = WB_URL.MEDIA_DIRECTORY.$path;
echo "Dir : ".$sDirectory."<br>";
// open directory for reading
$d = new DirectoryIterator($sDirectory) or die("getFileList: Failed opening directory $path for reading");
foreach ($d as $fileinfo) {
// skip hidden files
if ($fileinfo->isDot()) continue;
// human readable filesizes
$precision = 2;
$units = array('B', 'KB', 'MB', 'GB', 'TB');
    $bytes = $fileinfo->getSize();
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
    $pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);

if (!$fileinfo->isDir()) {
            $file_array[] = array(
                    'name' => "{$fileinfo}",
                    'type' => ($fileinfo->getType() == "dir") ? "dir" : mime_content_type($fileinfo->getRealPath()),
                    'size' => round($bytes, $precision) . ' ' . $units[$pow],
                    'lastmod' => $fileinfo->getMTime()
            );
            }
}
print_r($file_array);
--- End code ---



dbs:
Alles gut, es funktioniert. Mein Fehler, in /PDFs waren nur 2 weitere Ordner.
Dein Code hier, das Droplet und das Modul zeigen gleiches gewünschtes Ergebnis.
(Nur importieren konnte ich das Droplet nicht, hat er einfach nicht übernommen.)

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version