Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: Plugin Javacript Files vor </body>

  1. #1
    Contao-Nutzer
    Registriert seit
    25.02.2010.
    Beiträge
    89

    Standard Plugin Javacript Files vor </body>

    Hallo,

    gibt es keine Möglichkeit bei Contao 4.4 Plugin JS Dateien vor das Ende des </Body> Tags zu setzen?
    Eine Einbindung per $GLOBALS['TL_JAVSCRIPT'][] bietet mir ja per |static die Möglichkeit die einzelnen Scripts in einer einzigen Datei zu laden, was ich auch gut finde. Jedoch werden diese immer im <HEAD> platziert.
    Mittels $GLOBALS['TL_BODY'][] kann zum einen nicht |static benutzt werden und zum anderen fügt es die JS Dateien des Plugins VOR den im Template Eingebundenen "Eigener JavaScript-Code" Dateien.
    Gibt es hier keine saubere Möglichkeit? Warum wird dann eigentlich $GLOBALS['TL_BODY'][] im Template mittels <?php echo $this->mootools ?> ausgegeben? Danke für eure Hilfe

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.886
    Partner-ID
    10107

    Standard

    Zitat Zitat von cyklop Beitrag anzeigen
    Warum wird dann eigentlich $GLOBALS['TL_BODY'][] im Template mittels <?php echo $this->mootools ?> ausgegeben?
    Aus historischen, rückwärtskompatiblen Gründen

  3. #3
    Contao-Nutzer
    Registriert seit
    25.02.2010.
    Beiträge
    89

    Standard

    ok, das hatte ich mir fast gedacht. Und gibt es auch eine Möglichkeit für mein anderes Problem?

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.886
    Partner-ID
    10107

    Standard

    Für das was du haben möchtest, brauchst du eine Extension, zumindest wenn du weiterhin die JavaScript Dateien im Seitenlayout auswählen möchtest.

    Falls nicht kannst du dir ein eigenes js_ Template erzeugen, wo alle JavaScript Dateien die du brauchst, durch den Combiner geschickt und ausgegeben werden.

  5. #5
    Contao-Nutzer
    Registriert seit
    25.02.2010.
    Beiträge
    89

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Für das was du haben möchtest, brauchst du eine Extension, zumindest wenn du weiterhin die JavaScript Dateien im Seitenlayout auswählen möchtest.

    Falls nicht kannst du dir ein eigenes js_ Template erzeugen, wo alle JavaScript Dateien die du brauchst, durch den Combiner geschickt und ausgegeben werden.
    Eine Extension scheint es noch nicht zu geben, oder wüsstest du hier schon etwas?
    Die Variante mit dem js_ Template müsstest du mir bitte etwas genauer erklären. Finde hierzu keine Infos, wie das funktioniert. Werden js_templates automatisch durch den combiner geschickt und eingebunden, oder muss ich dann auf irgendeine Weise einbinden?

  6. #6
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von cyklop Beitrag anzeigen
    Eine Extension scheint es noch nicht zu geben, oder wüsstest du hier schon etwas?
    Die Variante mit dem js_ Template müsstest du mir bitte etwas genauer erklären. Finde hierzu keine Infos, wie das funktioniert. Werden js_templates automatisch durch den combiner geschickt und eingebunden, oder muss ich dann auf irgendeine Weise einbinden?
    Theme+ kann das, nur wird die Erweiterung nicht mehr weiterentwickelt. Ob das die Erweiterung https://github.com/comolo/contao-supertheme kann, weiß ich nicht.

    Wenn man das JS in den Body schiebt, muss man ggf. nacharbeiten bei den ganzen Inline-Js-Elementen, die sich meistens auf jQuery beziehen, was dann ja noch nicht zur Verfügung steht.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.886
    Partner-ID
    10107

    Standard

    Zitat Zitat von cyklop Beitrag anzeigen
    Die Variante mit dem js_ Template müsstest du mir bitte etwas genauer erklären. Finde hierzu keine Infos, wie das funktioniert. Werden js_templates automatisch durch den combiner geschickt und eingebunden, oder muss ich dann auf irgendeine Weise einbinden?
    zB:
    PHP-Code:
    <?php

    // templates/js_scripts.html5

    use Contao\Combiner;
    use 
    Contao\System;
    use 
    Contao\Template;

    $scripts = [
        
    'files/vendor/someJavaScript.js',
        
    'files/vendor/someOtherJavaScript.js',
        
    'files/themes/myTheme/js/myJavaScript.js',
        
    'files/themes/myTheme/js/myOtherJavaScript.js',
    ];

    $combiner = new Combiner();
    $rootDir System::getContainer()->getParameter('kernel.project_dir');

    foreach (
    $scripts as $script) {
        
    $combiner->add($scriptfilemtime($rootDir'/' $script));
    }

    echo 
    Template::generateScriptTag($combiner->getCombinedFile());

  8. #8
    Contao-Nutzer
    Registriert seit
    25.02.2010.
    Beiträge
    89

    Standard

    Super vielen Dank! Das Plugin SuperTheme scheint genau das richtige zu sein!

  9. #9
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Wozu für diese Sache extra eine Erweiterung installieren?
    Leg die Datei im template Verzeichnis (beginnend mit js_ ) an und binde sie über das Layout ein (Häkchen unter JavaScript-Templates )
    Ich hab das ähnlich wie von spooky beschrieben in mehreren Projekten gemacht nur das meine js_scripts.html5 so aussieht
    PHP-Code:
    <?php

    $combinedJS 
    = new Combiner();
    $combinedJS->add('files/layout/js/myJavaScript.js');
    $combinedJS->add('files/layout/js/myOtherJavaScript.js');
    $combinedJS->add('files/layout/js/scripts.js');
    $GLOBALS['TL_BODY'][] = '<script src="'.$combinedJS->getCombinedFile().'"></script>';
    Funktioniert jedenfalls .

  10. #10
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    Wozu für diese Sache extra eine Erweiterung installieren?
    Leg die Datei im template Verzeichnis (beginnend mit js_ ) an und binde sie über das Layout ein (Häkchen unter JavaScript-Templates )
    Ich hab das ähnlich wie von spooky beschrieben in mehreren Projekten gemacht nur das meine js_scripts.html5 so aussieht
    PHP-Code:
    <?php

    $combinedJS 
    = new Combiner();
    $combinedJS->add('files/layout/js/myJavaScript.js');
    $combinedJS->add('files/layout/js/myOtherJavaScript.js');
    $combinedJS->add('files/layout/js/scripts.js');
    $GLOBALS['TL_BODY'][] = '<script src="'.$combinedJS->getCombinedFile().'"></script>';
    Funktioniert jedenfalls .
    Und was ist mit den Skripten, die von Contao und Erweiterungen kommen? Die hätte man ja ggf. gern auch mit inkludiert. Da wirds schon wieder tricky.

  11. #11
    Contao-Fan
    Registriert seit
    10.08.2011.
    Ort
    Berlin
    Beiträge
    828

    Standard

    Das stimmt, aber löst das die Erweiterung?
    Das Problem hat man doch immer oder liege ich da falsch?
    Ich muss allerdings gestehen dass ich auch jquery aus dem assets Ordner darüber eingebunden hatte um das alles am Ende des body einzubinden.
    Was wäre denn eine elegante Lösung?

  12. #12
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Bennie Beitrag anzeigen
    Das stimmt, aber löst das die Erweiterung?
    Das Problem hat man doch immer oder liege ich da falsch?
    Ich muss allerdings gestehen dass ich auch jquery aus dem assets Ordner darüber eingebunden hatte um das alles am Ende des body einzubinden.
    Was wäre denn eine elegante Lösung?
    Theme+ hatte dies gemacht. Ob dies SuperTheme kann, weiß ich nicht. Eine elegante Lösung gibt es meines Erachtens nicht, da das Thema ausreichend komplex ist.

    Persönlich versuche ich so viel wie möglich auf Entwicklungsebene zusammenzufassen und dann nur noch die gebundelte Datei einzubinden. Dann fehlen zwar noch die Erweiterungen, aber den Rest habe ich unter Kontrolle.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •