Vous devrez rejoindre la table pour obtenir la quantité.
Voir ci-dessous le code:
$products = Mage::getModel('catalog/product')
->getCollection()
//->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'thumbnail', 'weight' ,'price','description'))
->joinField(
'qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
);
foreach ($products as $product) {
$p['products'][] = array(
'id' => $product->getId(),
'sku' => $product->getSku(),
'name' => $product->getName(),
'description' => $product->getDescription(),
'weight' => $product->getWeight(),
'created at' => $product->getCreatedAt(),
'pirce' => Mage::helper('core')->currency($product->getPrice(), true, false), //." ".$currencyCode,
//get qty
'qty' => $product->getQty(),
);
}
Comment obtenir la valeur d'attribut créée ici, par exemple, j'ai créé un attribut nommé taille comment récupérer cette valeur
MISE À JOUR (Bien que vous devriez demander dans un autre qst, mais je répondrai ici pour vous.)
Pour obtenir un attribut personnalisé, vous devrez ajouter un attribut dans la ->addAttributeToSelect
section.
Ça ne marche toujours pas?
Vous devrez peut-être charger un modèle de produit, car j'ai parfois constaté que tous les attributs personnalisés ne sont pas attachés lorsque vous le retirez d'une collection (destiné à des raisons de performances, je suppose). Quelque chose comme:
$_product = Mage::getModel('catalog/product')->load($product->getId());
$size = $_product->getSize();
$product->getSize()
ou$product->getData('size')
->addAttributeToSelect
? Vous devez dire quoi sélectionner. sinon, utilisez-le à la->addAttributeToSelect(*)
place. Cela sélectionnera tout ce qui concerne le produit. Si cela ne fonctionne pas, vérifiez ma réponse mise à jour sous peu.Ça marche pour moi.
la source
L'ajout d'informations sur les stocks aux collections de produits peut se faire avec une seule ligne:
Ce drapeau est utilisé en
catalog_product_collection_load_after
observateur:Si ce drapeau n'est pas activé, il
$product->getStockItem()->getData()
a uniquement étéis_in_stock
activé. Avec le drapeau, vous pouvez obtenir une quantité, des commandes en souffrance, ... pour chaque produit de la collectionla source
Vous pouvez accéder à la quantité en stock des produits via StockItem comme ceci:
Testé dans
template/catalog/product/view.phtml
la source