[gelöst] Banner verschieben / Defektes Block-System?

Hallo, wie mir scheint, werden recht abenteuerliche Positionierungen im emotion-Template realisiert (war im normalen orange-Template nicht so). Momentan möchte ich die Banner nutzen, um in jeder Kategorie ein individuelles Bild in der Kopfzeile zu platzieren. Das sog. Kategoriebild nutze ich derzeit nicht, weil es standardmäßig nicht implementiert ist und es wohl noch keinen offiziellen Workround dazu gibt (wenigstens fand ich keinen). Im Forum las ich jedoch, dass man dasselbe auch mit den Banner realisieren könne. Zuerst testete ich mit dem orange-Template. Jetzt versuche ich dasselbe mit dem emo-Template, was aber nicht funktioniert. Was habe ich gemacht? #1 Banner einstellen und Kategorie zuweisen: klappt. Damit wird das Banner direkt oberhalb der Inhalte angezeigt. #2 Per CSS das Banner verschieben. Mittels absoluter Positionierung wollte ich das Banner einfach „nach oben“, also in den Kopfbereich verschieben. Das klappt aber nicht, weil der Container „#header“ das Banner stets verdeckt. Versuche, mit Schichtpositionen zu arbeiten (z-index + position) schlugen fehl. Ich bekomme das Banner einfach nicht „optisch“ über den „#header“. #3 Per Template-Änderung wollte ich kurzerhand den Block des Banners im Header unterbringen. Dazu fügte ich in der /frontend/index/index.tpl folgenden Code ein: [code] {block name=‚frontend_index_navigation‘ append}

{block name=‚frontend_home_index_promotions‘} {action module=widgets controller=emotion action=index categoryId=$sCategoryContent.id controllerName=$Controller} {/block}
{/block} [/code] Damit, so dachte ich mir, sollte am Ende des Blocks ‚frontend_index_navigation‘ der Block ‚frontend_home_index_promotions‘ eingefügt - also damit erweitert - werden. Funktioniert aber auch nicht. Aus irgend einem mir unklaren Grund wird mein promotions-Block in den DIV-Container „wrapper“ gepackt. Warum? Mir ist noch etwas aufgefallen: Wenn ich alle Templates eines Typs deaktiviere, also deren Dateien umbenenne, anschließend den Cache lösche und dann die Website neu lade - sollte es dann nicht etwas „anders“ - fehlerhaft - aussehen? Ich habe spaßenshalber mal alle index-Templates des Typs „home“ deaktiviert. Also alle /frontend/home/index.tpl -> in index.tpl_old umbenannt. Mit „alle“ meine ich alle einer Templatehierarchie. Also in _default, in _emotion und in meinem Templateordner ebenso. Nun die Überraschung: Meine Site sieht immernoch ganz normal aus - keine Änderung. Ist das normal? :wink: Ich nutze als Basis das _emotion (_default hätte ich also nicht einmal deaktivieren müssen). Da einige meiner Änderungsversuche nicht funktionieren, kam ich auf die Idee mal ganz unten zu testen zu beginnen - also alles ausknipsen. Und nun funktioniert’s dennoch. Kann mir das jemand erklären?

Hallo, das ist erstmal so völlig korrekt, denn das ganze Template wird in deiner Darstellung vollständig gecacht/zwischengespeichert. Sonst müsste ja jeder Inhalt und Templateblock sowie die Vererbung und und Plugins bei jedem Aufruf live neu geladen werden. Wenn du also gerade mit den Blöcken arbeitetest, die änderst, entfernst, ableitest etc. Muss der Templatecache danach geleert werden, damit das System die Änderung merkt und die Dateien also neu zwischenspeichert. Zudem ist es wichtig, dass die Vererbung/Reihenfolge beachtet wird. Löscht du was aus dem Mastertemplate von _emotion, so greift das System i.d.R. automatisch auf das Ursprungsmaster Template _default zurück. (Siehe Templatedoku) Machst du in deinem eigenen Template Änderungen, so kann auf den Ursprung beider Mastertemplates zurückgegriffen werden. http://wiki.shopware.de/Templatedokumen … ererbungen

