Verzeichnispfad im Site-Template

  • Hallöchen...
    ich habe ein kleines Problemchen mit einer Pfadangabe in einem selbstgebauten Site-Template.

    Kurz die Situation. Ich habe ein Verzeichnis was ich auslesen möchte und die ausgelesenen Dateien sollen tabellarisch dargestellt werden. Das anzeigen selbst klappt auch einwandfrei!

    Ordner-Struktur
    wp-content
    - uploads
    -- media
    --- mp3
    --- fun

    Und es geht um die Dateien im Fun- und MP3-Ordner

    Dazu muss ich das Verzeichnis angeben, das geschieht so:

    PHP
    $verzeichnis = './wp-content/uploads/media/mp3/';

    Mit der URL werden die Dateien wunderbar aufgelistet und man kann die nötigen Infos sehen und auf die gewünschte Datei klicken.

    Und nun kommt mein Problem.
    Will ich nun eine Datei runterladen, so existiert diese nicht, weil der Pfad zur Datei falsch ist!

    Plötzlich lautet der Pfad zur Datei:

    PHP
    http://www.skylinerz.de/cms/media/wp-content/uploads/media/mp3/dateiname.mp3

    Der korrekte Pfad zu dieser Datei wäre aber:

    PHP
    http://www.skylinerz.de/cms/wp-content/uploads/media/mp3/dateiname.mp3

    Da die Dateien auf der "Media"-Seite dargestellt werden, setzt er dieses "media" einfach mit in die URL - somit ist der Pfad ungültig!

    Versuche ich nun die vollständige URL in $verzeichnis zu schreiben, also so:

    PHP
    $verzeichnis = 'http://www.skylinerz.de/cms/wp-content/uploads/media/mp3/';

    dann findet er wiederum die Dateien nicht.

    Die Dateien in den Ordnern sind auch nicht über Wordpress hochgeladen worden, sondern direkt via FTP.

    Ich hoffe mir kann da jemand helfen.
    Ich habe schon öfter versucht in solch Site-Templates vollständige Pfade anzugeben, aber die wurden alle ignoriert oder nicht gefunden.
    Wieso das?

    Ich danke schonmal

    PS.: Hier der komplette Code zum Auslesen der Dateien - so wie er jetzt ist und die Dateien auch darstellt, aber man die Dateien nicht runterladen kann, weil der Dateipfad falsch ist.

    UNd hier die Site, damit das Ganze noch veranschaulicht werden kann:
    Skylinerz » Media

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hier haben wir das Problem, dass dein Script komplett im Basisverzeichnis deines Blogs abläuft (also dem Verzeichnis, in dem die [FONT=Courier New]index.php[/FONT] liegt; hier: [FONT=Courier New]skylinerz.de/cms/[/FONT]), der Browser aber durch deine Permalinkstruktur glaubt, er würde sich eine Ebene tiefer befinden (hier [FONT=Courier New]skylinerz.de/cms/media/[/FONT]). Das Beste aber hieran: beide haben Recht ;-)

    Die Lösung ist recht einfach: Du musst das auszulesende Verzeichnis und das Linkziel getrennt behandeln. Um das auch noch stabil gegenüber Permalinkänderungen ist schlage ich folgedes vor:

    PHP
    <?php
      $verzeichnis = ABSPATH .'wp-content/uploads/media/mp3/';
      $href = get_bloginfo('url') .'/wp-content/uploads/media/mp3/';
    ?>

    und bei der Ausgabe in der Schleife

    PHP
    <?php
    echo '<td class="media-list-name"><a href="' .$href.$datei->getFilename(). '" target="_blank">' .$datei->getFilename(). '</a></td>';
    ?>

    Das dürfte (zumindest im Ansatz) reichen.

    LG
    Dominik


  • Ich hab zumindest eine Lösung gefunden.
    Ich habe ein wenig die Ausgabe bearbeitet und den Link zur Datei einen Ordner zurück gehen lassen (../).

    PHP
    echo '<td class="media-list-name"><a href="../' .$verzeichnis.$datei->getFilename(). '">' .$datei->getFilename(). '</a></td>';

    Aber das kann doch nicht die Lösung sein.
    Wenn ich das jetzt beispielsweise auf eine Seite der 2. Ebene anwenden würde, dann würde das wieder nicht funktionieren, da ich dann 2 Ebenen zurückgehen müsste (../../). Würde ich das Ganze jetzt in der Sidebar verwenden, dann würde das ja nie funktionieren, da ich immer in einer anderen Ebene bin und mal eine Ebene zurückspringen müsste, und mal 2 oder 3 und so weiter.

    Gibts denn da eine Lösung die allgemeingültig ist?

  • Hier haben wir das Problem, dass dein Script komplett im Basisverzeichnis deines Blogs abläuft (also dem Verzeichnis, in dem die [FONT=Courier New]index.php[/FONT] liegt; hier: [FONT=Courier New]skylinerz.de/cms/[/FONT]), der Browser aber durch deine Permalinkstruktur glaubt, er würde sich eine Ebene tiefer befinden (hier [FONT=Courier New]skylinerz.de/cms/media/[/FONT]). Das Beste aber hieran: beide haben Recht ;-)

    Die Lösung ist recht einfach: Du musst das auszulesende Verzeichnis und das Linkziel getrennt behandeln. Um das auch noch stabil gegenüber Permalinkänderungen ist schlage ich folgedes vor:

    PHP
    <?php
      $verzeichnis = ABSPATH .'wp-content/uploads/media/mp3/';
      $href = get_bloginfo('url') .'/wp-content/uploads/media/mp3/';
    ?>

    und bei der Ausgabe in der Schleife

    PHP
    <?php
    echo '<td class="media-list-name"><a href="' .$href.$datei->getFilename(). '" target="_blank">' .$datei->getFilename(). '</a></td>';
    ?>

    Das dürfte (zumindest im Ansatz) reichen.

    LG
    Dominik

    Das werde ich gleich mal ausprobieren! Danke

  • wunderbar... das funktioniert.
    das werd ich mir gut aufbehalten... hatte schön öfter dieses problem. nun kann ich das gleich mal bei meinen anderen sachen ausprobieren.

    viiielen dank!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!