2011-02-08 28 views
5

Estoy tratando de obtener una lista de productos que tienen un precio de venta que están solo en ciertas categorías. En este momento estoy tratando de usar una colección de productos para obtener estos datos. No estoy seguro de cómo voy a restringir la colección solo para categorías particulares. Aquí es lo que tengo hasta ahora:Colección de productos de Magento Obtener solo productos de ciertas categorías

$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') 
    ; 

El atributo interrumpida es un atributo personalizado que utilizamos para que los productos no se muestran pero también no 404.

¿Hay una manera de utilizar el modelo de producto y restringir a ciertas categorías?

+0

Como nota, 'special_price' podría no estar disponible con su consulta. Esta pregunta y respuesta exponen un poco: http://stackoverflow.com/questions/12054165/ –

Respuesta

5

Lo descubrí. Comienza con la categoría y obtiene la colección de productos de la categoría y luego la refina desde allí. En el código se ve así:

$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') 
    ; 
Cuestiones relacionadas