Domanda

Non crederesti quanto tempo ho passato a fare ricerche/cercare di far sì che ciò accadesse.Tutto quello che voglio è che venga visualizzata una pagina in più nel processo di ordinazione dopo la pagina del prodotto chiedendo al cliente quali prodotti di cross-sell vogliono aggiungere al loro ordine (lo chiamerei up-sell ma immagino che Magentogergo è "vendita incrociata").Trovo davvero incredibile che più aziende non lo vogliano (penso che l'"up-selling" possa aumentare notevolmente i profitti e ciò che è integrato in Magento non funziona così bene (ho più di 20 prodotti "Cross-sell" e loronon si adattano nemmeno/mostrano lì).

Sto usando Magento ver.1.9.1.0.

Ho appena installato il tema Porto n. 11 se questo fa la differenza

NUOVE INFORMAZIONI: ho cercato di implementarlo ma finora non ho avuto fortuna.Ho anche qualcuno che mi aiuta ora, ma non riusciamo a capirlo.Qualcuno può per favore dare istruzioni passo passo su come farlo?(QUALSIASI soluzione sarebbe molto apprezzata) .

Mi piacerebbe che funzionasse in modo simile a quello che ha proflowers.com (vedi lo screenshot allegato): enter image description here

Hanno questa pagina visualizzata come passaggio successivo DOPO che il cliente ha aggiunto un prodotto al carrello (fai clic su PROCEDI AL CHECKOUT)

Tutti i prodotti cross-sell sono SEMPRE uguali per tutti (ogni prodotto ordinato)


Modificato il 15 novembre 2016:

La soluzione che ha ottenuto la reputazione 100 funziona davvero.Chiunque tenti di fare quello che sto cercando di fare dovrebbe scaricare i file e caricarli nella directory principale, quindi aggiungere il seguente codice nel file app/code/community/TM/SuggestPage/controllers/IndexControlle‌​‌​r.php :

$block2 =  $this->getLayout()->createBlock('checkout/cart_coupon')->setTemplate('checkout/cart/coupon.phtml');
$this->getLayout()->getBlock('content')->append($block2);

Sto ancora cercando di capire come visualizzare 12 prodotti nella pagina speciale Cross-sell invece di solo 4. Secondo @MurtuzaZabuawala - questo dovrebbe essere fatto modificando il file crosssell.phtml in:

app/design/frontend/YourPackge/YourTheme/checkout/cart/

Ho trovato il mio crossell.phtml qui :

/public_html/app/design/frontend/smartwave/porto/template/checkout/cart

(Spero che sia quello giusto - ho installato il tema Porto)

Ecco come appare:

<?php
/**
 * Cart cross sell items template
 *
 * @see Mage_Checkout_Block_Cart_Crosssell
 */
$store = Mage::app()->getStore();
$code  = $store->getCode();
$aspect_ratio = Mage::getStoreConfig("porto_settings/category/aspect_ratio",$code);
$ratio = ($aspect_ratio || (!$aspect_ratio && Mage::getStoreConfig("porto_settings/category/ratio_width",$code) == 0))?1:(Mage::getStoreConfig("porto_settings/category/ratio_height",$code)/Mage::getStoreConfig("porto_settings/category/ratio_width",$code));
?>
<?php if($this->getItemCount()): ?>
<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" class="row">
    <?php foreach ($this->getItems() as $_item): ?>
        <li class="item col-sm-6 col-md-3">
            <a class="product-image" href="<?php echo $_item->getProductUrl() ?>" title="<?php echo $this->escapeHtml($_item->getName()) ?>"><img src="<?php echo $this->helper('catalog/image')->init($_item, 'thumbnail')->resize(84,84*$ratio); ?>" width="84" height="<?php echo 84*$ratio ?>" alt="<?php echo $this->escapeHtml($_item->getName()) ?>" /></a>
            <div class="product-details">
                <h3 class="product-name"><a href="<?php echo $_item->getProductUrl() ?>"><?php echo $this->escapeHtml($_item->getName()) ?></a></h3>
                <?php echo $this->getPriceHtml($_item, true) ?>
                <button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_item) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                <ul class="add-to-links">
                    <?php if ($this->helper('wishlist')->isAllow()) : ?>
                        <li><a href="<?php echo $this->getAddToWishlistUrl($_item) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                    <?php endif; ?>
                    <?php if($_compareUrl=$this->getAddToCompareUrl($_item)): ?>
                        <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li>
                    <?php endif; ?>
                </ul>
            </div>
        </li>
    <?php endforeach; ?>
    </ul>
    <script type="text/javascript">decorateList('crosssell-products-list', 'none-recursive')</script>
