Es mag eine einfache Antwort darauf geben, aber ich kann sie nicht finden. Ich versuche, eine Produktkollektion abzurufen, ausgenommen Produkte, die aktiviert, aber nicht vorrätig sind.
Ich habe den folgenden Ansatz ausprobiert, aber dies führt zu einem Fehler:
$productIds = array('3','4','9');
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect(
array('name', 'image', 'price')
)
->addIdFilter($productIds)
;
$this->_productCollection = Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection( $productCollection )
;
Der folgende Fehler tritt auf:
PHP Fatal error: Call to a member function getTypeInstance() on a non-object in app/code/core/Mage/Catalog/Block/Product/Abstract.php on line 117
app / code / core / Mage / Katalog / Block / Produkt / Abstract.php: 117 hat die folgende Methode:
/**
* Retrieve url for add product to cart
* Will return product view page URL if product has required options
*
* @param Mage_Catalog_Model_Product $product
* @param array $additional
* @return string
*/
public function getAddToCartUrl($product, $additional = array())
{
// line 117:
if (!$product->getTypeInstance(true)->hasRequiredOptions($product)) {
return $this->helper('checkout/cart')->getAddUrl($product, $additional);
}
$additional = array_merge(
$additional,
array(Mage_Core_Model_Url::FORM_KEY => $this->_getSingletonModel('core/session')->getFormKey())
);
if (!isset($additional['_escape'])) {
$additional['_escape'] = true;
}
if (!isset($additional['_query'])) {
$additional['_query'] = array();
}
$additional['_query']['options'] = 'cart';
return $this->getProductUrl($product, $additional);
}
Gibt es eine einfache Möglichkeit, eine Sammlung zu filtern, um nur Produkte zu erhalten, die auf Lager sind? Offensichtlich weiß ich über isSaleable()
innerhalb der Schleife Bescheid . Vielen Dank.
$this->getAddToCartUrl($product)
außerhalb davon.