Entwicklungsprozess

Hallo allerseits, seit neuestem beschäftige ich mich mit Shopware, Templates, Modules etc, also Sachen, aus der Entwicklerpersepktive. Derzeit habe ich eine lokale Installation und spiele damit ein wenig herum. Um die Sache etwas zu strukturieren, habe ich mir eine remote GIT Repository eingerichtet und halte sie mit der lokalen Installation synchron. Im zweiten Schritt, würde ich gern auf dem remote Server eine Testinstanz einrichten, die meinen aktuellen Entwicklungsstand präsentiert. D.h. ich commite lokal, pushe zum Remote Server und mache pull auf dem Testserver. Leider funktioniert das nicht so ganz, wg. der Datenbank und Host-bezogenen Einstellungen, die ebenfalls in der DB gespeichert werden. Meine Frage ist daher, ob ihr Erfahrung bzw. Tipps habt, wie man den oben beschriebenen Workflow möglichst schmerzfrei abbilden kann, ohne dass ich jedes mal viel herum konfigurieren muss, wenn lokal ein neues commit entsteht. Vielleicht habt ihr aber auch komplett andere Abläufe, die bei Shopware mehr Sinn machen? Meine zweite Frage bezieht sich auf eigene Templates: und zwar habe ich ein Template von Emotions abgeleitet, dieser funktioniert bei mir lokal soweit ganz gut, wenn ich, wie oben beschrieben auf dem Testserver den Shop aufrufe, wird stattdessen Standard Emotions Template angezeigt, obwohl im Backend mein Template ausgewählt ist. Meine Vermutung ist, dass es an irgendwelchen Einstellungen liegt, die man aufgrund des Umzugs irgendwo setzen müsste. hatten schon jemand das gleiche Problem und kann mir da ein Tipp geben? Allgemein dazu, was muss man denn so alles an Konfigurationsanspekten beachten, damit alles reibungsfrei läuft? Und zum Schluss, gibt es eigentlich nen IRC Channel, wo man sich mit anderen Entwicklern austauschen kann, wenn es mal hier und da klemmt? Beste Grüße, Edin

Hallo Edin, Zu Frage 1: Die DB Settings sind in der lokalen config.php gespeichert. Entweder Du verwendest am Testsystem die selben DB Settings mit Zugriff über localhost oder - sollte das nicht möglich sein - bau Dir ein kleines Script, dass die Konfiguration automatisch ändert. Zu Frage 2: Ich würde auf ein Problem mit den Rechten tippen. Prüfe, ob Dein www User Leserechte auf Dein Template hat. Nur so eine Vermutung… LG Michael

Hallo Michael, danke für die Antwort. zu 1: mir gehts nicht hierbei nur um die Datenbank, die funktioniert, soweit man lokal und auf dem server die gleichen Nutzer usw. anlegt. Man muss aber unter grundeinstellungen/shop im backend, den namen vom host eingeben, und dieser ist natürlich dann verschieden. Man muss also jedes mal beim pull auf dem testserver im backend anpassungen machen, oder vor dem push auf dem localhost. Und diese Einstellung wird wohl in der Db gespeichert. Wäre schon gut wenn man die Hosteinstellungen auch in die config.php abgespeichert, und man überschreibts dann nicht mehr.Oder gibt es hierzu einen Ausweg? zu 2: hab ich auch vermutet. Habs mir auch nochmals angeschaut, die Rechte sind alle auf den apache user gesetzt, so wie für die anderen Standard-Templates. Das interessante ist: ich habe eine Einkaufswelt erstellt, und auch eigene Widgets erstellt. Diese Widgets sind in meinem Template gespeichert und werden auch gefunden (solang mein Template aktiv ist), aber nicht meine Überschreibungen der smarty template Dateien (index,tpl, header.tpl). Dadurch werden die Elemente angezeigt, die ich eigentlich rausgeschmissen habe bzw. meine css Dateien gar nicht geladen. Rein rechtetechnisch, gibt es keine Unterschiede zwischen meinem und den anderen Templates.