</div>
<?php endif; ?>

EDITATO 2 dicembre 2016:

Questa è un'ottima soluzione che funziona perfettamente soprattutto se desideri assegnare diversi prodotti di cross-sell a ciascun prodotto individualmente.Nel mio caso, voglio che tutti i miei prodotti abbiano gli ESATTI STESSI prodotti cross-sell e voglio poterlo cambiare a seconda della stagione, quindi ho deciso di fare il passaggio in più nel check-out (soluzione fornita da MurtuzaZabuawala sotto) mostra i prodotti di una categoria speciale che ho creato proprio per questo motivo.Murtuza Zabuawala ha fatto un ottimo lavoro con.Mi manca solo l'ultimo passaggio qui:

Quando inserisco il codice che dovrebbe visualizzare i prodotti di una categoria specifica:

$block = $this->getLayout()->createBlock('catalog/product_list')->set‌​CategoryId(157)->set‌​Template('catalog/pr‌​oduct/list.phtml'); $this->getLayout()->getBlock('content')->append($block);

Ottengo il seguente messaggio di errore:

> There has been an error processing your request
> 
> 
> SQLSTATE[42000]: Syntax error or access violation: 1064 You have an
> error in your SQL syntax; check the manual that corresponds to your
> MySQL server version for the right syntax to use near ')' at line 1,
> query was: SELECT `mg_catalog_category_entity`.* FROM
> `mg_catalog_category_entity` WHERE (entity_id =)
> 
> Trace:
> #0 /home/mystore/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110):
> Zend_Db_Statement_Pdo->_execute(Array)
> #1 /home/mystore/public_html/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
> #2 /home/mystore/public_html/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
> #3 /home/mystore/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238):
> Zend_Db_Adapter_Abstract->query('SELECT `mg_cata...', Array)
> #4 /home/mystore/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `mg_cata...', Array)
> #5 /home/mystore/public_html/lib/Zend/Db/Adapter/Abstract.php(756): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
> #6 /home/mystore/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php(943):
> Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
> #7 /home/mystore/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php(698):
> Mage_Eav_Model_Entity_Abstract->load(Object(Mage_Catalog_Model_Category),
> Object(Mage_Catalog_Model_Category), NULL)
> #8 /home/mystore/public_html/app/code/core/Mage/Core/Model/Abstract.php(225):
> Mage_Catalog_Model_Resource_Abstract->load(Object(Mage_Catalog_Model_Category),
> Object(Mage_Catalog_Model_Category), NULL)
> #9 /home/mystore/public_html/app/code/core/Mage/Catalog/Block/Product/List.php(80):
> Mage_Core_Model_Abstract->load(Object(Mage_Catalog_Model_Category))
> #10 /home/mystore/public_html/app/code/core/Mage/Catalog/Block/Product/List.php(142):
> Mage_Catalog_Block_Product_List->_getProductCollection()
> #11 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(918):
> Mage_Catalog_Block_Product_List->_beforeToHtml()
> #12 /home/mystore/public_html/app/code/core/Mage/Core/Block/Text/List.php(43):
> Mage_Core_Block_Abstract->toHtml()
> #13 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(919):
> Mage_Core_Block_Text_List->_toHtml()
> #14 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(637):
> Mage_Core_Block_Abstract->toHtml()
> #15 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(581):
> Mage_Core_Block_Abstract->_getChildHtml('content', true)
> #16 /home/mystore/public_html/app/design/frontend/smartwave/porto/template/page/1column.phtml(49):
> Mage_Core_Block_Abstract->getChildHtml('content')
> #17 /home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(241):
> include('/home/mystore/pu...')
> #18 /home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(272):
> Mage_Core_Block_Template->fetchView('frontend/smartw...')
> #19 /home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(286):
> Mage_Core_Block_Template->renderView()
> #20 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(919):
> Mage_Core_Block_Template->_toHtml()
> #21 /home/mystore/public_html/app/code/core/Mage/Core/Model/Layout.php(555):
> Mage_Core_Block_Abstract->toHtml()
> #22 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(390):
> Mage_Core_Model_Layout->getOutput()
> #23 /home/mystore/public_html/app/code/community/TM/SuggestPage/controllers/IndexController.php(32):
> Mage_Core_Controller_Varien_Action->renderLayout()
> #24 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(418):
> TM_SuggestPage_IndexController->indexAction()
> #25 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250):
> Mage_Core_Controller_Varien_Action->dispatch('index')
> #26 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172):
> Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
> #27 /home/mystore/public_html/app/code/core/Mage/Core/Model/App.php(354):
> Mage_Core_Controller_Varien_Front->dispatch()
> #28 /home/mystore/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
> #29 /home/mystore/public_html/index.php(87): Mage::run('', 'store')
> #30 {main}

