J'ai l'obligation d'afficher les produits d'une catégorie dans deux listes - une pour les articles en stock, l'autre pour les articles en rupture de stock.
j'utilise
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection()
pour filtrer ma collection de produits pour les articles en stock, mais il ne semble pas y avoir de méthode équivalente pour filtrer les articles en rupture de stock - j'ai regardé le Mage_CatalogInventory_Model_Stock
modèle, où la méthode susmentionnée est définie.
J'ai vu l'exemple suivant pour récupérer des produits en rupture de stock:
$collection->joinField(
'is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
)
->addAttributeToFilter('is_in_stock', array('eq' => 0));
... mais ce n'est sûrement pas seulement le meilleur moyen d'y parvenir?
Votre exemple ne prend pas en compte la valeur "use config".
Voyons comment cela
addInStockFilterToCollection
fonctionne:OK, il délègue à une autre méthode:
Cela rejoint la table d'inventaire avec les conditions suivantes:
Le produit n'utilise pas la configuration globale ET a "gérer le stock" réglé sur "oui" ET est en stock
OU
Le produit n'utilise pas la configuration globale ET a "gérer le stock" défini sur "non"
OU
Vous devez inverser les conditions comme suit:
Le produit n'utilise pas la configuration globale ET a "gérer le stock" défini sur "oui" ET n'est pas en stock
OU
Le produit utilise la configuration globale ET la configuration globale est "gérer le stock = oui" ET n'est pas en stock
Explication: Vous prenez uniquement les conditions dans lesquelles in_stock est réellement vérifié et changez la comparaison à 0. Les conditions dans lesquelles in_stock n'est pas vérifiée ("gérer le stock" = "non") signifient que le produit est toujours en stock, quel que soit l'état du stock , nous ne les incluons donc pas dans notre requête "rupture de stock".
Alors voici votre code:
la source
Mage_CatalogInventory_Model_Stock
modèle?$this
. Cela pourrait tout aussi bien être une fonction simple. Je créerais un module séparé et en ferais une méthode d'assistance (ou si vous en avez besoin pour un autre module, l'ajoutez à l'aide de ce module)L'extrait de code suivant vous renverra les produits d'une catégorie dont le statut est «Activer», Visibilité «catalogue, recherche» et Disponibilité en stock «Rupture de stock».
la source
Vous pouvez essayer ça.
Ou vous pouvez essayer ceci
Pas sûr à 100%.
la source