Hallo, 1) Ich würde mir hier ein kleines SQL Script anlegen, dass mir die Werte beim Upload einfach ändert - eine andere (nicht zu aufwendige) Variante gibt es nicht 2) Ist das Template richtig in den Einstellungen ausgewählt? Stimmen die Vererbungen? Hast Du vl. Groß/Kleinschreibung bei den Pfaden verwendet? Je nachdem unter welchen System Du entwickelst / veröffentlichst, könnte dort das Problem liegen. LG

Hi, zu 1:gute Idee, werde es damit mal probieren! Du weisst nicht zufällig in welcher Tabelle für Shopware 4, die Einträge bzgl. des Host aufzufinden sind? uz 2: also ich habe da zum einen _ressource Dateien (css, javascript) und denk da sollte nix passieren (sind standard css, js Dateien). Dann habe ich noch die index Verzeichnis erstellt, darunter header.tpl, index.tpl und categories_top.tpl. header.tpl extends die orginal header wie folgt: {extends file=‘parent:frontend/index/header.tpl’} {* Stylesheets and Javascripts *} {block name=“frontend_index_header_css_screen” append} … Sie wird allerdings gar nicht geladen (wenn ich source der Seite ansehe, es fehlen dann nämlich meine appends). Das Problem ist wohl die index.tpl, da mach ich nämlich kein Vererben, sondern überschreibe sie komplett selbst. Dies funktioniert bei mir lokal aber problemlos.Remote wird es anscheinend ignoriert und die orignal index.tpl geladen. Mir fällt allerdings nichts auf, was hierfür der Grund sein könnte. Es ist alles kleingeschrieben, mal nebenbei gesagt.

Hi, zu 1:gute Idee, werde es damit mal probieren! Du weisst nicht zufällig in welcher Tabelle für Shopware 4, die Einträge bzgl. des Host aufzufinden sind? uz 2: also ich habe da zum einen _ressource Dateien (css, javascript) und denk da sollte nix passieren (sind standard css, js Dateien). Dann habe ich noch die index Verzeichnis erstellt, darunter header.tpl, index.tpl und categories_top.tpl. header.tpl extends die orginal header wie folgt: {extends file=‘parent:frontend/index/header.tpl’} {* Stylesheets and Javascripts *} {block name=“frontend_index_header_css_screen” append} … Sie wird allerdings gar nicht geladen (wenn ich source der Seite ansehe, es fehlen dann nämlich meine appends). Das Problem ist wohl die index.tpl, da mach ich nämlich kein Vererben, sondern überschreibe sie komplett selbst. Dies funktioniert bei mir lokal aber problemlos.Remote wird es anscheinend ignoriert und die orignal index.tpl geladen. Mir fällt allerdings nichts auf, was hierfür der Grund sein könnte. Es ist alles kleingeschrieben, mal nebenbei gesagt.

Funktioniert die Vererbung wenn Du ein anderes (mitgeliefertes) “Extension” Theme nimmst?

Hmm shchwer zu sagen, ist nicht so ganz ohne weiteres zu testen. Was müsste ich auf dem Testserver ändern, um nicht von emotions, sondern von default zu erben? Mein template hat den emontion_custom verzeichznisnamen. wie gesagt, lokal (Mac) funktionierts, nur remote (centos) nicht. Übrigens ich hab soeben gemerkt, dass ich dort, wenn ich zu anderen emotions ableitungen wechsele, trotzdem nur die hauptversion angezeigt wird. einzig ein weschsel zum alten template bewirkt änderungen. Naja bis auf die zusätzlichen widgets, die sich in meinem template befinden und nur bei meinem template angezeigt werden.

