Modul mit eigenem Form Field per manifest installieren

  • Hallo liebe Community,

    kann mir jemand weiterhelfen?
    Ich programmiere gerade mal wieder ein Modul und benötige in der Backend-Modulkonfiguration einen eigenen Formularfeldtyp. Ich habe als Dublikat aus note.php dieses Script

    /libraries/joomla/form/fields/javascriptexec.php erzeugt und nach meinen Wünschen angepasst. Funktioniert soweit hervorragende (Lädt ein Javascript wie im Manifest-XML-Script als Feldinhalt vorkonfiguriert und führt dieses beim Aufruf des Moduls im Backend aus.).

    Nun will ich ein Installations-ZIP für dieses Modul bauen und o.g. Form-Field-Script muss in o.g. library-Verzeichnis installiert werden, damit der Nutzer dieses nicht extra von Hand kopieren muß. Vermutlich bekommt man das mit einem Installscript hin, aber ich hatte gehofft, es geht evtl. mit einem Eintrag in der Modul-Manifest.XML:

    Code
    <files folder="libraries-joomla-form-fields">
    <folder>libraries/joomla/form/fields</folder>
    <folder>javascriptexec.php</folder>
    </files>

    Aber das funzt nicht. Mache ich da was falsch, oder ist das so schlicht für'n modul nicht mgl?


    Alternativ muss ich das Form-Field-Script nicht in o.g. Library-Verzeichnis haben. Lt. J!Dokumentation kann man für Komponenten ja auch Form-Fields ablegen unter z.B. components/com_mycomponent/models/fields/hier_mein_form_field.php

    Wenn das so auch für Module gehen würde (Leider bleibt die J!Dokumation hier unklar), wäre die Installation per manifest.xml super einfach. Wenn ich aber für mein Modul unter modules/mod_meinmodule/models/fields/ so ein Form-Field-Script ablege, wird es nicht erkannt - scheint also nicht zu funktionen.hmm Oder mache ich hier was falsch?


    Irgend ne Lösung muss es doch geben?!?

  • Deine eigenen Felder gehören jednefalls mal nicht in den Ordner, den du dir da ausgesucht hast. Das ist Joomla-Core-Bereich.


    Wenn's dir tatsächlich nur um dein einzelnes Modul mod_example geht:

    - Leg dein eigenes Feld z.B. in den Ordner

    /modules/mod_example/fields/ oder /modules/mod_example/myfields/ oder /modules/mod_example/dingsfallera/ (du bist also mehr oder weniger frei. Bei mir ist es halt immer ein Ordner, der nur meine eigenen Felder enthält. Wer's unübersichtlich mag, könnte sogar mehrere Ordner verwenden.)


    Unter'm Strich (nahezu) komplett egal welcher Ordner. Kannst die Felder auch in /media/mod_example/fields/ ablegen oder ...


    Und dann trägst in deiner Manifest-XML (nahezu irgendwo) ein (halt je nach Ordner)

    addfieldpath="modules/mod_example/dingsfallera"

    z.B.

    <fields name="params" addfieldpath="modules/mod_example/dingsfallera">


    oder

    <fieldset name="basic" addfieldpath="modules/mod_example/dingsfallera">


    oder vielleicht auch

    <field name="irgendeinfeld" addfieldpath="modules/mod_example/dingsfallera" ... usw. usf.>


    Hauptsache so was steht irgendwo in der Manifest. Und wie gesagt dürfen das auch mehrere so Einträge sein, mit unterschiedlichen Ordnern.


    Natürlich kannst auch eine eigene Library installieren im /libraries/-Ordner, wennst z.B. felder für mehrere Erweiterungen vorhalten willst. Oder usw.


    Vielleicht ergänzend noch nett, wenn du wie ich ständig Felder bastelst und wie ich irgendwann keine Ahnung mehr hast, ob du evtl. javascriptexec.php schon mal verwendet hast, aber ganz anders als du jetzt willst:

    https://www.ghsvs.de/programmi…ung-konflikte-namespacing

    Ist zwar für Plugins, macht aber keinen Unterschied (noch dazu, weil man auch Plugin-Felder "fremdnutzen" kann)

  • Vielen lieben Dank! Das mit dem addfieldpath ist genial!


    Ich weiß zwar, dass das core-Bereich gewesen wäre, aber ich nahm an, dass es "legitim" wäre, weil kein core-Script überschrieben worden wäre, sondern nur ein eigenes erstellt.


    Aber Deine Lsg. ist viel schicker! Und auch die Sache mit dem NameSpace ist elegant und passend. Soweit war ich auch noch nicht im Verständnis, aber der Beitrag erklärt das "Autodidakten-sicher".


    Danke, auch für die prompte Reaktion!

  • weil kein core-Script überschrieben worden wäre, sondern nur ein eigenes erstellt.

    Ja, ich hatte so was mit ähnlicher Denke schon seit brutal vielen Jahren problemlos laufen und nie geändert. Jetzt überholen mich da aber die Entwicklungen in Joomla 3, wo ja in Vorbereitung auf Joomla 4 auch der eine oder andere Ordner verschoben oder umbenannt wird und, schlimmer, der alte bei jedem Joomla-Update wieder gelöscht wird oder probiert wird (erfolglos) zu löschen.