ich versuche gerade zu einem Produkt verschiedene “Zubehörarten” durch Reiter getrennt anzuzeigen. Für die verschiedenen Zubehörarten mißbrauche ich “related”, “upsell” und “crosssell”.
Das klappt bisher einwandfrei mit “related” und “upsell” nur eben nicht mit “crosssell” da dieser Aufruf wohl erst erfolgt sobald sich ein Produkt im Warenkorb bedindet.
Gibt es nun einen Möglichkeit den Aufruf für die crosssell Anzeige ebenso wie z.B. related bei der Anzeige eines Einzelnen Produkts auszuführen?
Files die ich dafür bearbeitet habe sind: .../template/catalog/product/view.phtml, .../template/checkout/cart/crosssell.phtml und .../mage/catalog/block/product/list/Crosssell.php
Für mich sieht der Aufbau der Releted.php sehr identisch mit der Crosssell.php aus.
Welche dieser Dateien geladen wird, entscheidet sich in der catalog.xml & checkout.xml - somit kannst du dir das so basteln wie du möchtest.
Ansonsten ist es ziemlich normal das Crosssell im Warenkorb angezeigt wird - schau mal in die checkout.xml und be Bedraf kannst du da ja die jenige Laden lassen die du möchtest.
Es macht aber im allgemeinen, wenig Sinn diese verschiedenen Abverkaufsarten ganz anders auszugeben wie vorgesehen.
erst mal vielen Dank für Dein Engagement hier im Forum!
Damit related, upsell und crosssell auch unterhalb meines Produkts erscheinen, habe ich folgendes in die catalog.xml in der Section Product View unter content eingefügt:
Wie gesagt, related und upsell werden einwandfrei angezeigt, nur crosssell erst wenn das Produkt zumindest im Mini-Warenkorb liegt. Dann aber auch auf der Produkt-Detailseite.
Über die Zweckentfremdung von crosssell läßt sich sicher streiten, aber wenn man dies Funktion defacto nicht an der Stelle Warenkorb benötigt, ist dies doch ein sehr konfortabler Weg ohne eigene Extension zugehörige Produkte mit anzeigen zu lassen.
Damit es vielleicht verständlicher wir: Wir haben zu jedem Produkt Zubehör, Software und Kalibrierungsdienstleistungen. Somit ist es auf diesem Weg schön ersichtlich welche Zusatzprodukte ich gleich zu meinem Hauptprodukt alles hinzubuchen kann.
Primär geht es mir also derzeit darum die Crosssell Anzeige anstoßen zu können ohne dass vorher erst ein Produkt in den Warenkorb muss.
Hast du schon versucht unter app/design/frontend/default/default/template/catalog/product/list/ eine neue crosssell.phtml zu erstellen - mit Inhalten der Original-Datei? Nach Möglichkeit, sollte die Datei hier dann so aufgebaut sein wie die related oder so, damit du auch die gleiche Optik hast.
Diese könnte ja dann wie folgt in die catalog.xml eingebunden werden, wenn ich nicht ganz auf den Kopf gefallen bin:
Sonst müsste ja hinter catalog/product_list_crosssell eine PHP Class catalog/product/list/crosssell.php stehen und die müsste hier erst geschrieben werden. Mit dem eigenem Template geht’s, aber wie zuvor auch schon, erst sobald das Produkt im Mini-Warenkorb ist.
Die Template-Einbindung erfolgt bereits vor dem Legen des Produkts in den Warenkorb. Nur die Upsell Produkte werden leider erst danach angezeigt :-(
Na eigentlich war das beabsichtigt was ich geschrieben habe - möchtest du nicht die Crosssells auf der Artikelseite einbinden, die sonst erst im Checkout kommen?
das Crosssell Template wird ja auch schon eingebunden. Nur der “Impluse” zum Auflisten der Crossselling Produkte kommt erst nach dem man das Produkt in den Mini-Warenkorb gelegt hat.
Der “type” im XML Layout gibt meines Wissens ja lediglicht den Pfad + Name der PHP Classe an. Und wenn ich diesen ändern würde, müsste ich an der gegebenen Stelle ja eine neue PHP Classe erstellen.
Das Template zieht er sich also unabhängig schon richtig auf die Produktseite.
Nur in dieses foreach im crosssell.phtml geht er erst rein, wenn das bzw. irgendein Produkt im Warenkorb liegt:
foreach ($this->getItems() as $_item):
Warum, konnte ich bisher nicht rausfinden. Der Aufbau bei related ist nämlich nahezu identisch…
Das Problem ist allgemein, dass Cross Selling Products erst im Warenkorb zu tragen kommen - warum auch immer. Für die Product Single View muss man es anscheinend selbst bauen, da die crosssell.phtml direkt schon zu Beginn abfragt, ob der Warenkorb Artikel besitzt.
Um das zu umgehen, erbt mein neuer Block von catalog/product_view. Einige Abfragen habe ich dann von Warenkorb- auf Artikel-Ebene umgestellt. Hier die Lösung:
Danke euch, habe das ganze im Sidebar auf der Produktansicht eingebunden und funktioniert wirklich super!
Um nur verfügbare Produkte anzuzeigen, habe ich vor dem <li> folgendes eingefügt (nach dem </li> wieder zugehen lassen)