Hallo,
ich habe mich mal an eine kleine erste Extension gewagt, die optional HighSlide zur vergrößerten Anzeige von Bildern benutzt. Alles funktioniert soweit ganz gut und die Einbindung erfolgt als satisches Template. Nur ein Problem habe ich noch:
Ich muss den Pfad zu den Grafik-Resourcen von Highslide setzen (enthält Umrandungen, icons usw.).
Mit {path:EXT:ext_key/res/highslide/highslide.js} kann ich ja ohne weiteres den Pfad zu einer einzelnen Datei einfügen.
Nur leider funktioniert das nicht für existierende Verzeichnisse. Laut typo3 Doku bleibt der Pfad leer, falls die Datei nicht existiert.
Beispiel (vereinfacht)
2 = TEXT
2 {
insertData = 1
value (
script="{path:EXT:user_jl_highslide_integration/res/highslide/highslide.packed.js}"
graphicsDir = "{path:EXT:user_jl_highslide_integration/res/highslide}"
)
}
liefert in der Ausgabe:
script="typo3conf/ext/user_jl_highslide_integration/res/highslide/highslide.packed.js"
graphicsDir = ""
Wie man sieht wurde {path:...} zu einem existierendem Pfad mit der leeren Zeichenkette ersetzt.
Meiner Meinung nach wäre es logisch wenn {path:...} auch für existierende Verzeichnisse funktionieren würde und sich nicht auf Dateien beschränken würde.
I) Mache ich etwas falsch?
II) Wenn ich nicht mit {path:EXT:..} den Pfad zur Extension einfügen kann, wie dann? Gibt es eine Möglichkeit in TypoScript den Pfad einer Extension zu ermitteln?
PS: Ich weiß, dass über PHP die Ermittlung des Pfades kein Problem ist. Würde aber die Einbindung einer user Funktion für eine derart einfache Sache gerne sparen.
Bin für Anregungen dankbar.
Gruß Joachim
Hallo Joachim.
Wenn Dein Pfad eh fix ist, warum setzt Du ihn dann nicht gleich fix, d.h.
graphicsDir = typo3conf/ext/user_jl_highslide_integration/res/highslide
Ist zwar ganz theoretisch nicht so schön, weil ja theoretisch der typo3conf-Ordner auch anders heißen könnte (wenn ich mich nicht irre), aber wer den ändert, der sollte aus TS soweit können, dass er den pfad anpassen kann.
Julian.Hofmann schrieb
Wenn Dein Pfad eh fix ist, warum setzt Du ihn dann nicht gleich fix, d.h.
graphicsDir = typo3conf/ext/user_jl_highslide_integration/res/highslide
...
Danke für die schnelle Antwort. So mache ich es ja auch im Moment um es am Laufen zu halten. Leider ist dies nicht konform zur TYPO 3 Extension API.
TYPO 3 CORE API - 2.1 - System, Global and Local extensions:
..
The files for an extension are located in a folder named by the extension key. The location of this folder can be either inside typo3/sysext/, typo3/ext/ or typo3conf/ext/.
The extension must be programmed so that it does automatically detect where it is located and can work from all three locations.
..
Installiert man also die Extension beispielsweise global unter typo3/ext würde es momentan nicht laufen, da typo3conf/ext für die Grafik Resourcen hardcodiert ist.
Gruß Joachim
Ok, Punkt für Dich. 🙂
Wobei ich für den konkreten Fall bezweifel, dass die Konformität eingehalten werden muss. Denn eine user_-Extension wird wohl kaum zur System-Extension oder systemweit installiert.
Eine Möglichkeit wäre vielleicht noch, den Wert über PHP zu ermitteln udn bereitzustellen. Leider weiß ich nicht, was Dein TS-Schnipsel genau bewirken soll bzw. wozu er letztlich eingesetzt wird. Javascript lässt sich aber via API in den HEAD-Bereich der Seiten einbinden.
Hallo,
nach noch ein bisschen mehr Tüfftelei bin ich selbst auf eine Lösung gekommen. Also kann ich es vermeiden extra für die Pfadermittlung der Extension noch ein PHP Skript zu schreiben.
Ich verwende einfach den Pfad zur highslide.packed.js und nutze dann substring um den Dateinamen wieder zu entfernen.
das ganze sieht dann wie folgt aus:
cObject = TEXT
cObject {
value = {path:EXT:user_jl_highslide_integration/res/highslide/highslide.packed.js}
stdWrap.insertData = 1
substring = 0,-20
}
und liefert mir den Pfad zu "EXT:user_jl_highslide_integration/res/highslide". Den kann ich dann wiederum einfach um "/graphics/" ergänzen und schon habe ich den benötigten Pfad.
Nochmal danke für die Mithilfe.
Gruß Joachim