Hallo, [quote=“Sebastian Klöpper”]Hallo, das ist erstmal so völlig korrekt, denn das ganze Template wird in deiner Darstellung vollständig gecacht/zwischengespeichert. Sonst müsste ja jeder Inhalt und Templateblock sowie die Vererbung und und Plugins bei jedem Aufruf live neu geladen werden. Wenn du also gerade mit den Blöcken arbeitetest, die änderst, entfernst, ableitest etc. Muss der Templatecache danach geleert werden, damit das System die Änderung merkt und die Dateien also neu zwischenspeichert. Zudem ist es wichtig, dass die Vererbung/Reihenfolge beachtet wird. Löscht du was aus dem Mastertemplate von _emotion, so greift das System i.d.R. automatisch auf das Ursprungsmaster Template _default zurück. (Siehe Templatedoku) Machst du in deinem eigenen Template Änderungen, so kann auf den Ursprung beider Mastertemplates zurückgegriffen werden. http://wiki.shopware.de/Templatedokumen … ererbungen[/quote] nun, Deinen Ausführungen zufolge müsste ich doch richtig gedacht und gehandelt haben. Also Templatedatei in _default, in _emotion und in emotion_meintemplate deaktivieren. Dann Cache löschen. Genau das klappt aber nicht bzw. bleibt reaktionslos - es ändert sich nach einem neuen Laden der Website: NICHTS! Daher meine Vermutung, dass mit der Vererbung etwas nicht simmt. Könnte man das noch irgendwie testen? Nachtrag: Soeben habe ich, um ganz sicher zu gehen, noch einmal Schritt für Schritt getestet. 1. Durchgang: alle /frontend/index/index.tpl -> umbenennen in: /frontend/index/index.tpl_old -> Cache löschen und Website neu laden -> Ergebnis: Funktioniert, d.h. die Website ist nun “kaputt”. >> Dateinamen wieder hergestellt, und neu geladen: wieder alles okay. 2. Durchgang: alle /frontend/home/index.tpl -> umbenennen in: /frontend/home/index.tpl_old -> Cache löschen und Website neu laden -> Ergebnis: Funktioniert nicht, d.h. die Website ist _nicht_ kaputt! Eigentlich müsste jetzt die Startseite, die auf das “home”-Template zugreift, kaputt sein. Ist sie aber nicht. Alles wird (trotz Cacheleerung) normal angezeigt. Das Problem trifft also anscheinend nur auf untergeordnete Subtemplates zu. Könnte das bitte einmal nachgeprüft werden? Oder unterliege ich einem Irrtum? Wenn keins der (laut Hierarchie) drei Templates mehr existiert (home), müsste dann nicht etwas “zu sehen” sein? Ich nutze aktuell noch eine PE 4.0.3

hm… keiner eine Idee?

…wirklich niemand? :wink:

So langsam aber sicher könnte sich jemand melden. Das viele der User selbst mit SW4 ihre Probleme haben, verstehe ich nur zu gut. Doch letztlich frage ich mich wieso wir eine PE kaufen, wenn dann doch kein ausreichender Support entsteht - weder hier noch im Ticketsystem. Es geht wirklich sehr schleppend voran mit Antworten (vom Hersteller). Wie soll man denn vernünftig mit Shopware arbeiten wenn es weder eine (annähernd) vollständige Dokumentation noch einen aktiven (!) Support gibt? Ist hier mit einer Besserung zu rechnen?

