Ergebnis 1 bis 10 von 10

Thema: jQuery im Backend verwenden

  1. #1
    Contao-Nutzer
    Registriert seit
    23.04.2018.
    Beiträge
    7

    Frage jQuery im Backend verwenden

    Hi,
    ich möchte im Backend gerne jQuery verwenden. Damit es zu keinen Konflikt kommt, nutze ich die Funktion jQuery.noConflict();. jQuery funktioniert damit leider nur teilweise, während es auf jsfiddle weiterhin einwandfrei funktioniert.

    Ich kann zum Beispiel ganz normal mit jQuery Klassen setzen, jedoch kann ich überhaupt keine Click Events ausführen/einfangen. Ist die Funktion .noConflict() auskommentiert, funktionieren die Click Events wieder wie gewollt, jedoch hat dann Contao Probleme damit, seine eigene JS Funktionen auszuführen.

    Weiß hier einer mehr?
    Geändert von Peneo (23.04.2018 um 15:19 Uhr)

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

    Standard

    Wie genau lässt du jQuery laden?

  3. #3
    Contao-Nutzer
    Registriert seit
    23.04.2018.
    Beiträge
    7

    Standard

    Über die GLOBAL Variablen (Mootools) in der Config Datei.

    Habe das Problem auch schon lösen können. noConflict() ist weiterhin vorhanden. jQuery hat Schwierigkeiten, nach gewissen Änderungen bestimmte Funktionen auszuführen, wie das folgende Beispiel

    HTML-Code:
    <script>
      $('#main').addClass('test');
      $('#main.test').on('click', function(){
        console.log('test');
      })
    </script>
    Muss deshalb Funktionen schon komplett anders schreiben, damit diese noch funktionieren, gleichzeitig aber MooTools nicht beeinflussen.

  4. #4
    Contao-Nutzer
    Registriert seit
    25.07.2011.
    Ort
    Offenburg
    Beiträge
    30

    Standard

    Hallo,

    schreib statt $-Zeichen jQuery. Das $-Zeichen wird auch von den mootools verwendet.
    PHP-Code:
    <script>
      
    jQuery('#main').addClass('test');
      
    jQuery('#main.test').on('click', function(){
        
    console.log('test');
      })
    </script> 
    Die Mootools werden im BE verwendet.
    siehe auch: https://brothers-project.de/contao-c...-mootools.html
    Geändert von mineralwa (24.04.2018 um 12:18 Uhr)

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

    Standard

    Zitat Zitat von Peneo Beitrag anzeigen
    Über die GLOBAL Variablen (Mootools) in der Config Datei.

    Habe das Problem auch schon lösen können. noConflict() ist weiterhin vorhanden. jQuery hat Schwierigkeiten, nach gewissen Änderungen bestimmte Funktionen auszuführen, wie das folgende Beispiel

    HTML-Code:
    <script>
      $('#main').addClass('test');
      $('#main.test').on('click', function(){
        console.log('test');
      })
    </script>
    Muss deshalb Funktionen schon komplett anders schreiben, damit diese noch funktionieren, gleichzeitig aber MooTools nicht beeinflussen.
    So darfst du deinen Code nicht schreiben. noConflict() brauchst du außerdem auch nicht. Du musst folgendes machen:
    PHP-Code:
    (function($) {
        
    // …
    })(jQuery); 

  6. #6
    Contao-Nutzer
    Registriert seit
    23.04.2018.
    Beiträge
    7

    Standard

    @mineralwa habs wie @spooky gemacht, nur vergessen hier zu posten (sry)

    @spooky wenn ich kein jQuery.noConflict() nutze, funktionieren die restlichen JS Funktionen in Contao nicht mehr (Beispiel Dropdown Menü oben rechts, PopUps, eigene Ajax Funktionen, ...).

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

    Standard

    Zitat Zitat von Peneo Beitrag anzeigen
    Über die GLOBAL Variablen (Mootools) in der Config Datei.
    Die alte nc_jquery_in_backend Extension macht es zB so:
    PHP-Code:
    if (TL_MODE == 'BE')
    {
        if (!
    is_array($GLOBALS['TL_JAVASCRIPT']))
        {
            
    $GLOBALS['TL_JAVASCRIPT'] = array();
        }
        
    array_unshift($GLOBALS['TL_JAVASCRIPT'], 'system/modules/nc_jquery_in_backend/assets/jquery.noconflict.js');
        
    $jquery_src 'assets/jquery/core/' reset((scandir(TL_ROOT '/assets/jquery/core'1))) . '/jquery.min.js';
        
    array_unshift($GLOBALS['TL_JAVASCRIPT'], $jquery_src);

    Es wird also ganz am Anfang des TL_JAVASCRIPT Arrays die jQuery library gesetzt und direkt danach
    PHP-Code:
    jQuery.noConflict(); 

  8. #8
    Contao-Nutzer
    Registriert seit
    23.04.2018.
    Beiträge
    7

    Standard

    @spooky Habe mir das Plugin selbst schon angeschaut und auch ausprobiert, leider funktioniert das mit Contao 4.4 nicht mehr. Habe mir deshalb das Template angesehen wieso. Ich könnte es jetzt auch einfach im Template ändern, finde ich aber nicht ganz Updatesicher (auch wenn Templates wenig verändert werden).

    Datei: be_main.html5
    HTML-Code:
      ...
      <script><?= $this->getLocaleString() ?></script>
      <script src="<?= TL_ASSETS_URL ?>assets/mootools/js/mootools.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>assets/colorpicker/js/mooRainbow.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>assets/chosen/js/chosen.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>assets/simplemodal/js/simplemodal.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>assets/datepicker/js/datepicker.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>bundles/contaocore/mootao.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>bundles/contaocore/core.min.js"></script>
      <script src="<?= TL_ASSETS_URL ?>system/themes/<?= $this->theme ?>/hover.js"></script>
      <script><?= $this->getDateString() ?></script>
      <?= $this->javascripts ?>
      ...

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

    Standard

    Zitat Zitat von Peneo Beitrag anzeigen
    @spooky Habe mir das Plugin selbst schon angeschaut und auch ausprobiert, leider funktioniert das mit Contao 4.4 nicht mehr.
    Ja, wegen der Pfad Angaben, das muss man für Contao 4 anpassen.

  10. #10
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Ich muss mich hier auch mal einklinken.

    Ich habe es mal so versucht:

    app\Resources\contao\config\config.php

    PHP-Code:
    <?php

    if (TL_MODE == 'BE') {
        
    $GLOBALS['TL_JAVASCRIPT'][] = 'dist/jquery-3.4.1.slim.min.js|static';
        
    $GLOBALS['TL_JAVASCRIPT'][] = 'dist/be.js|static';
    }
    Hat das jemand schon mal hinbekommen?

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
  •