Magento visualizzare prezzi differenziati per ciascun prodotto sulla pagina del carrello
Domanda
Sto avendo un problema ricevendo il tierPriceHtml
alla visualizzazione per ogni voce sulla pagina del carrello.
Questo è quello che ho dentro checkout/cart/item/default.phtml
:
$custom = Mage::getModel('catalog/product')->load($_item->getProductId());
$tierPrice = $custom->getTierPriceHtml();
echo $tierPrice;
Tuttavia, questo eco non fuori qualche cosa. Ho provato anche questo senza fortuna:
echo $this->getTierPriceHtml()
Come posso fare questo? Devo fare qualcosa per modificare il file checkout.xml per visualizzarlo?
Ecco la mia intera cassa / carrello / item / file di default.phtml:
Soluzione
sto supponendo che si desidera visualizzare la prezzi differenziati per ogni voce della spesa sulla pagina del carrello di vista, forse vale la pena chiarire questo nella vostra domanda.
Sembra che si sta tentando di chiamare il metodo getTierPrice()
dalla classe Mage_Catalog_Model_Product
anziché la classe Mage_Catalog_Block_Product_Abstract
.
Si potrebbe creare un proprio blocco personalizzato che si estende Mage_Catalog_Block_Product_Abstract
ma il modo più semplice per ottenere ciò che si vuole è quello di creare una nuova istanza di Mage_Catalog_Block_Product_View
per ogni elemento.
Aggiungi questo dopo $_item = $this->getItem();
all'interno checkout / cart / item / default.phtml:
$_tierPricing = $this->getLayout()->createBlock(
'catalog/product_view',
'product.tierprices',
array(
'product_id' => $_item->getProductId()
)
);
$_tierPricing->setTemplate('catalog/product/view/tierprices.phtml');
E poi dove si vuole mettere il vostro informazioni sui prezzi:
<?php echo $_tierPricing->getTierPriceHtml();?>
- Nella prima riga creiamo un nuovo blocco vista del prodotto e passare in ID dei prodotti. E 'importante che questo è fatto oggi durante la fase di creazione piuttosto dopo il blocco viene creata un'istanza per errori evitare in modo _prepareLayout.
- Poi abbiamo impostato il modello di prezzi differenziati, probabilmente si dovrebbe fare un nuovo modello utilizzato solo per il carrello. Forse
checkout/cart/item/tierprices.phtml
- Ora possiamo usare il metodo getTierPriceHtml () con successo.
Altri suggerimenti
sono stato in grado di ottenere una vasta gamma di prezzi differenziati per il prodotto in questo modo:
$custom = Mage::getModel('catalog/product')->load($_item->getProductId());
var_dump($custom->getTierPrice());
Con questo si può formattare l'array in qualcosa di facile lettura. Ecco un esempio di output dal mio demo:
array(3) {
[0]=>
array(7) {
["price_id"]=>
string(2) "11"
["website_id"]=>
string(1) "0"
["all_groups"]=>
string(1) "1"
["cust_group"]=>
int(32000)
["price_qty"]=>
string(6) "5.0000"
["price"]=>
string(8) "599.0000"
["website_price"]=>
string(8) "599.0000"
}
[1]=>
array(7) {
["price_id"]=>
string(2) "12"
["website_id"]=>
string(1) "0"
["all_groups"]=>
string(1) "1"
["cust_group"]=>
int(32000)
["price_qty"]=>
string(7) "10.0000"
["price"]=>
string(8) "499.0000"
["website_price"]=>
string(8) "499.0000"
}
[2]=>
array(7) {
["price_id"]=>
string(2) "13"
["website_id"]=>
string(1) "0"
["all_groups"]=>
string(1) "1"
["cust_group"]=>
int(32000)
["price_qty"]=>
string(7) "15.0000"
["price"]=>
string(8) "399.0000"
["website_price"]=>
string(8) "399.0000"
}
}
L'implementazione suggerire dal lavoro jharrison.au, ma se si desidera utilizzare un altro progetto per il prezzo livello nel carrello della spesa è necessario modificare
$_tierPricing->setTemplate('catalog/product/view/tierprices.phtml');
per
$_tierPricing->setTierPriceTemplate('catalog/product/view/tierprices.phtml');
Grazie