Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Crosssell Produkte auf Produktdetailseite anzeigen
 
paravista
Member
 
Total Posts:  63
Joined:  2008-03-11
 

Hallo zusammen,

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.

Hat da jemand ne Idee?

Vielen Dank schon mal im Voraus!
Gruß
Michael

 
Magento Community Magento Community
Magento Community
Magento Community
 
ds_1984
Mentor
 
Avatar
Total Posts:  3116
Joined:  2008-12-09
Potsdam, Germany
 

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.

LG - Daniel

 
Magento Community Magento Community
Magento Community
Magento Community
 
paravista
Member
 
Total Posts:  63
Joined:  2008-03-11
 

Hallo Daniel,

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:

<block type="catalog/product_list_related" name="catalog.product.related" as="related_products" template="catalog/product/list/related.phtml"/>
                <
block type="catalog/product_list_upsell" name="product.info.upsell" as="upsell_products" template="catalog/product/list/upsell.phtml"/>
                <
block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell" template="checkout/cart/crosssell.phtml"/>

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.

Vielen Dank für Dein Hilfe!

Liebe Grüße
Michael

 
Magento Community Magento Community
Magento Community
Magento Community
 
ds_1984
Mentor
 
Avatar
Total Posts:  3116
Joined:  2008-12-09
Potsdam, Germany
 

Naja, wie ich sehe ist dieses Template tatsächlich vom Checkot abhängig:

<block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell" template="checkout/cart/crosssell.phtml"/>

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:

<block type="catalog/product_list_crosssell" name="catalog.product.crosssell" as="crosssell" template="catalog/product/list/crosssell.phtml"/>

Ich würde es auf jeden Fall mal so probieren um deinen Ziel da näher zu kommen.

Liebe Grüße - Daniel

 
Magento Community Magento Community
Magento Community
Magento Community
 
paravista
Member
 
Total Posts:  63
Joined:  2008-03-11
 

Hallo Daniel,

nochmals vielen Dank dass Du Dich dem Problem annimmst.

<block type="catalog/product_list_crosssell" name="catalog.product.crosssell" as="crosssell" template="catalog/product/list/crosssell.phtml"/>

muss wohl eher so laute:

<block type="checkout/cart_crosssell" name="catalog.product.crosssell" as="crosssell" template="catalog/product/list/crosssell.phtml"/>

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 :-(

Liebe Grüße
Michael

 
Magento Community Magento Community
Magento Community
Magento Community
 
ds_1984
Mentor
 
Avatar
Total Posts:  3116
Joined:  2008-12-09
Potsdam, Germany
 

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?

LG - Daniel

 
Magento Community Magento Community
Magento Community
Magento Community
 
paravista
Member
 
Total Posts:  63
Joined:  2008-03-11
 

Hallo Daniel,

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…

Liebe Grüße
Michael

 
Magento Community Magento Community
Magento Community
Magento Community
 
andyhausmann
Jr. Member
 
Total Posts:  3
Joined:  2011-09-06
 

Ich habe es an’s rennen bekommen.

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:

Hier mein Layout-Update:

<layout version="0.1.0">
    <
catalog_product_view>
        <
reference name="content">
            <
block type="catalog/product_view" name="catalog.product.crosssell" as="crosssell" template="catalog/product/view/crosssell.phtml"/>
        </
reference>
    </
catalog_product_view>
</
layout>

Hier der Code des Templates:

<?php $_helper $this->helper('catalog/output'); ?>
<?php $_product 
$this->getProduct(); ?>

<?php 
if($_crossSellProducts $_product->getCrossSellProducts()): ?>

    
<div class="crosssell">
        <
h2><?php echo $this->__('Based on your selection, you may be interested in the following items:'?></h2>

        <
ul id="crosssell-products-list">
        
<?php foreach ($_crossSellProducts as $_item): ?>

            <?php $_item 
Mage::getModel('catalog/product')->load($_item->getId()); ?>

            
<li class="item">
                <
class="product-image" href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_item->getName()) ?>">
                    <
img src="<?php echo $this->helper('catalog/image')->init($_item, 'thumbnail')->resize(75); ?>" width="75" height="75" alt="<?php echo $this->htmlEscape($_item->getName()) ?>" />
                </
a>
                <
div class="product-details">
                    <
h3 class="product-name">
                        <
strong>Name:</strong> <a href="<?php echo $_item->getProductUrl() ?>"><?php echo $this->htmlEscape($_item->getName()) ?></a>
                    </
h3>
                    
<?php echo $this->getPriceHtml($_itemtrue?>
                    
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="btn btn-primary" onclick="setLocation('<?php echo $this->getAddToCartUrl($_item) ?>')">
                        <
class="icon-shopping-cart icon-white"></i> <span><span><?php echo $this->__('Add to Cart'?></span></span>
                    </
button>
                </
div>
            </
li>

        
<?php endforeach; ?>
        
</ul>

        <
script type="text/javascript">decorateList('crosssell-products-list''none-recursive')</script>
    
</div>

<?php endif; ?>

Ich werde noch versuchen das Ganze in ein Tab zu migrieren.

 
Magento Community Magento Community
Magento Community
Magento Community
 
loeffel
Guru
 
Avatar
Total Posts:  427
Joined:  2009-02-03
 

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)

<?php if($_item->isSaleable()): ?>
 
Magento Community Magento Community
Magento Community
Magento Community
 
Shopwerft
Jr. Member
 
Avatar
Total Posts:  12
Joined:  2012-12-07
Hamburg, Germany
 

Hallo!

Ich könnte noch eine komfortable Lösung für diejenigen anbieten, die das Cross-Selling gerne auf der Artikelseite haben und die Einträge nicht manuell pflegen möchten. Unser Magento-Modul “Automatisches Cross-Selling” berechnet aus den vorherigen Bestellungen die zusammen gekauften Artikel und legt diese in einem eigenen Index ab. Im Frontend werden diese dann performant ausgelesen und auf der Artikelseite dargestellt.

Zusätzlich kann man über das klassische Cross-Selling von Magento die Anzeige von Artikeln erzwingen. Das Modul funktioniert sofort, einfach installieren, Index aufbauen und läuft. Man benötigt allerdings ein paar Bestellungen als Datengrundlage smile

Hier die Magento-Extension “Automatisches Cross-Selling” mit einer ausführlichen Konfigurationsanleitung. Da sind alle Details drin erläutert:
http://www.modulwerft.com/magento-automatisches-cross-selling.html

Freue mich über Feedback!

Beste Grüße aus Hamburg
Benjamin

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top