mio

app/code/community/TM/SuggestPage/controllers/IndexControlle‌​‌​r.php

Somiglia a questo:

<?php

class TM_SuggestPage_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()


{

    $this->loadLayout()
        ->_initLayoutMessages('checkout/session')
        ->_initLayoutMessages('catalog/session');



$block2 =  $this->getLayout()->createBlock('checkout/cart_coupon')->setTemplate('checkout/cart/coupon.phtml');
$this->getLayout()->getBlock('content')->append($block2);


    $_product = Mage::getModel('catalog/product')->load(1); //here 1 is product Id
    $block = $this->getLayout()->createBlock('catalog/product_list')->set‌​CategoryId(157)->set‌​Template('catalog/pr‌​oduct/list.phtml'); $this->getLayout()->getBlock('content')->append($block);



    $this->renderLayout();
    }
}

Quando ho provato invece il seguente codice (in: app/code/community/TM/SuggestPage/controllers/IndexControlle‌​‌​r.php ):

**

$category = Mage::getModel('catalog/category')->load(190);  
   $block = $this->getLayout()->createBlock('catalog/product_list')->set‌​Category($category)->set‌​Template('catalog/pr‌​oduct/list.phtml'); $this->getLayout()->getBlock('content')->append($block);

**

  • mi ha dato questo errore :
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your

Versione del server MySQL per la sintassi corretta da utilizzare vicino a ')' alla riga 1, la query era: SELECT mg_catalog_category_entity.* FROM mg_catalog_category_entity WHERE (entity_id =)

Trace:
#0 /home/mystore/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110):

Zend_Db_Statement_Pdo->_execute(Array) #1 /home/mystore/public_html/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array) #2 /home/mystore/public_html/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array) #3 /home/mystore/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT mg_cata...', Array) #4 /home/mystore/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('SELECTmg_cata...', Array) #5 /home/mystore/public_html/lib/Zend/Db/Adapter/Abstract.php(756): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array) #6 /home/mystore/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php(943): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select)) #7 /home/mystore/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php(698): Mage_Eav_Model_Entity_Abstract->load(Object(Mage_Catalog_Model_Category)), Object(Mage_Catalog_Model_Category), NULL) #8 /home/mystore/public_html/app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Catalog_Model_Resource_Abstract->load(Object(Mage_Catalog_Model_Category), Object(Mage_Catalog_Model_Category), NULL) #9 /home/mystore/public_html/app/code/core/Mage/Catalog/Block/Product/List.php(80): Mage_Core_Model_Abstract->load(Object(Mage_Catalog_Model_Category)) #10 /home/mystore/public_html/app/code/core/Mage/Catalog/Block/Product/List.php(142): Mage_Catalog_Block_Product_List->_getProductCollection() #11 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(918): Mage_Catalog_Block_Product_List->_beforeToHtml() #12 /home/mystore/public_html/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml() #13 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Text_List->_toHtml() #14 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml() #15 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true) #16 /home/mystore/public_html/app/design/frontend/smartwave/porto/template/page/1column.phtml(49): Mage_Core_Block_Abstract->getChildHtml('content') #17 /home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(241): include('/home/mystore/pu...') #18 /home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('frontend/smartw...') #19/home/mystore/public_html/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView() #20 /home/mystore/public_html/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Core_Block_Template->_toHtml() #21 /home/mystore/public_html/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml() #22 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput() #23 /home/mystore/public_html/app/code/community/TM/SuggestPage/controllers/IndexController.php(33): Mage_Core_Controller_Varien_Action->renderLayout() #24 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): TM_SuggestPage_IndexController->indexAction() #25 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index') #26 /home/mystore/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) #27 /home/mystore/public_html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch() #28 /home/mystore/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array) #29 /home/mystore/public_html/index.php(87): Mage::run('', 'store') #30 {main}

Error log record number: 573016373867

Il mio Controller.php suppone che assomigli a questo?

<?php


class TM_SuggestPage_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()


{

    $this->loadLayout()
        ->_initLayoutMessages('checkout/session')
        ->_initLayoutMessages('catalog/session');


$block2 =  $this->getLayout()->createBlock('checkout/cart_coupon')->setTemplate('checkout/cart/coupon.phtml');
$this->getLayout()->getBlock('content')->append($block2);


    $_product = Mage::getModel('catalog/product')->load(1); //here 1 is product Id
    $category = Mage::getModel('catalog/category')->load(190);  
   $block = $this->getLayout()->createBlock('catalog/product_list')->set‌​Category($category)->set‌​Template('catalog/pr‌​oduct/list.phtml');

$this->getLayout()->getBlock('content')->append($block);

