Einkaufswelt in Unterkategorien wenn keine definiert

hi, da wir relativ viele Unterkategorien haben, möchte ich nicht für alle eine Einkaufswelt erstellen. Ich hätte es gern so, dass die Erstellte Einkaufwelt auch in allen Unterkategorien angezeigt wird, ausser es ist eine Einkaufswelt für die Unterkategorie definiert. Ist das möglich? ich habe nicht gefunden wo die Kategorie-Id abgefragt wird. Hat hier evtl. jemand eine Lösung? vielen Dank,

Aus Source Code von Shopware_Controllers_Frontend_Listing::indexAction … // Check if is a emotion grid is active for this category $emotion = Shopware()->Db()->fetchRow(" SELECT e.id, e.show_listing FROM s_emotion_categories ec, s_emotion e WHERE ec.category_id = ? AND e.id = ec.emotion_id AND e.is_landingpage = 0 AND (e.valid_to >= NOW() OR e.valid_to IS NULL) ", array($categoryId)); $hasEmotion = !empty($emotion[‚id‘]); $showListing = !$hasEmotion || !empty($emotion[‚show_listing‘]); … Emotion Grid aus Vaterkategorie zu übernehmen ist nicht vorgesehen, da braucht man eigene Umsetzung… Ich denke man kann diese Action einfach überschreiben in eigenen Plugin mit z.B. $this->subscribeEvent( ‚Enlight_Controller_Action_Frontend_Listing_Index‘, ‚onListingIndex‘ ); Function onListingIndex: $listingCtrl = $arguments->getSubject(); --> Dann kann man originale Code verwenden und o.g. Logik überschreiben … Nur so gedacht, nicht probiert… Hätte gerne wissen ob es tut :wtf:

hi, danke für’s raussuchen des Schnipsels. Ich werd das nachher mal testen und dann berichten… Gruß,

ok, ich hab jetzt mal ein kurzen Test gemacht: [...] $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_Frontend\_Listing\_Index', 'onListingIndex' ); [...] public function onListingIndex(Enlight\_Event\_EventArgs $arguments) { /\*\* @var $enlightController Enlight\_Controller\_Action \*/ $controller = $arguments-\>getSubject(); $view = $controller-\>View(); Shopware()-\>Log()-\>log('hello listing' ,Zend\_Log::INFO); Shopware()-\>Log()-\>log($view-\>hasEmotion ,Zend\_Log::INFO); } ‘hello listing’ wird mir ausgegeben, Event ist also korrekt registriert. $view->hasEmotion ist immer NULL auch wenn es eigentlich 1 ist. Ich kann mir irgendwie gar keine Variablen aus dem View ausgeben lassen. Entweder hier stimmt was nicht oder ich stehe gerade gewaltig auf dem Schlauch. Was mir dabei noch aufgefallen ist, wenn ich in einer Kategorie mit Emotion auf die 2. Seite blättere, wird Emotion nicht mehr angezeigt. Ist das so gewollt?

ok, event muss natürlich auf Enlight_Controller_Action_PostDispatch registriert werden. Bleibt die Frage warum die Einkaufswelten nur auf der ersten Seite der Kategorien angezeigt werden…

Hi, Ja das ist gewollt. Eine Einkaufswelt wird dem eigentlichen Listing vorgeschaltet. Das war auch in den Vorgängerversionen bereits so. Standardmäßig werden Banner und Kategorietexte auf Folgeseiten angezeigt. Einkaufswelten nicht. Die sind ja für den Einstieg in eine Kategorie oder Themenwelt gedacht. Sebastian

[quote=“hbee”] Bleibt die Frage warum die Einkaufswelten nur auf der ersten Seite der Kategorien angezeigt werden…[/quote] Das ist leider ein bekannter Bug oder ein Feature - man weiß es nicht so genau ;). Bis 4.0.8 erscheint anstatt der Einkaufswelt dann auch immer wieder der Kategorie-CMS-Text und der Topsellerslider. In 4.1 habe ich letzeres noch nicht getestet. templates-und-design-f57/gelost-kategorietext-uber-die-tagwolke-t13049.html?hilit=Kategorie%20Topseller#p60769 Viele Grüße H. Thomas Edit: Na gut ein Feature. Allerdings ist das in den letzten Wochen schon mehr als ein Mal hier im Forum moniert worden. Und meine Kunden finden das auch nicht nachvollziehbar, wobei ich mich hier anschließen möchte. Welchen Sinn macht es, ein Layout zu ändern, obwohl man nur eine Sortierung anpasst? Da ist die Reaktion gleich: “Huch, was ist denn jetzt passiert?”, wenn ein dickes Banner verschwindet, ein Text oder Slider neu erscheint. Welche Studie zur Usablitiy unterstützt denn so ein Vorgehen?

