Teil 3 "Usermods in Templates" aus der Serie "updatesichere Anpassungen in GX2"

Thema wurde von Nonito (Gambio), 31. Januar 2012 erstellt.

  1. Nonito (Gambio)

    Nonito (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    Gerade bei Modulinstallation aber auch bei anderen Arbeiten lassen sich Anpassungen an den Template-Dateien oft nicht vermeiden. Wenn in einem Bugfix oder Service Pack nun von gerade diesen angepassten Dateien eine neue Version ausgeliefert wird, können Anpassungen beim Einspielen des Updates verlorengehen, wenn diese in den Templatedateien direkt vorgenommen wurden.

    Anpassungen an Template-, JavaScript- und Stylesheet-Dateien lassen sich updatesicher vornehmen. Für Anpassungen, die Smarty-Template-Dateien betreffen, muss hierfür die betroffene Template-Datei kopiert und der Dateiname der Kopie mit der Endung "-USERMOD" versehen werden.

    Ein Beispiel:

    die anzupassende Datei
    templates/EyeCandy/module/shopping_cart.html

    kopieren nach
    templates/EyeCandy/module/shopping_cart-USERMOD.html

    Ist von einer Template-Datei auch eine Kopie mit der Endung "-USERMOD" vorhanden, so wird von Smarty diese Kopie verwendet und das Original übergangen. Anpassungen sollten darum stets in solchen usermod-Kopien vorgenommen werden. Wenn die Originaldatei im Rahmen eines Updates überschrieben wird, bleibt die Anpassung in der usermod-Datei erhalten und wird weiterhin verwendet. Aktualisierungen, die in der Originaldatei stattgefunden haben, können bei Bedarf in die usermod-Datei händisch übertragen werden.

    Die JavaScript-Dateien liegen in folgenden Verzeichnissen:
    - gm/javascript
    - templates/EyeCandy/javascript
    - templates/gambio/javascript

    Auch diese lassen sich auf die gleiche Weise kopieren und updatesicher anpassen.

    Ein Beispiel:

    die anzupassende Datei
    templates/EyeCandy/javascript/CartDropdownHandler.js

    kopieren nach
    templates/EyeCandy/javascript/CartDropdownHandler-USERMOD.js

    Die CartDropdownHandler.js ist damit nicht weiter aktiv und stattdessen kann mit der CartDropdownHandler-USERMOD.js gearbeitet werden.

    Bei Anpassungen im Bezug auf JavaScript wird der häufigere Fall allerdings das Hinzufügen von neuem JavaScript-Code sein. Um neuen JavaScript-Code global auf allen Shopseiten verfügbar zu machen, kann dieser in Form einer JS-Datei in dem Unterverzeichnis usermod/javascript/global des jeweils aktiven Templates abgelegt werden.

    Ein Beispiel:

    JS-Datei mit global verfügbarem JavaScript-Code ablegen als
    templates/EyeCandy/usermod/javascript/global/hello_world.js

    Der Inhalt von hello_world.js wird in sämtliche Shopseiten eingebunden, da sich die Datei im global-Verzeichnis befindet. Wird ein JavaScript nur in bestimmten Bereichen benötigt, kann dieses mit Hilfe der anderen Verzeichnisse neben "global" gezielter platziert werden. Zur Verfügung stehen unter anderem die Bereiche "account", "cart", "checkout", "manufacturers" und "product_info".

    Analog zu diesem System können neue Stylesheet-Informationen in Form von css-Dateien im Unterverzeichnis usermod/css eines Templates abgelegt werden. Hier abgelegte css-Dateien stehen grundsätzlich auf allen Shopseiten zur Verfügung. Eine Unterscheidung zwischen global und anderen Bereichen findet hier nicht statt.

    Hinweis zum Cache:
    Nach dem Hinzufügen neuer usermod-Dateien sollten über den Adminbereich auf der Seite "Cache leeren" die Punkte "Cache für Seitenausgabe leeren" und "Cache für Modulinformationen leeren" ausgeführt werden.
     
  2. Nonito (Gambio)

    Nonito (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    PS: Lauffähig ab Service Pack 1.1 Beta2 bzw. Release v2.0.7
     
  3. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.425
    Danke erhalten:
    5.919
    Danke vergeben:
    1.061
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    Ihr solltet hier für solche Postings vielleicht mal einen Forenbereich machen für Entwickler.
    Damit man die später - ähnlich der Tuts. - schnell wieder findet.
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    946
    Danke erhalten:
    68
    Danke vergeben:
    120
    Ich verstehe den Sinn der ganzen *USERMOD Geschichte nicht.... Damit gehen zwar keine individuellen Anpassungen verloren, aber Updates werden nicht installiert bzw. müssen manuell in die USERMOD Dateien übertragen werden. Ich sehe darin keinen Vorteil. Hätte man da nicht mit Vererbung arbeiten können? Oder kann die USERMOD Klasse auch eine Subklasse der "Original" Klasse sein?

    Ich bin dennoch weiterhin für das manuelle mergen aller Dateien Da weiss man wenigstens wo sich etwas geändert hat und kann seine Anpassungen beibehalten...
     
  5. balou...sagt "Auf Wiedersehn"

    balou...sagt "Auf Wiedersehn" Erfahrener Benutzer

    Registriert seit:
    7. Juni 2011
    Beiträge:
    1.766
    Danke erhalten:
    373
    Danke vergeben:
    134
    so habe eben mal die product_listing_v1.html im USERMOD bearbeitet und hochgeladen.
    Danach meine eigene .css angelegt und im ordner abgelegt.

    WAS SOLL ICH SAGEN.....GEIL einfach nur GEIL...weitere updates können jetzt ohne sorge kommen.
     
  6. Moritz (Gambio)

    Moritz (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    5.329
    Danke erhalten:
    2.380
    Danke vergeben:
    776
    Nicht jede Datei des Shops ist eine PHP-Klasse, die überladen oder überschrieben werden kann. In diesem Teil unserer mehrteiligen Vorstellung neuer Shopfunktionen zum Thema "Updatesicherheit" geht es um HTML-, JS- und CSS-Dateien. Der Vorteil ist, dass man die Shopdateien unberührt lassen kann und man anhand der Dateibezeichnung bereits sieht, was angepasst ist und was nicht. Du hast Recht, dass Änderungen, die mit einem Update erscheinen, manuell übernommen werden müssten, falls man sie tatsächlich benötigt.

    Das Class-Overloading, das du vorschlägst, wird auch unterstützt und ist im Teil 1 erklärt.
     
  7. Muecke

    Muecke Erfahrener Benutzer

    Registriert seit:
    26. April 2011
    Beiträge:
    556
    Danke erhalten:
    16
    Danke vergeben:
    72
    Genial und so schön einfach! Nur weiter so, denn viele habe die Zeit nicht sich einzulesen und müssen schnell damit zurecht kommen. Ich freue mich jetzt schon auf den einmaligen Umstieg.
     
  8. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    946
    Danke erhalten:
    68
    Danke vergeben:
    120

    Ok, verstanden ;) Ich habe mir nicht alle Teile durchgelesen. Wenn es sich nur um CSS, JS und HTML Dateien handelt dann ist das sicherlich ein Vorteil.
     
  9. balou...sagt "Auf Wiedersehn"

    balou...sagt "Auf Wiedersehn" Erfahrener Benutzer

    Registriert seit:
    7. Juni 2011
    Beiträge:
    1.766
    Danke erhalten:
    373
    Danke vergeben:
    134
    @moritz,

    wo können den jetzt im admin neue module plaziert werden. Früher column_left. in beta 1.1 war dies die xml dateien die ja gelöscht wurden. !!!!
     
  10. Nonito (Gambio)

    Nonito (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    Die vielen XML-Dateien wurden zu ein paar wenigen zusammengefasst. Eine Anleitung dazu folgt nachher aber auch nochmal in Teil 4!
     
  11. Nonito (Gambio)

    Nonito (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    Aus didaktischen Gründen haben wir Teil 4 nun doch erstmal dem Thema "Sprachdateien erstellen" gewidmet und werden erst in Teil 5 das Adminmenü behandeln!

    Weiter zu Teil 4:
    http://www.gambio-forum.de/threads/...ie-quot-updatesichere-Anpassungen-in-GX2-quot
     
  12. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Die "column_left.php" ist, wg. der jetzigen Art der Einbindung der alten Menü-Struktur nicht updatesicher!

    Unter http://www.gambio-forum.de/threads/...ng-von-GX2-SP1.1?p=21743&viewfull=1#post21743 hatte ich schon einen Vorschlag gemacht, das zu ändern, damit das auch dann updatesicher bleibt.
     
  13. Nonito (Gambio)

    Nonito (Gambio) Administrator
    Mitarbeiter

    Registriert seit:
    21. April 2011
    Beiträge:
    279
    Danke erhalten:
    134
    Danke vergeben:
    52
    Das Posting hatte ich irgendwie nicht mitbekommen... das übernehmen wir sofort! Danke dir
     
  14. Danny

    Danny Erfahrener Benutzer

    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    So nun, nachdem die finale Version erschienen ist, habe ich auch einmal ein Frage zum Thema USERMOD... ich setze ja derzeit die Version 2.0.6 in letzter aktueller Form ein und habe bereits diverse Anpassungen am Design sowie diversen php Dateien vorgenommen. Könnte ich da nun, vor dem Einspielen, des neuen SP1.1, die bereits geänderten Dateien mit dem Anhang -USERMOD versehen, um diese nicht zu verlieren. Somit habe ich nach dem Einspielen des SP1.1 die Möglichkeit, die Dateien einzeln zu Mergen und die Änderungen zu übernehmen.... ?
     
  15. Chulo

    Chulo Erfahrener Benutzer

    Registriert seit:
    26. April 2011
    Beiträge:
    332
    Danke erhalten:
    45
    Danke vergeben:
    18
    Ich hab das gerade mal mit der Stylesheet.css probiert, hat aber nicht funktioniert. Muss ich das erst noch irgendwo aktivieren?
     
  16. Danny

    Danny Erfahrener Benutzer

    Registriert seit:
    17. Juni 2011
    Beiträge:
    1.398
    Danke erhalten:
    179
    Danke vergeben:
    213
    hmm keine Ahnung..irgendwie fühle ich mich da etwas überfordert...da es hierfür keinerlei "brauchbare" Anleitung gibt. Da dies ein sehr wichtiges Thema für die Zukunft ist, würde ich mir wünschen, dass GG hierfür eine für jeden gut verständliche Anleitung bereit stellt.
     
  17. balou...sagt "Auf Wiedersehn"

    balou...sagt "Auf Wiedersehn" Erfahrener Benutzer

    Registriert seit:
    7. Juni 2011
    Beiträge:
    1.766
    Danke erhalten:
    373
    Danke vergeben:
    134
    eine eigene css erstellen und in \templates\EyeCandy\usermod\css kopieren. dann sollte darauf zugegriffen werden.
     
  18. balou...sagt "Auf Wiedersehn"

    balou...sagt "Auf Wiedersehn" Erfahrener Benutzer

    Registriert seit:
    7. Juni 2011
    Beiträge:
    1.766
    Danke erhalten:
    373
    Danke vergeben:
    134
    jeeep genauso kannst du das machen. wenn in den html dateien -USERMOD steht greift der shop darauf zu. also standard-USERMOD.html für die detailsseite.
     
  19. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.538
    Danke vergeben:
    908
    Ort:
    Bremen
    Sehr schön! Nun sei so lieb und erkläre mir mal in ganz einfachen & kurzen Sätzen, wo der Vorteil gegenüber (meiner) bisherigen Lösung liegt.
    Meine eigenen CSS-Dateien liegen im Ordner "..\templates\EyeCandy\" und werden in der "../includes/header.php" eingebunden.
    Was bringt mir datt Neue? <grübel, grübel...>
     
  20. Chulo

    Chulo Erfahrener Benutzer

    Registriert seit:
    26. April 2011
    Beiträge:
    332
    Danke erhalten:
    45
    Danke vergeben:
    18
    Du musst die /includes/header nicht mehr verändern, somit kannst du bei einem Update einfach die Dateien hochladen und alles funktioniert wie vorher, theoretisch. Habe das gerade mal mit der stylesheet.css nach balous Anleitung probiert und es läuft.