Fusionner deux product collection Magento

Si vous souhaitez comme moi créer une page de produit avec vos promotions du site et qu’une partie doit être automatique et l’autre manuelle, voici comment faire :

Commencer par créer vos collections avec les filtres que vous voulez. Dans mon cas je souhaite prendre les produits avec un prix spécial ainsi que les produits d’une catégorie particulière. Mon client peut ainsi mettre des produits ayant des promotions paniers dans cette page.

$collection1 = Mage::getResourceModel('catalog/product_collection')->addFieldToFilter('special_price', array('gt' => 0));

$products = Mage::getModel('catalog/category')->load(29)
 ->getProductCollection()
 ->addAttributeToSelect(array("status","visibility")) 
 ->addAttributeToFilter('status', 1) // enabled
 ->addAttributeToFilter('visibility', 4) //visibility in catalog,search
;

Puis fusionnez en recréant une autre collection. Attention cette manipulation n’est pas la plus recommandée en terme de performances car on a 3 différents appels à la base de données Magento.

$merged_ids = array_merge($collection1->getAllIds(), $products->getAllIds());

$merged_collection = Mage::getResourceModel('catalog/product_collection')
 ->addFieldToFilter('entity_id', array('in' => $merged_ids))
 ->addAttributeToSelect('*');