Ja, deinen Ausführungen kann ich zustimmen. So gut auch eine transparente Kommunikation ist (http://wiki.shopware.de/Roadmap_cat_166.html) im Moment läuft auch für uns leider alles noch ziemlich „unrund“. 4.0.4 RC ist zwar ein guter Fortschritt zur 4.0.0 aber eigentlich kann man wohl erst ab 2013 mit SW4 ernsthaft Projekte umsetzen. Ohne Doku und funktionierende Tutorials sind Anpassungen schwer durchschaubar.

@TomBox welchen Cache hast du gelöscht ? Nur den Browser Cache oder auch den im Backend ?

Hallo 4now, [quote=“4now”]@TomBox welchen Cache hast du gelöscht ? Nur den Browser Cache oder auch den im Backend ?[/quote] da ich nun schon eine Weile mit SW arbeite: ALLE! :wink: Also sowohl jeden möglichen SW-Cache als auch den Browsercache. Inzwischen habe ich sogar auf die 4.0.4. geupdated. In der Hoffnung, es würde sich etwas bessern. Doch trotz der beeindruckenden Liste an Bugfixes funktionieren “meine” Dinge noch immer nicht. Das Blocksystem ist mir noch immer ein Rätsel. Leider ein undokumentiertes.

Hallo TomBOX, das Templatesystem und das Blocksystem bzw. die Verebung ist im Detail dokuementiert. Du kanst auch genau erkennen, in welcher Reihenfolge welche Inhalte geladen werden. Ich kann auch das Problem was du schilderst immer noch nicht nachstellen. [quote]2. Durchgang: alle /frontend/home/index.tpl -> umbenennen in: /frontend/home/index.tpl_old -> Cache löschen und Website neu laden -> Ergebnis: Funktioniert nicht, d.h. die Website ist _nicht_ kaputt! Eigentlich müsste jetzt die Startseite, die auf das “home”-Template zugreift, kaputt sein. Ist sie aber nicht. Alles wird (trotz Cacheleerung) normal angezeigt.[/quote] Das funktioniert mit den Ordner exakt wie es soll. Ich habe templates/_emotion/frontend/home/index.tpl umbenannt Dann folgt der Fallback auf _default, da unter _emotion nichts mehr gefunden wird. Das übrigens ohne irgendeinen Cache zu leeren. Das greift direkt! Dann habe ich unter templates/_default/frontend/home/index.tpl ebenfall umbenannt Das führt dann direkt zu einem Fehler im Frontend, da nichts mehr geladen werden kann --> Unable to load template snippet Ein Problem/Fehler kann ich also im Moment wirklich nicht feststellen. Unabhängig davon gibt es ja viele weitere Faktoren, die dort einfach eine Rolle spielen können, z.B. ein aktives Plugin, welches den Ursprungsblock überschreibt. Dann kann man so direkt im Standard-Template bzw. den Standarddateien nicht mehr viel machen. PS: Bei den Einkaufswelten gibt es einige Besonderheiten, da die absolut positioniert sein müssen, damit die Mapping etc. sauber genutzt werden können. Dort etwas umpositionieren kann daher etwas schwieriger sein, wenn du das gerade versuchst.

Hallo, Einkaufswelten nutze ich nicht und Plugins auch nicht. Es handelt sich um das ganz normale Basissystem. Ich habe Ihnen Näheres einmal kurz per PM mitgeteilt. Nachtrag: Soeben fiel mir auf, dass doch ein Plugin aktiv war und die Einstellungen in den individuellen home-Ordnern offensichtlich überschrieb bzw. ignorierte. Es handelt sich hierbei um ein SW-Plugin, um im emotion-Template die linke Menüleiste zu reaktivieren. Ohne dieses Plugin funktioniert der Vererbungsfallback erwartungsgemäß. Ein Problem geklärt. :wink: Dennoch bleibt die Frage, warum der Header anscheinend _immer_ über andere Elemente aus dem wrapper bzw. dem content-Bereich gelagert wird und Inhalte aus dem content demnach verdeckt, wenn sie per CSS nach oben, in den Header, verschoben werden.

Hallo, jetzt verfolgte ich einen neuen Ansatz. Im index-Template des home-Ordners findet sich u.a. dieser Block: {\* Promotion \*} {block name='frontend\_home\_index\_promotions'} {action module=widgets controller=emotion action=index categoryId=$sCategoryContent.id controllerName=$Controller} {/block} WICHTIG: Dieser Block verweist auf das /_default/home/index.tpl (das hatte ich nämlich übersehen). Dort findet sich u.a. der Block: {block name='frontend\_home\_index\_banner'} {\* Banner \*} {include file='frontend/listing/banner.tpl'} {/block} Damit kann man die eingestellten Banner anzeigen. Das klappt zunächst einmal auch ganz gut. Nun möchte ich diesen Block an einer anderen Stelle im Quellcode ausgeben, um damit code- und (css)-Schicht-Positionsmäßig oberhalb des Headers zu sein. In meinem index-Template des index-Ordners lege ich folgenden Code an: [code] {extends file=‘parent:frontend/home/index.tpl’} {block name=‘frontend_index_no_script_message’ append}

{block name=‘frontend_home_index_banner’} {* Banner *} {include file=‘frontend/listing/banner.tpl’} {/block}
{/block} [/code] Nun habe ich noch die Anzeige im Hauptinhaltsbereich entfernt. Ein bisschen CSS angewandt und alles ist bestens. Also eigentlich doch recht einfach. Man könnte es Flüchtigkeitsfehler nennen. :wink: Im Grunde hatte ich nur übersehen, nach der Templatehierarchieebenen “emotion” noch eine Ebene höher zu denken, zu _default. Problem gelöst. Tag zu Ende. :wink: