Problema di raccolta del prodotto: dati di prezzo errati o articoli non disponibili


9

Sto recuperando una raccolta di prodotti in base alla categoria corrente. Ho bisogno che questa raccolta contenga sia prodotti disponibili che esauriti e ho anche bisogno che i dati sui prezzi vengano visualizzati correttamente.

Il mio negozio è configurato per memorizzare i prezzi dei prodotti come comprensivi di tasse e per mostrare i prezzi come inclusivi ed esclusivi sul fronte del negozio.

Il codice per ottenere la raccolta è il seguente:

$category = Mage::registry('current_category'); 
$_productCollection = Mage::getModel('catalog/product')->getCollection()
                ->addCategoryFilter($category)
                ->addAttributeToSelect(['sku', 'name', 'price'])
                ->addAttributeToFilter('status', 1)
                ->addAttributeToSort('jump_number', Varien_Data_Collection::SORT_ORDER_ASC); 

Il problema con quanto sopra è che quando si carica il blocco di prezzo utilizzando il getPriceHtml()metodo, i prezzi inclusivi ed esclusivi vengono visualizzati come prezzo inclusivo.

Dopo alcune ricerche, ho scoperto che l'aggiunta di un addFinalPrice()metodo alla mia collezione mi dà il prezzo previsto, un giusto prezzo inclusivo esclusivo e corretto.

Tuttavia, se includo il addFinalPrice()metodo, la mia collezione non contiene più prodotti esauriti.

Esiste un modo per restituire i dati corretti sui prezzi e fare in modo che la raccolta contenga sia prodotti vendibili che esauriti?

Risposte:


3

addFinalPrice()chiama anche applyProductLimitationFilters. Questo metodo applica diversi filtri in base alla configurazione della raccolta, come il filtro negozio che mostra solo i prodotti visibili nel negozio corrente.

Se vuoi caricare tutti i prodotti, visibili o meno, come senza il filtro dei prezzi, puoi rimuovere il filtro del negozio in questo modo, prima di chiamare addFinalPrice():

$collection->setStoreId(null);

@fschmengler - grazie, sembra un'opzione migliore.
BrynJ,

1

Ho risolto questo problema ora, ed è in realtà abbastanza semplice e logico - dovevo solo andare Configuration -> Catalog -> Inventorye impostare "Visualizza prodotti esauriti" su Yes.

Con quanto sopra impostato su Yese il addFinalPrice()metodo aggiunto alla raccolta, ora ottengo tutti i miei prodotti e i dati di prezzo corretti.


Questo va bene se vuoi mostrare prodotti esauriti ovunque . Se è solo per questa collezione, vedi la mia risposta di seguito
Fabian Schmengler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.