Wie JS aus anderem Module in library einfügen?
Eingetragen von rhodes (631)
am 02.07.2019 - 10:28 Uhr in
am 02.07.2019 - 10:28 Uhr in
Hallo zusammen,
in einer Drupal 8 Installation gibt es ein custom Module mymodule mit einer library.
In der libraries yml Datei sind einige JS Dateien eingebunden. Unter anderem soll ein JS aus einem anderen Module eingebunden werden. So habe ich das jetzt umgesetzt
js:
libraries/mymoduleh/js/mein.js: {}
/modules/custom/mymodule2/assets/scripts/myscript.js: {}
Das funktioniert zwar, aber so ganz Drupal-konform ist es wohl nicht, da der Pfad hart kodiert ist. Wird das Module mymodule2 verschoben funktioniert es nicht mehr.
Hat jemand einen Tipp wie ich das myscript.js mit Modulepfae einbinden kann?
Danke & Grüße
rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
Grundsätzlich über die
am 21.08.2019 - 16:35 Uhr
Grundsätzlich über die themename.libraries.yml. dort kannst du ganz gezielt definieren, ob ein js global oder nur auf bestimmten Seiten geladen werden soll. die Pfadangabe spielt dabei im Grunde keine rolle. Du musst die gewünschte JS-Datei also auch nicht duplizieren und gesondert ablegen, sondern nur auf die entsprechende Datei verweisen. Wenn du das Modul jedoch aktiviert hat und dort sowieso shon auf die JS verweisen wird, dann ist die Datei doch ohnehin schon geladen. Daher verstehe ich jetzt nicht so ganz, wo das Problem liegt. Brauchst du die JS Datei für ein eigenen Modul oder ein selbst erstelltes Theme?
https://drupal-tv.de
Drupal sehen und lernen
Wenn die JS-Datei aus dem
am 26.08.2019 - 05:54 Uhr
Wenn die JS-Datei aus dem anderen Modul auch in einer Library eingebunden ist, kannst Du diese Library in Deiner Library als Dependency definieren.
...
js:
libraries/mymoduleh/js/mein.js: {}
dependencies:
- mymodule2/other-library
Dann wird die andere Library und das andere JS automatisch mitgeladen.
Zu den Infos von dinmikkith: in der *.libraries.yml kann nicht definiert werden ob ein js global oder nur auf bestimmten Seiten geladen werden soll (andernfalls ggf. mal ein Beispiel liefern). In der *.libraries.yml werden nur Libraries definiert, ansonsten passiert erstmal gar nichts mit diesen Libraries. Die Libraries können dann auf verschiedene Wege eingebunden werden:
- global über themename.info.yml
- in twig über attach_library(...)
- über "#attached" im Code an verschiedenen Stellen (global oder spezifisch)
Empfehlenswert zu lesen: https://www.drupal.org/docs/8/creating-custom-modules/adding-stylesheets...