hhmm… das finde ich auch seltsam. Mit den Einkaufswelten hatte ich bisher noch nicht zutun, deswegen ist mir das nie aufgefallen. Dass sie auf Unterkategorien nicht vererbbar sind, kann ich noch halbwegs nachvollziehen. Warum sie aber beim blättern oder sortieren verschwinden verstehe ich nicht. Ich befinde mich dann doch immer noch in der gleichen Kategorie. Dann kann ich das also nur über die Banner lösen?

Hallo, wenn beim Blättern Infos stehen bleiben sollen, dann kann man das wie bereits geschrieben, mit Bannern udn Kategorie Infos/Texten machen. Die Einkaufswelt/Emotion hat den Sinn, eine Seite vorzuschalten. Den Kunden somit auf die Kategorie oder Themenwelt einzustimmen und den perfekten Einstieg zu ermöglichen. Eine Einkaufswelt ist meistens Seiten-füllend - also sehr groß und generell in der Anwendung eher ungeeignet immer über dem Listing anzuzeigen. Das die Einkaufswelt immer komplett stehenbleibt auf jeder Seite ist nicht Sinn der Einkaufswelt. Viele Grüße Sebastian

[quote=“Sebastian Klöpper”]Hallo, wenn beim Blättern Infos stehen bleiben sollen, dann kann man das wie bereits geschrieben, mit Bannern udn Kategorie Infos/Texten machen. Die Einkaufswelt/Emotion hat den Sinn, eine Seite vorzuschalten. Den Kunden somit auf die Kategorie oder Themenwelt einzustimmen und den perfekten Einstieg zu ermöglichen. Eine Einkaufswelt ist meistens Seiten-füllend - also sehr groß und generell in der Anwendung eher ungeeignet immer über dem Listing anzuzeigen. Das die Einkaufswelt immer komplett stehenbleibt auf jeder Seite ist nicht Sinn der Einkaufswelt. Viele Grüße Sebastian[/quote] Hallo, ob eine Einkaufwelt seitenfüllend ist oder nicht, obliegt doch wohl dem Shopinhaber. Einfach zu behaupten, dies sei generell der Fall, kann ich wirklich nicht nachvollziehen. Wäre es tatsächlich so, dass eine Einkaufwelt oberhalb eines Kategorielistings nicht sinnvoll ist, warum ist dann überhaupt die Funktion vorhanden? Der große Vorteil des Einkaufwelten-Konzepts ist es, jederzeit durch einfach zu erlernende Bedienkonzepte eine visuelle Ergänzung, Änderung oberhalb eines Kategorielistings, einer Landingpages oder der Startseite zu ermöglichen. Damit kann der Shopinhaber schnell auf neue Ideen reagieren. Ich halte dies für das Alleinstellungsmerkmal von Shopware im Vergleich zu anderen System und diese Einschätzung ist mir schon mehrfach von Shopwechslern bestätigt worden. Die Kategorie-CMS Funktion kann auf der anderen Seite dazu genutzt werden, etwas längere Texte zur Information an das Ende des Kategorielisting zu setzen. Der Wunsch ist ebenfalls an mich heran getragen worden und auch hier im Forum mehrfach aufgetaucht. Die Einkaufwelt kann dann dazu dienen, individuelle Banner/Slider an den Anfang des Kategorielistings zu setzen. Wiederum individuell steuerbar durch einen Shopredakteur. Ich versteh wirklich nicht, warum Shopware diesen Vorteil mutwillig zerstört, indem Einkaufwelten einfach ausgeschaltet werden - ohne Vorwarnung im Übrigen. Das Ein/Ausschalten der Einkaufwelten durch den Callback beim Sortieren lässt sich doch ohne großen technischen Aufwand mit einer Zusatzvariablen je Einkaufswelt optional gestalten. Dann kann jeder nach seiner Gestaltungsvorstellung glücklich werden. Wo wir schon mal am diskutieren sind: Warum sind bei Bankverbindungen keine SEPA-Felder vorgesehen, wenn man Übersetzungen als besonderes Feature anpreist? Warum fällt niemandem auf, dass Varianten nicht korrekt übersetzt ausgegeben werden? Viele Grüße Holger Thomas

Moin, ich kann mich da hth nur anschliessen. Wir benutzen die Einkaufswelten nicht nur als Einstieg sondern auch für Werbemaßnahmen oder Informationen für den Kunden etc. Da ist man mit dein Einkaufswelten viel flexibler und kann sie auch noch durch eigene Komponenten erweitern. Die Banner sind viel zu statisch für diesen Einsatz. Ich bin eigentlich davon ausgegangen, dass sie beim Blättern/Sortieren stehen bleiben und bin jetzt total verwundert da es so m.E. gar keinen Sinn macht – zumindest nicht, wenn man die Option “Kategorie Listing wird unterhalb der Einkaufswelt sichtbar” auswählt. viele Grüße,

Hallo Ich habe gerade versucht eine „Einkaufswelt Vererbung“ , technischerweise ist das ja kein Problem, neben dem Plugin muss man noch in Template File „_emotion\frontend\listing\promotions.tpl“ etwas anpassen, aufgerufen wird: {if !$sSupplierInfo && !$sSupplierInfo.id && $hasEmotion} {action module=widgets controller=emotion action=index categoryId=$sCategoryContent.id controllerName=$Controller} {/if} die Variable $sCategoryContent.id muss angepasst übergeben werden , denn hier die ID soll aus ParentCategory statt currentCategory kommen…

