Idee gesucht zu javascript-Datei, die NICHT durch den Gambio-Build laufen darf

Thema wurde von Anonymous, 12. April 2022 erstellt.

  1. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Ich wende mich mal an Euch, vielleicht habt Ihr eine Idee?

    Folgende Situation:
    Für eine Artikelindividualisierung möchte ich eine nicht selbst geschriebene Javascript-Komponente einbinden, die vereinfacht gesagt verschiedene Darstellungsmodi mit sich bringt. Leider werden diese jeweiligen Modi über einzelne javascript-Dateien definiert, die kurz gesagt nichts anderes sind, als teils lange Textdateien, die als Variable in eine einzige javascript-Zeile (teils bis zu 15.000 Zeichen) gepackt sind. Diese Javascript-Text-Dateien für die Modi lädt das Script auf diese Weise fest verdrahtet, das kann ich also nicht ändern.

    Die Herausforderung:
    Das Hauptscript der Komponente kann ich in den Javascript-Theme-Ordner packen. Das wird dann durch Gambio in diesen shop-internen js-Build verarbeitet und ausgeliefert und das funktioniert auch.
    Was nicht funktioniert ist, diese ganzen oben erwähnten Modi-Dateien auf die gleiche Weise zu integrieren. Das schlägt aufgrund der dahin enthaltenenen Texte in egal welcher Kombination einfach fehl, die sind zu lang und enthalten zu viele Steuerzeichen, irgendwann geht da was schief.
    Jetzt würde ich diese js-Dateien in meinem Script-Teil einfach dynamisch nachladen. Eigentlich auch keine übergroße Herausforderung. ABER,... wohin damit? Ich würde das gerne innerhalb derselben Domain hinterlegen (sprich, im Shop), aber da wird's schwierig:
    - wenn ich es im Theme-Javascript unterbringe, wird es wie beschrieben kaputt verarbeitet, geht also nicht
    - ich kann es nicht über den Dateimanager irgendwo in den image- oder media-Ordnern ablegen, weil der Dateimanager dort kein js erlaubt
    - in einen eigenen Unterordner innerhalb der js-Installation kann ich das auch nicht ohne weiteres packen, weil der Zugriff darauf abgefangen wird. Irgendwie bekäme man das sicher irgendwann hin, wenn ich das Routing anpasse, aber das würde ich sehr gerne vermeiden.
    - einfach die Rohstruktur eines eigenen Moduls inkl. "javasript"-Ordner anzulegen, hab ich auch versucht. Leider wird das javascript da irgendwie nicht ohne Weiteres ausgeliefert oder erreichbar gemacht, auch wenn die Gambio-Module ja auch javascript enthalten und dort js-Dateien verfügbar gemacht werden (die auch nicht durch den Shop-Build weiterverarbeitet wurden wie es aussieht)

    Hat irgendjemand eine einfache Idee, javascript-Dateien im Shop-Kontext so abzulegen, dass ich sie einfach durch Angabe der URL dorthin nachladen kann? Mir gehen die Ideen aus...
     
  2. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Update: ich hab's doch hinbekommen, einen Unterordner innerhalb der Gambio-Installation anzulegen und die Dateien von dort aus anzusprechen. Hat sich erstmal erledigt hoffentlich, ich geh mal ans Nachladen und hoffe auf keine weiteren Hindernisse...! :)
     
  3. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.667
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @Topas79 Du kannst die JavaScripte alle im Ordner /GXModules/meineFirma/MeinModul/Shop/Themes/All/Javascript/global/ ablegen. Alle Dateien die da abgelegt werden und .js als Endung haben, werden automatisch eingebunden und ausgeführt.
    Die werden weder minifiziert noch mit anderen Build Scripten verändert.

    (Link nur für registrierte Nutzer sichtbar.)

    Und ich empfehle alles was du veränderst im GXModules zu machen und keinerlei Änderungen in den Core-Shopdateien vorzunehmen.
     
  4. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Auf den Pfad muss man erstmal kommen :D Das steht so auch nicht in der Doku. Auf der Seite war ich natürlich mal im Verlauf meiner Versuche.

    Aber hab's getestet und es funktioniert, vielen Dank!

    Für alle, die das nachlesen: Die Dateien werden aus dem genannten Ordner (Vorsicht: Wurzelordner ist GXModules ff. und nicht Themes ff.!) in alphabetischer Reihenfolge ausgelesen und in die init-de.js eingebaut. Wenn also das Hauptscript alphabetisch nicht am Anfang liegt, ist dessen Inhalt natürlich vorher nicht bekannt, wenn in den Hilfsdateien eine Referenz darauf notwendig ist. Ließ sich hier aber einfach durch eine Anpassung des Dateinamens des Hauptscripts erledigen.
     
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.667
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @Topas79 Wo steht das nicht in der Doku? Hier der Ausschnitt aus der im Link genannten Seite:

    Code:
    
    - GXModules/
        - {Modulhersteller}/
            - {Modulname}/
                - Shop/
                    - Themes/
                        - All/
                            - Javascript/
                        - Honeygrid/
                            - Javascript/
    Code:
    - GXModules/
        - {Modulhersteller}/
            - {Modulname}/
                - Shop/
                    - Themes/
                        - Honeygrid/
                            - Javascript/
                                - Account/
                                - AccountHistory/
                                - CallbackService/
                                - Cart/
                                - Cat/
                                - Checkout/
                                - Global/
                                - GVSend/
                                - Index/
                                - Manufactures/
                                - PriceOffer/
                                - ProductInfo/
                                - Wishlist/
     
  6. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    Ja, Du hast recht, entschuldige bitte. Meine Aussage oben war unpräzise formuliert!
    Was ich meinte ist, dass man erstmal darauf kommen muss, dass ich ein Javascript, das ich eigentlich in meinem Theme bräuchte, in ein neues Modul in einen dortigen Themes-Unterordner ablegen kann, damit es mir nicht wie die javascript-Dateien im direkten Themes-Pfad minifiziert und verändert wird, wenn das zu Problemen führt! :D

    Und was eigentlich nicht in der Doku steht ist, dass die Module-Javascript-Dateien im Gegensatz zu den Themes-Javascript-Dateien nicht angefasst werden; das war die in meinem Fall entscheidende und hilfreiche Info! Danke Dir!
     
  7. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.667
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @Topas79 Kommt darauf an was das Ziel der Entwicklung ist. Wenn es ein komplett neues Theme ist mit den Komponenten die nur exklusiv für das Theme laufen sollen und nicht für andere Themes, dann sollte man die Scripte schon im Theme Ordner ablegen. Wenn das Ziel ist ein eigenständiges Modul zu entwickeln, dass in jedem Theme einfach installiert werden kann, sollte man alles im GXModules/ ablegen auch HTML Anpassungen, so hat man alle Änderungen an einen Ort zusammen.

    Für ein Theme sollte aber auch folgender Pfad, /themes/MeinTheme/javascripts/system/Global/ funktionieren Das sollte genauso die JS Dateien unverändert lassen ohne diese mit dem Build Tools zu verändern.
     
  8. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    20. Oktober 2018
    Beiträge:
    35
    Danke erhalten:
    4
    Danke vergeben:
    30
    #8 Anonymous, 12. April 2022
    Zuletzt bearbeitet: 12. April 2022
    @Till (Gambio) Ja, das hatte ich schon versucht, also das Speichern in /themes/MeinTheme/javascripts/system/Global/. Konkret wäre mein Wunschordner aus organisatorischen Gründen /themes/MeinTheme/javascripts/system/ProductInfo/ gewesen, aber in beiden Fällen ist es dasselbe. Eben genau das schafft die ganz zu Anfang beschriebenen Probleme.
    Konkret ist der Output in der content.js, dass sämtliche dieser Modi-Dateien in eine einzige Zeile hintereinander geschrieben werden und da entsteht dann irgendein Problem.
    Die Verarbeitung erfolgt des Weiteren auch nicht in alphabetischer Reihenfolge.
    Beim Aufenthalt im Modus-Ordner landet jede dieser Modi-Dateien in einer eigenen Zeile, das funktioniert dann.
     
  9. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    1. September 2012
    Beiträge:
    2.448
    Danke erhalten:
    422
    Danke vergeben:
    158
    und warum hat Dein Shop kein Gambio Copyright?