    $this->renderLayout();
    }
}

EDITATO il 29 dicembre 2016:

La soluzione pubblicata da Murtuza Zabuawala è fantastica!L'unica cosa che devo ancora fare è inserire del codice per richiamare (visualizzare) i prodotti di una categoria specifica invece degli articoli di vendita incrociata effettivi.Qualche idea di come farlo?

È stato utile?

Soluzione

Installa sotto l'estensione che ti aiuterà a creare una pagina extra dopo il carrello

https://github.com/tmhub/suggestpage

sopra l'estensione aggiungi una pagina extra dopo il carrello e quella pagina aggiungerai questo codice e otterrai i dati del prodotto di cross-sell

cambia il tuo indexController indexAction come di seguito

public function indexAction()
{
    $this->loadLayout()
        ->_initLayoutMessages('checkout/session')
        ->_initLayoutMessages('catalog/session');

    $_product = Mage::getModel('catalog/product')->load(1); //here 1 is product Id
    $block =  $this->getLayout()->createBlock('checkout/cart_crosssell')->setProduct($_product)->setTemplate('checkout/cart/crosssell.phtml');
    $this->getLayout()->getBlock('content')->append($block);

    $this->renderLayout();
}

e per il tuo problema con 4 prodotti, controlla nel tuo file app/design/frontend/YourPackge/YourTheme/checkout/cart/crosssell.phtml qualsiasi condizione che si interrompe per il ciclo dopo quattro prodotti, quindi cambialo.

per aumentare il limite di vendita incrociata del prodotto, segui questo rapido passaggio

1) copia il file app/code/core/Mage/Checkout/Block/Cart/Crosssell.php in app/code/local/Mage/Checkout/Block/Cart/Crosssell.php

2) trova questa linea e aumenta il limite secondo le tue necessità protected $_maxItemCount = 4;

Altri suggerimenti

Abbiamo implementato qualcosa su un sito Web di un cliente in cui fai clic su procedi al checkout e arrivi a una pagina prima che ti chieda di aggiungere campioni gratuiti, questi sono estratti da una categoria ma sarebbe altrettanto facile da inserire in un cross-sell/prodotti correlati.

In sostanza, per quanto riguarda il codice, ciò che dovrebbe accadere è che un modulo dovrebbe ascoltare l'evento controller_action_predispatch_checkout_onepage_index e reindirizzare l'utente a una pagina creata da quel modulo con i prodotti richiesti, quindi impostare un flag di sessione per dire che questo utente ha giàvisto questa pagina di up-sell e consenti loro di passare alla cassa.

Non sono sicuro che ci siano moduli là fuori che attualmente lo fanno.

Come breve esempio abbiamo questo come nostro xml:

<controller_action_predispatch_checkout_onepage_index>
    <observers>
        <namespace_module>
            <class>namespace_module/observer</class>
            <method>redirectToUpsellOnCheckout</method>
        </namespace_module>
    </observers>
</controller_action_predispatch_checkout_onepage_index>

Modifica 15/11/16 Ecco cosa ho finora, ha ancora bisogno di alcune modifiche:

app/ecc/moduli/

<?xml version="1.0"?>
<config>
    <modules>
        <Dc_Crosssells>
            <active>true</active>
            <codePool>community</codePool>
        </Dc_Crosssells>
    </modules>
</config>

app/code/community/Dc/Crossells/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Dc_Crosssells>
            <version>0.0.1</version>
        </Dc_Crosssells>
    </modules>
    <global>
        <blocks>
            <dc_crosssells>
                <class>Dc_Crosssells_Block</class>
            </dc_crosssells>
        </blocks>
        <events>
            <controller_action_predispatch_checkout_onepage_index>
                <observers>
                    <dc_crosssells>
                        <class>Dc_Crosssells_Model_Observer</class>
                        <method>controllerActionPredispatchCheckoutOnepageIndex</method>
                    </dc_crosssells>
                </observers>
            </controller_action_predispatch_checkout_onepage_index>
        </events>
    </global>
    <frontend>
        <routers>
            <beforeyoucheckout>
                <use>standard</use>
                <args>
                    <module>Dc_Crosssells</module>
                    <frontName>before-you-checkout</frontName>
                </args>
            </beforeyoucheckout>
        </routers>
        <layout>
            <updates>
                <dc_crosssells>
                    <file>dc/dc_crosssells.xml</file>
                </dc_crosssells>
            </updates>
        </layout>
    </frontend>
</config>

