Relativer Pfad zu Bildern

  • Ich habe ein Modul erstellt in dem ich ein Editor-Feld in der Config der Installations-XML-Datei nutze.


    Code
    1. <field
    2. type="editor"
    3. name="myeditor"
    4. default=""
    5. buttons="true"
    6. hide="pagebreak,readmore"
    7. label="MOD_TEST"
    8. description="MOD_TEST_DESC"
    9. filter="safehtml"
    10. />


    Wenn über diesen Editor ein Bild eingefügt wird, ist der Pfad im Frontend in Untermenüpunkten nicht korrekt.


    Das heißt, der Pfad ist beide Male gleich und richtig. Das Bild wird aber im Untermenü nicht angezeigt.


    Ich habe nun herausgefunden, dass ich einen Schrägstrich vor der URL einfügen muss, damit diese vom Stammverzeichnis aus geladen wird. Also zum Beispiel: /joomla-cms/images/joomla_black.png


    Das ist aber unglücklich, weil viele Editoren diesen Schrägstrich einfach löschen.


    Übersehe ich etwas? Hat von euch jemand hierfür eine gute Lösung gefunden?




    Ich habe diese Frage hier gestellt.

  • Wenn der Schrägstrich und ggf. weitere Ordnerstruktur, z.B. bei XAMPP ja nötig, beim Rendern der Seitenausgabe nicht automatisch gesetzt wird, liegt das normalerweise daran, dass das Joomla-SEF-System-Plugin nicht aktiviert ist. Das macht das nämlich für src, href, srcset-Pfade.


    Wenn die Ausgabe, sieht man leider nicht im Bild, z.B. nachträglich durch JS generiert wird, also am SEF-Plugin vorbei, musst dich selber darum kümmern, dass das JUri::root(...) davor gesetzt wird, entweder beim Speichern (schlecht) oder vor der Ausgabe.


    Für JS definiere ich irgendwo früh im Ablauf der Seite so was in der Art:

    PHP
    1. <script>
    2. JURIROOT = "<?php echo Uri::root(true)?>"; //No var! "super-global"
    3. JURIROOT2 = "<?php echo Uri::root()?>"; //No var! "super-global"
    4. </script>

    Das geht sicherlich eleganter!!!! Ich bin kein JS-Experte.

    Und hab dann

    Code
    1. JURIROOT

    in allen späteren JS BEI DER AUSGABE verfügbar. Geht ja mittlerweile auch über die "joomla-script-options" $document->addScriptOptions(...) JS-Variablen früh zu definieren und verfügbar zu machen.


    Soweit ich mich erinnere gibt es aber mindestens im JCE-Editor eine Einstellung "Relative URLs", die ich aber nicht für brauchbar halte, weil dann die Domain vorne angehängt wird, was bei einem Umzug der Seite No-Go ist. Das selbe gilt übrigens für das Setzen eines Schrägstriches. Macht die Pfade dann z.B. auf XAMPP "unbrauchbar", weil der Unterordnerteil fehlt.

  • Lieber Re:Later Vielen Dank für deine Antwort.


    Am Joomla-SEF-System-Plugin liegt es in meinem Fall nicht. Ich erzeuge die Ausgabe nachträglich per JavaScript.


    Ich hatte auch schon daran gedacht JUri::root() einzufügen. Da der Text aber vom Benutzer selbst im Editor eingegeben wird, bin ich mir unsicher was ich genau ersetzen kann/sollte.


    Ich versuche es einmal mit


    MEINE_DITORTEXT.replace(/<img src="images/g, '<img src="' + uriroot + 'images')


    Und, du hast recht. Der Schrägstrich ist auch keine gute Lösung. Das Testen in einem Unterverzeichnis oder lokal mit XAMPP ist nicht mehr ohne Nacharbeit möglich.