GXModules - JS wird Global nicht eingebunden

Thema wurde von Steffen (indiv-style.de), 14. September 2017 erstellt.

  1. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Meine eigene JS-Datei welche im GXMoldules liegt (Ordnerstruktur siehe Bild) wird nicht eingebunden!
    Hat das jemand schon gemacht wo es funktioniert???

    GXModules_keinJS.jpg
     
  2. Sergej (Gambio)

    Sergej (Gambio) Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    1. August 2016
    Beiträge:
    336
    Danke erhalten:
    205
    Danke vergeben:
    69
    Du hast im Prinzip zwei Möglichkeiten:

    - das JS über ein Template einbinden mit eigenem Namespace und Controllern (die coole Variante)

    oder evtl.

    - über ein Asset Array in einem ShopController an das Frontend mit übergeben (findet oft Verwendung statt bei z.B. eigenen CSS-Strukturen)
     
  3. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Schon klar, nur das sind 5 kleine Functionen! Dafür ist mir der Aufwand einfach zu gross. Und das es anders gehen soll steht ja hier eindeutig beschrieben:

    https://developers.gambio.de/tutorials.html?v=3.5.1.0&p=gxmodules#requirementShopTemplates

    Und genau das macht er nicht!

    Ihr stellt mit den GXEngine, JSEngine, GXModules sehr mächtige Werkzeuge zur Verfügung aber das ist m.E. nach zu mächtig für kleinere Anpassungen. Deswegen war ich froh, eifach meine JS in einen vorgegebenen Ordner zu legen und gut... Macht er nicht und das ist unschön!

    UND NUN???
     
  4. Sergej (Gambio)

    Sergej (Gambio) Erfahrener Benutzer
    Mitarbeiter

    Registriert seit:
    1. August 2016
    Beiträge:
    336
    Danke erhalten:
    205
    Danke vergeben:
    69
    Wenn es laut developers funktionieren sollte und du alles richtig gemacht hast, dann ist da was kaputt...

    Hast du schon versucht dein JS direkt in den Ordner JavaScript abzulegen?

    Wenn ja und ohne Erfolg. Im Quellcodeansicht gegengeprüft ob dein JS wirklich nicht da ist?
     
  5. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Alles schon gemacht... Nix da! Leg ich das im Templates-Ordner usermod/javacript/Global ab, geht es.
     
  6. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Also im richtigen Templates-Ordner! Nicht der in GXModules!!!
     
  7. Steffen (indiv-style.de)

    Steffen (indiv-style.de) G-WARD 2013/14/15/16

    Registriert seit:
    30. Juni 2011
    Beiträge:
    5.143
    Danke erhalten:
    1.466
    Danke vergeben:
    452
    Beruf:
    Systemadmin, Webentwickler bei Indiv-Style
    Ort:
    PhpStorm
    Fehler gefunden! Der Ordner darf nicht JavaScript heisen, sondern Javascript!! Das sollte im Tutorial geändert werden!
    In UsermodJSMaster.inc.php sieht man das!
    PHP:
    $gxModuleFiles GXModulesCache::getFiles();
           
            foreach(
    $gxModuleFiles as $file)
            {
                if((
    strpos($file'/Templates/' CURRENT_TEMPLATE '/Javascript/') !== false
                    
    || strpos($file'/Templates/All/Javascript/') !== false)
                   && 
    substr($file, -3) === '.js'
                   
    && (strpos($file'/' $this->get_page() . '/') !== false
                       
    || strpos($file'/Global/') !== false)
                )
                {
                    
    $t_files_array[] = $file;
                }
            }
           
            
    $dataCache->set_data($cacheKey$t_files_arraytrue);
           
            return 
    $t_files_array;