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.
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.
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...
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.
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.
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.
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.
@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. !!!!
Die vielen XML-Dateien wurden zu ein paar wenigen zusammengefasst. Eine Anleitung dazu folgt nachher aber auch nochmal in Teil 4!
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
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.
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.... ?
Ich hab das gerade mal mit der Stylesheet.css probiert, hat aber nicht funktioniert. Muss ich das erst noch irgendwo aktivieren?
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.
eine eigene css erstellen und in \templates\EyeCandy\usermod\css kopieren. dann sollte darauf zugegriffen werden.
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.
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...>
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.