Casi todos los modelos de Magento tienen un objeto de colección correspondiente que se puede usar para buscar múltiples instancias de un modelo.
Para crear una instancia de una colección de productos, haga lo siguiente
$collection = Mage::getModel('catalog/product')->getCollection();
Los productos son un modelo de estilo EAV de Magento, por lo que deberá agregar cualquier atributo adicional que desee devolver.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
Hay varias sintaxis para configurar filtros en colecciones. Siempre uso el detallado a continuación, pero es posible que desee inspeccionar la fuente de Magento para ver formas adicionales de utilizar los métodos de filtrado.
A continuación se muestra cómo filtrar por un rango de valores (mayor que Y menor que)
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'orig_price','gt'=>'100'),
));
$collection->addFieldToFilter(array(
array('attribute'=>'orig_price','lt'=>'130'),
));
Mientras que esto filtrará por un nombre que sea igual a una cosa U otra.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'name','eq'=>'Widget A'),
array('attribute'=>'name','eq'=>'Widget B'),
));
Se puede encontrar una lista completa de los condicionales breves admitidos (eq, lt, etc.) en el _getConditionSql
método delib/Varien/Data/Collection/Db.php
Finalmente, todas las colecciones de Magento se pueden iterar (la clase de colección base implementa una de las interfaces del iterador). Así es como tomará sus productos una vez que se establezcan los filtros.
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');
$collection->addAttributeToSelect('orig_price');
$collection->addFieldToFilter(array(
array('attribute'=>'name','eq'=>'Widget A'),
array('attribute'=>'name','eq'=>'Widget B'),
));
foreach ($collection as $product) {
var_dump($product->getData());
}