app/code/community/Dc/Crossells/Model/Observer.php

<?php
class Dc_Crosssells_Model_Observer
{
    public function controllerActionPredispatchCheckoutOnepageIndex(Varien_Event_Observer $observer)
    {
        if(Mage::getSingleton('core/session')->getCrossSellFlag()) {
            Mage::app()->getResponse()->setRedirect(Mage::getBaseUrl() . 'before-you-checkout');
            Mage::getSingleton('core/session')->setCrossSellFlag('true'); 
        }
    }

}

Quanto sopra è sufficiente per reindirizzare l'utente a un'altra pagina dopo aver premuto per andare alla cassa.Avrebbe bisogno di impostare un flag all'interno di questo osservatore per la sessione e quindi verificare se quel flag esiste, se lo fa, eseguire il reindirizzamento.

Quindi possiamo creare un controller che sarà la nostra pagina "prima del checkout", crea/renderizza il layout utilizzando un blocco dal modello. app/codice/community/Dc/Crosssells/controllers/IndexController.php

<?php
class Dc_Crosssells_IndexController extends Mage_Core_Controller_Front_Action
{

    public function indexAction()
    {
        $this->loadLayout(array('default'));

        $block = $this->getLayout()->getBlock('before.you.buy')->getBlockHtml('before.you.buy');
        $this->getLayout()->getBlock('content')->append($block);
        $this->_initLayoutMessages('core/session');
        $this->renderLayout();
    }

}

Abbiamo una classe block per ospitare le funzioni necessarie al blocco frontend, non l'ho testata completamente, dovrebbe restituire una raccolta di prodotti filtrata dalla categoria che avresti dovuto creare nel backend, nel mio caso è la categoria 292. app/codice/community/Dc/Crossells/Block/BeforeYouBuy.php

<?php
class Dc_Crosssells_Block_BeforeYouBuy extends Mage_Core_Block_Template
{
    public function getCrossSellProductsFromCategory()
    {
        $category = Mage::getModel('catalog/category')->load(292);

        $products = Mage::getModel('catalog/product')->getCollection()
            ->addCategoryFilter($category)
            ->addAttributeToSelect('*');

        return $products;
    }
}

app/design/frontend/base/default/layout/dc/dc_crosssell.xml

<?xml version="1.0"?>
<layout version="0.1.0">
    <beforeyoucheckout_index_index>
        <reference name="content">
            <block type="dc_crosssells/beforeYouBuy" name="before.you.buy" template="dc/crosssell.phtml"/>
        </reference>
    </beforeyoucheckout_index_index>
</layout>

app/design/frontend/base/default/template/dc/crosssell.phtml

<?php $products = $this->getCrossSellProductsFromCategory();

foreach($products as $item) {
    echo $item->getName(). '<br />';
}

Non ho ancora testato completamente questo codice correttamente e ho ancora bisogno di un po' di lavoro per visualizzare effettivamente i prodotti correttamente con i pulsanti Aggiungi al carrello ecc. L'ho inserito in un repository github qui: https://github.com/DanCarlyon/MagentoCrossSellPage

Sentiti libero di scaricarlo e giocarci.

Prova questo modulo:

File: app\\etc\\modules kt_CrossSell.xml

true community File: app\\code\\community kt\\CrossSell\\etc\\config.xml

1.0.0 Rkt_CrossSell_Helper Rkt_CrossSell_Block rkt_crossell.xml File: app\\code\\community kt\\CrossSell\\Block\\Catalog\\Product\\View\\Crosssell.php

/**
 * Get crosssell items
 *
 * @return array
 */
public function getItems()
{
    $items = $this->getData('items');
    if (is_null($items)) {
        $items = $this->getProduct()->getCrossSellProducts();
        $this->setData('items', $items);
    }
    return $items;
}

} File : app\\code\\community kt\\CrossSell\\Helper\\Data.php

} File : app\\design\\frontend\\base\\default\\layout kt_crossell.xml

Ora nel tuo view.phtml aggiungi questo codice nella posizione appropriata

getChildHtml('crosssell') ?> Ora svuota la cache.Ricontrolla che il nome di ogni file e i percorsi dei file siano corretti.Allora sei a posto

Puoi aggiungere un blocco sulla pagina del prodotto oppure chiamare il file phtml all'interno di una pagina cms.

Prova sotto il codice Per il rendering della categoria

   $category = Mage::getModel('catalog/category')->load(157);  
   $block = $this->getLayout()->createBlock('catalog/product_list')->set‌​Data('category_id',$category)->set‌​Template('catalog/pr‌​oduct/list.phtml'); 
   $this->getLayout()->getBlock('content')->append($block);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top