Hi, s_core_shops stehen die Hosts, ist nicht zu übersehen. Shopware auf dem Server installieren 1. emotion_meinTemplate Ordner von localhost auf den Server nach templates/ kopieren. 2. Datebank auf localhost exportieren 3. Tabellen der Datenbank auf dem Server löschen und die localhost-Datenbank anschließend in die ServerDatenbank importieren. 4. s_core_shops eben an den zwei, drei Stellen editieren (je nachdem, ob Subshops/Sprachenshops vorhanden sind). 5. media-Ordner kopieren, falls die Bilder/Dokumente benötigt werden Falls man auf localhost/ und Server unterschiedliche Templates im Backend ausgewählt hat, muss man im Backend natürlich umstellen. Wenn die Templates auf beiden Servern gleich heißen und ausgewählt sind aber nicht. Danach muss alles laufen, ich mache das dauernd so. Der eine phpmyadmin Aufruf ist ja nun nicht die Welt. An der config.php braucht man so gar nichts zu ändern. Wenn irgendetwas mit der Vererbung nicht funktioniert, dann liegt das nicht an dem Migrationsprozess. Vor allem nicht, wenn die Rechte und Gruppen bei allen Templates identisch sind. Das steht auch nicht in irgendeinem eigenem Template eine Pfadangabe a la c:\pfad\ ? Obwohl ich mir eigentlich nicht vorstellen kann, wie das passiert sein sollte.

Hi, Stell auch noch sicher, dass Dir bei der online Variante kein Proxy oder Cache einen Strich durch die Rechnung macht. Denke das hast Du schon gecheckt, aber man weiß ja nie…

Hi, erstmal danke für eure Mühen, also mein Prozess läuft bisher so: 1) Erstinstallation und Anpassungen lokal auf dem Rechner (mac, also keine c:/pfad dinger) 2) als ich testserver aufsetzen wollte, hab ich lokale git repository installiert die mit remote repository verknüpft und auf meinem testserver git repository geclont 3) mysql testserver mit identischen einstellungen wie lokal vorgenommen, db von lokal importiert, cache gelöscht, template ausgewählt (war dann schon gesetzt auf mein template, aber sicherheitshalber hin und her gewechselt) Und dennoch klappt das nicht, übrigens hab ichs auf einem zweiten mac ausgecheckt, und da klappts auch nicht. mir ist jetzt schon bewusst, dass es was mit rechten wohl zu tun hat, nur den grund habe ich noch nicht gefunden. selbst wenn ich komplettes shopware verzeichnis auf 777 setze, bewirkt es nichts. Da ich also alles über git regle, musste ich keine verziechnisse manuell kopieren. Die frage ist, ob ich irgendwas mit .gitignore sperren soll oder nicht? Vielleicht wir irgendwas nicht mitübertragen was auf dem testserver dann fehlt, und dieses verhalten auslösen kann. Naja ich werd erstmal weiterschauen, vielleicht fällt euch diesbezüglich irgendwas ein (insb. im Bezug auf git), wenn ja würd ich mich freuen von euch zu hören. Wenn ich das Problem entdecke, werd ichs hier posten. Besten Grüßen, Edin

Tag, ich habe das Problem beheben können: und zwar ist es so, dass wenn man lokal die zip Datei entpackt, die Ordnerstruktur passt. Shopware ist anscheinend sehr auf die Ordnerstruktur und dabei insbesondere die leeren Ordner angewiesen. Wenn ich jetzt dem lokalen Ordner eine git repository verpasse, und diese remote pushe und von woanders auschecke, entfernt git ja die leeren Ordner. Und dann passiert nämlich, dass Shopware bestimmte Sachen nicht mehr richtig macht, z.B. bei der Vererbung der Templates (z.B. fehlen dann die _local Ordner). Ich hab hierzu automatisch einfach in jedem ordner lokal eine leere Datei anlegen lassen und wenn ich diesmal pushe, sind alle beim pull alle ordner da und siehe da, mein Template wird aufeinmal doch angezeigt! Ich hab jedoch ein neues Problem (ev. im Zusammenhang mit 4.1.0) und zwar wenn ich diese Prozedur durchgeführt habe, kann ich mich remote nicht als admin in backend einloggen. Der Login Vorgang fängt an, bricht dann aber ab, ohne Fehleranzeige und ich bin wieder bei der login Maske (Chrome). Lokal komme ich rein. Wenn ich jedoch remote nur auschecke, dann aber installationsvorgang nochmal durchführe, kann ich mich remote einloggen. Mir fehlen dann aber meine Daten. Muss ich u.U. noch andere Sachen in der Db anpassen, oder kann es auch an irgendwelchen fehlenden Dateien liegen? Vielleicht hat mal einer auch so eine Erfahrung von euch gemacht. Beste Grüße, Edin

