2011-02-08 17 views
5

Sto cercando di ottenere un elenco di prodotti che hanno un prezzo di vendita solo in determinate categorie. In questo momento sto cercando di utilizzare una raccolta di prodotti per ottenere questi dati. Non sono sicuro di come andrei a limitare la raccolta solo per determinate categorie. Ecco quello che ho finora:Raccolta prodotti Magento Ottieni solo prodotti da determinate categorie

$products = Mage::getModel('catalog/product') 
    ->getCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('status', 1) 
    ->addAttributeToFilter('visibility', 4) 
    ->addAttributeToFilter('special_price', array('neq' => "")) 
    ->addAttributeToFilter('discontinued', array('neq' => 1)) 
    ->setPageSize(10) 
    ->setOrder('price', 'ASC') 
    ; 

L'attributo interrotto è un attributo personalizzato che usiamo in modo che i prodotti non vengono visualizzati, ma anche no 404.

C'è un modo per utilizzare il modello di prodotto e limitato a determinate categorie?

+0

Come nota, 'special_price' potrebbe non essere disponibile con la query. Questa domanda e risposta spiega un po ': http://stackoverflow.com/questions/12054165/ –

risposta

5

Capito. Si inizia con la categoria e si ottiene la raccolta del prodotto dalla categoria e poi la si raffina da lì. Nel codice appare così:

$products = Mage::getModel('catalog/category')->load(410) 
    ->getProductCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('status', 1) 
    ->addAttributeToFilter('visibility', 4) 
    ->addAttributeToFilter('special_price', array('neq' => "")) 
    ->addAttributeToFilter('discontinued', array('neq' => 1)) 
    ->setOrder('price', 'ASC') 
    ; 
Problemi correlati