Ecco gli snippet di codice necessari per estrarre, in Magento, l'elenco di tutti i prodotti. Presentiamo anche lo snippet necessario in caso di un catalogo basato su prodotti flat.
Una delle funzioni più frequenti con cui abbiamo a che fare quando sviluppiamo su Magento, è la selezione dei prodotti del catalogo.
Se non abbiamo impostato i prodotti FLAT, è sufficiente utilizzare questo snippet:
$products = Mage::getModel('catalog/product')->getCollection();
Sono supportati anche i filtri, ad esempio questo snippet estrae tutti i prodotti visibili sia in catalogo che in ricerca:
$products = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('visibility', array('eq' =>Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH));
Una volta che abbiamo estratto la collezione, possiamo facilmente scorrere i risultati con un foreach:
foreach($products as $product){
//operazioni sul prodotto
}
Tutto questo funziona se non abbiamo impostato i nostri prodotti come Flat. In questo caso infatti una chiamata a getCollection() ritorna automaticamente i prodotti visibili e attivi, senza bisogno di aggiungere l'apposito filtro. Si tratta di un comportamento desiderato nella maggior parte dei casi, ma non quando abbiamo l'esigenza di intervenire anche su prodotti -magari temporaneamente- fuori catalogo.
In questo caso una soluzione è quella di impostare l'app come Admin, astraendo cosi dai vari filtri che automaticamente cercano i prodotti di uno store:
$app = Mage::app('admin');
invece di
$app = Mage::app('default');