2013-01-21 11 views

risposta

10

Il prezzo del prodotto viene letto solo dalle tabelle indice quando si utilizzano raccolte di prodotti, ad esempio quando si gestiscono più prodotti contemporaneamente. Quando si ottiene un singolo prodotto, ad esempio nella pagina di visualizzazione del prodotto, il prezzo viene generato al volo.

E ora la spiegazione con alcuni riferimenti al codice:

Se si considera il Mage_Catalog_Model_Product, si vedrà che il metodo getFinalPrice() chiama $this->getPriceModel()->getFinalPrice($qty, $this); A sua volta, il modello di prezzo predefinito (Mage_Catalog_Model_Product_Type_Price) calcola il prezzo nel metodo getFinalPrice() e licenzia anche l'evento catalog_product_get_final_price che viene utilizzato da alcuni moduli (penso che fosse il catalogo o le regole del prezzo del carrello) per regolare il prezzo. Questo metodo è un calcolo "al volo" quindi senza indici.

Nella raccolta (Mage_Catalog_Model_Resource_Product_Collection) l'indicizzatore di prezzo viene utilizzato per ridurre la complicata procedura di calcolo del prezzo per ciascun prodotto. Esso definisce una mappa per assegnare i campi appropriati indicizzati campi:

protected $_map = array('fields' => array(
    'price'   => 'price_index.price', 
    'final_price' => 'price_index.final_price', 
    'min_price'  => 'price_index.min_price', 
    'max_price'  => 'price_index.max_price', 
    'tier_price' => 'price_index.tier_price', 
    'special_price' => 'price_index.special_price', 
)); 

L'indicizzatore che fa il lavoro è la classe Mage_Catalog_Model_Product_Indexer_Price.

Problemi correlati