[quote=“hbee”]Moin, ich kann mich da hth nur anschliessen. Wir benutzen die Einkaufswelten nicht nur als Einstieg sondern auch für Werbemaßnahmen oder Informationen für den Kunden etc. Da ist man mit dein Einkaufswelten viel flexibler und kann sie auch noch durch eigene Komponenten erweitern. Die Banner sind viel zu statisch für diesen Einsatz. Ich bin eigentlich davon ausgegangen, dass sie beim Blättern/Sortieren stehen bleiben und bin jetzt total verwundert da es so m.E. gar keinen Sinn macht – zumindest nicht, wenn man die Option “Kategorie Listing wird unterhalb der Einkaufswelt sichtbar” auswählt. viele Grüße,[/quote] Hallo hbee, Die Möglichkeit die Einkaufswelten nach dem Sortieren & Blättern stehen zu bleiben finde ich auch sinnvoll. Aber ich denke es würde problematisch wenn eine “Einkaufswelt-Vererbung” als default implementiert würde. Wenn z.B. in Vaterkategorie die Einkaufswelt so etwa 900px hoch, und alle Unterkategorien keine eigene Einkaufswelt definiert und die Vererbung nicht blockieren könnten, dann müssten die Besucher bei jeder Unterkategorieseite zuerst scrollen & scrollen … um überhaupt Artikel sehen zu können. Als Beispiel die Demoshop Freizeitwelten-Seite…

[quote=“Parker”]Hallo Ich habe gerade versucht eine “Einkaufswelt Vererbung” , technischerweise ist das ja kein Problem, neben dem Plugin muss man noch in Template File “_emotion\frontend\listing\promotions.tpl” etwas anpassen, aufgerufen wird: {if !$sSupplierInfo && !$sSupplierInfo.id && $hasEmotion} {action module=widgets controller=emotion action=index categoryId=$sCategoryContent.id controllerName=$Controller} {/if} die Variable $sCategoryContent.id muss angepasst übergeben werden , denn hier die ID soll aus ParentCategory statt currentCategory kommen…[/quote] hi, ich habe das ganze jetzt als Plugin für die Banner umgesetzt. Das klappt wunderbar und ich denke dass ich das auch so oder so ähnlich für die Einkaufswelten umsetzen kann. Das Problem bleibt hier das Verschwinden der Einkaufswelten beim Blättern/Sortieren. Das zu verhindert habe ich noch nichts gefunden. Die Vererbung soll übrigens nur stattfinden, wenn keine Einkaufswelt für diese Kategorie eingestellt wurde. Also nicht generell vom Parent erben…

[quote=“Parker”] Hallo hbee, Die Möglichkeit die Einkaufswelten nach dem Sortieren & Blättern stehen zu bleiben finde ich auch sinnvoll. Aber ich denke es würde problematisch wenn eine “Einkaufswelt-Vererbung” als default implementiert würde. Wenn z.B. in Vaterkategorie die Einkaufswelt so etwa 900px hoch, und alle Unterkategorien keine eigene Einkaufswelt definiert und die Vererbung nicht blockieren könnten, dann müssten die Besucher bei jeder Unterkategorieseite zuerst scrollen & scrollen … um überhaupt Artikel sehen zu können. Als Beispiel die Demoshop Freizeitwelten-Seite…[/quote] Hi, ja das müsste natürlich einstellbar sein. MAcht sicherlich nicht immer Sinn die Emotions zu vererben.

[quote=“hbee”]Das Problem bleibt hier das Verschwinden der Einkaufswelten beim Blättern/Sortieren. Das zu verhindert habe ich noch nichts gefunden. [/quote] Das passiert in Listing Controller Shopware_Controllers_Frontend_Listing::indexAction if (!$this-\>Request()-\>getQuery('sSupplier') && !$this-\>Request()-\>getQuery('sPage') && !$this-\>Request()-\>getQuery('sFilterProperties') && !$this-\>Request()-\>getParam('sRss') && !$this-\>Request()-\>getParam('sAtom') ) { // Check if is a emotion grid is active for this category $emotion = Shopware()-\>Db()-\>fetchRow(" SELECT e.id, e.show\_listing FROM s\_emotion\_categories ec, s\_emotion e WHERE ec.category\_id = ? AND e.id = ec.emotion\_id AND e.is\_landingpage = 0 AND (e.valid\_to \>= NOW() OR e.valid\_to IS NULL) ", array($categoryId)); $hasEmotion = !empty($emotion['id']); und die Codes && !$this-\>Request()-\>getQuery('sPage') && !$this-\>Request()-\>getQuery('sFilterProperties') verhindert das Fetchen von Emotions …

ah, wohl etwas blind gewesen. das sollte ja zu patchen sein… danke.