Hi Edin, wenn ich mich recht erinnere, ist das Passord hash5-verschlüsselt. Ein einfaches Kopieren der Datenbank inkl. pw dürfte also nicht funktionieren. Tschö Ralf

Ja, es handelt sich um ein einfaches md5 encoding. Einfach mit PHP oder einem der vielen kostenfreien online-encoder einen neuen Hash erzeugen, in der DB beim User speichern und fertig. Aber bei Dir hört sich das eher nach einem anderen Problem an. Bist Du sicher, dass eine Session erzeugt werden kann? Sieh vl. mal ins Apache Log…

Hi, also pwd habe ich jetzt nach der Anleitung gesetzt: post25737.html also durch: update s_core_auth set password=md5(concat(„A9ASD:_AD!_=%a8nx0asssblPlasS$“,md5(‚Neues Passwort‘))) where username=„admin_user_name“ hat aber nichts bewirkt. Zudem hat das eigentlich mit einfach datenbank kopieren mit der version 4.0.8 funktioniert. Bzgl. der Session meldet apache da nichts. Das einzige was mir auffällt zum thema Session, ist, das in s_core_auto die sessionID nicht der id aus der tabelle s_core_sessions_backend entspricht. Aber selbst wenn ich es manuell umschreibe, bewirkt das ebenfalls nichts.

Hi edin! Du hast mich gerade gerettet, war einige Stunden auf der Suche nach demselben Problem, das auch Du hattest. Bei mir waren es ebenfalls die leeren Ordner. Nach einem initialen „pull“ vom remote-Repository habe ich nochmals den ganzen Schwung per FTP lokal rüberkopiert und schwupps, schon ging alles wieder. Der von Dir gewählte Entwicklungsprozess ist übrigens auch genau meiner. Als Tipp für das SQL-Problem kann ich Dir meine Vorgehensweise schildern: - Auf Serverseite anlegen Export der Datenbank (mysqldump) - Auf Clientseite Download dieser Datenbank (wget) - Auf Clientseite Suchen und Ersetzen durch Regex (ich hab das mit einer BAT-Datei und perl gelöst. Beispiel: „perl.exe“ -pi.orig -e „s/1,NULL,‚BLOGNAME‘,NULL,0,‚www.blogurl.com‘,NULL,NULL,‚www.blogurl.com‘,1,NULL,NULL,24,4,3,1,1,1,NULL,0,1,1,1/1,NULL,‚BLOGNAME‘,NULL,0,‚www.blogurl.dev‘,NULL,NULL,‚www.blogurl.dev‘,0,NULL,NULL,24,4,3,1,1,1,NULL,0,1,1,0/g;“ „db.sql“ Das setzt die Blogurl auf die lokale URLs und setzt gleichzeitig das SSL-Zertifikat außer Kraft (beides ist in s_core_shops hinterlegt). - Auf Clientseite Einspielen der SQL-Datei in die lokale XAMPP-Umgebung Ich klicke also nur einmal auf die BAT-Datei und der Rest passiert automatisch. Bei Rückfragen einfach melden. Beste Grüße

Freut mich! Wenn wir schon bei Umzug sind, heute auch einen Umzugs-Weisse Seite Fehler lokalisiert: wenn man einen Shop unter einer Domäne x hat und dann es per FTP lädt und auf localhost anpasst, bekommt man trotzdem eine Whitepage Ausgabe, wenn man lizenzierte Plugins hat (selbst dann wenn man die Domäne in der DB auf localhost angepasst hat). Es geht erst dann wenn man über die Datenbank die Lizenzplugins dekativiert und den Lizenzmanager. Grundsätzlicher Tipp bei White Page Problemen, einfach mal im log Verzeichnis nachschauen. VG, Edin