• Welcome to WebsiteBaker Community Forum. Please log in or sign up.
Welcome, Guest
News
Support WebsiteBaker
Your donations will help to:
PayPal
  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!
You can donate by clicking on the button below.

Verzeichnisstruktur abbilden

Started by red, March 21, 2023, 05:18:43 PM  ( Read 21,269 times )

red

Ich möchte auf einer Unterseite meiner website-baker-Seite die Verzeichnisstruktur eines Ordners vom Server meiner website-baker-Installation mit den Dateien als anklickbaren links und anwählbaren Unterordnern veröffentlichen und schaffe es einfach nicht.  :cry: Gibt es dafür vielleicht ein fertiges Modul?

Vielen Dank!

    crnogorac081

    Hello,
      You mean like a html sitemap ?
    Where would you like to display this set of links ?
      Web developer

      red

      I would like to display the links to folders and files on a website baker page. I guess wysiwyg doesn´t help? So a module could or I could use code?

        crnogorac081

        Web developer

        hgs

        Als Verein können wir vor dieser Seite nur warnen.
        In unserem addon-Bereich gibt es das Modul in der aktuellen Version
        https://addon.websitebaker.org/pages/en/browse-add-ons.php?id=0EB03F25
          LG Harald

          "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

          "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

          dbs

          Es gab mal ein Modul Dirlist, das hätte dir sowas aufgelistet. Ist aber über 10 Jahre alt.

            Gast

            Hatte in den Sicherungen noch ein Droplet aus 2013. Angezeigt werden alle Dateien eines Ordners unterhalb vom Media-Verzeichnis.

            Im oberen Teil, der die Dateien ausliest, mussten ein paar Pfade geändert werden, da es sich über die Jahre auch in WB geändert hat.

            Am unteren Teil mit der Ausgabe in Tabellenform habe ich bis auf den Dateilink nichts geändert, aber ich denke, das läßt sich mit ein paar HTML-Kenntnissen an die persönlichen Bedürfnisse anpassen.

            Translated with Deepl:
            Still had a droplet from 2013 in the backups. All files of a folder below the media directory are displayed.

            In the upper part, which reads the files, a few paths had to be changed, because it has also changed over the years in WB.

            In the lower part with the output in table form I have changed nothing except for the file link, but I think that can be adapted with some HTML knowledge to the personal needs.


            Quote from: hgs on March 21, 2023, 08:11:50 PM
            Als Verein können wir vor dieser Seite nur warnen.

            ein alter Vorschlag aus dem Forum: vielleicht sollte man vieles davon aktualisieren und selbst anbieten

              hgs

              Quote from: sternchen8875 on March 22, 2023, 02:30:09 AM

              ein alter Vorschlag aus dem Forum: vielleicht sollte man vieles davon aktualisieren und selbst anbieten

              Sehr gerne, alles was dem Codingstandard entspricht und von uns freigegeben wird, landet auch im Repro, versprochen.
              Am liebsten dann auch in TWIG :)
                LG Harald

                "Fange nie an, aufzuhören - höre nie auf, anzufangen." Marcus Tullius Cicero (106-43 v.Chr.)

                "Never begin to stop - never stop beginning." Marcus Tullius Cicero (106-43 BC)

                red

                Quote from: sternchen8875 on March 22, 2023, 02:30:09 AM
                Hatte in den Sicherungen noch ein Droplet aus 2013. Angezeigt werden alle Dateien eines Ordners unterhalb vom Media-Verzeichnis.

                Im oberen Teil, der die Dateien ausliest, mussten ein paar Pfade geändert werden, da es sich über die Jahre auch in WB geändert hat.


                Danke! Das sieht gut aus. Aber ich habe es noch nicht geschafft.

                1 $sDirectory = WB_PATH.MEDIA_DIRECTORY.$path;
                2 $sFileUrl = WB_URL.MEDIA_DIRECTORY.$path;

                Wie genau gebe ich bei 1 und 2 die entsprechenden Daten an?

                  Gast

                  Warum lesen alle Leute Dinge, die da nicht stehen? Nicht geschrieben wurden?

                  Es sind keinerlei Anpassungen notwendig, es sei denn, man mag keine Table (der untere Teil des Droplets)
                  Bei Aufruf des Droplets in einer Wysiwyg- oder Code bzw Code²-Section ist nur die Angabe des gewünschten Verzeichnisses nötig, das sich im media-Ordner befinden muß. Wird kein Verzeichnis angegeben, z.b. so [[DirList]] erscheinen die Dateien des Media-Verzeichnisses, aber keine anderen Verzeichnisse

                    dbs

                    #10
                    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]]
                    [9] DirectoryIterator::__construct(/var/www/.../mediaPDFs/): Failed to open directory: No such file or directory

                      Gast

                      mal so probiert?

                      [[dirlist?path=/mediaPDFs]]

                        dbs

                        #12
                        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.

                          Gast

                          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ß

                          $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);





                            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.)

                              red

                              Danke für eure Hilfe. (Y)
                              Habe durch die Anregungen hier jetzt einen komfortablen Code, der mich von einem gewählten Medien-Verzeichnis ausgehend alle Unterverzeichnisse betreten lässt und den Inhalt dieser als links zur Verfügung stellt.
                              Das heißt, ich kann per drag and drop ein Verzeichnis kopieren und alle links werden automatisch generiert, das ist eine große Arbeitserleichterung.
                              Also vielen Dank.

                                \n\n