JavaScript- und CSS-Dateien im Modul-Ordner

Hallo.
Kann mir jemand von Euch sage, ob es möglich ist, eigene JS- und CSS-Dateien in ein Modul zu packen und falls ja, wie ich die speichern muss (welcher Pfad) und wie ich die dann aus den Templates verlinken muss?

a: ja kannst du
b: das ist total egal
c: den Pfad, wo du die Datei gespeichert hast (aber absolut ist besser als relativ)

Das haut bei mir nicht hin.

CSS-Datei liegt in doc_root/modules/mymod/public/css/mycss.css

Eingebunden wird es so:


[{oxstyle include="/modules/mymod/public/css/mycss.css"}]

Wenn ich den Pfad direkt an die lokale Domain anhänge, dann wird die Datei gefunden. Ich bekomme aber den Fehler:


{oxstyle} resource not found ...

Achso, Brett vorm Kopf: Wozu oxstyle? Ich kann das CSS ja direkt einbinden. Liegt ja auch alles im doc_root.

versuch mal mit einer absoluten URL

…die kenne ich ja nicht. Ich kenne die von meinem Dev-Server und die vom Staging-Server und die vom Live-Server, aber doch nicht die von den anderen Entwicklern. Ich kann meinem Kunden auch nicht sagen, dass jetzt alle Entwickler an dem Projekt sich einen VH sowieso einrichten sollen.

Ich bastele gerade eine eigene Smarty-Funktion, die wie oxscript funkt, aber für Module. Da ich in dem Modul ohnehin Smarty erweitern muss, ist das kein Problem.

Das mit der eigenen Smarty-Funktion funktioniert!

Gibt’s noch eine andere Lösung als ein eigenes smarty-Plugin zu programmieren? Denn dieses müsste ja ausserhalb meiner Modulstruktur ins plugin-Dir.

Die Idee, dass wir Module schreiben und unsere Dateien ausschliesslich im betr. Ordner des Moduls speichern und nicht mehr über die ganze Oxid-Dateistruktur verstreuen müssen, ist doch zu schön.

Wenn mein Modul nun eine.js-File einbinden will, will ich das doch mit [{oxscript … }] tun können, weil damit alle .js Files schön am Ende der Frontend-Seite aufgelistet werden, ich will auch den Parameter “priority=…” benutzen, damit meine JS zB nach jquery geladen wird … jedoch: [{oxscript}] sucht nur im Resource-Verzeichnis des geladenen Themes …

Lösbar wäre das Problem, wenn das oxscript-Plugin etwa um einen Parameter “modulename” oder so erweitert werden würde. Ich könnte die ID meines Moduls übergeben und den Pfad zu meiner Modul-JS relativ zum Modul-Root.

Dasselbe müsste man auch für CSS-Files in Module machen.

Mein Stand: V 4.7/5.0, azure

Gruß

finnegan

Ich weiß nicht - ich hab den OXID-Core nie angefasst. Ist also kein Problem, das als Modul zu programmieren. Ich hatte eh ein Event-Modul, das an verschiedenen Stellen im System events feuert und in meinen andren Modulen kann ich Observer für diese Events definieren. Ein solcher Observer überwacht ein Event, das gefeuert wird, sobald Smarty geladen wird und übergibt dann die Smarty-Metode als Closure oder so. Weiß grad nicht mehr genau. Jedenfalls liegt die Funktion natürlich im Modul-Verzeichnis.

Lösbar wäre das Problem, wenn man den Wiki Artikel über das Module Handlingein mal aufmerksam lesen oder die gewünschte Funktionsweise bei fremden Modulen abschauen würde.

@toxic: interessante Anregungen, für ein bisschen js oder css zu viel, aber sehr schön, über events smarty-Funktionen hinzuzufügen!

@vanilla: Das hättest du ja auch gleich sagen können! :slight_smile:

Mir war nicht klar, dass man [{oxscript}] auch einen kompletten URL übergeben kann - aber tatsächlich: es funktioniert!

Dank euch!