Có thể có một câu trả lời đơn giản cho vấn đề này, nhưng tôi không thể tìm thấy nó. Tôi đang cố gắng truy xuất bộ sưu tập sản phẩm, ngoại trừ các sản phẩm được bật nhưng hết hàng.
Tôi đã thử cách tiếp cận sau đây, nhưng điều này gây ra lỗi:
$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 )
;
Xảy ra lỗi sau:
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
ứng dụng / mã / lõi / Pháp sư / Danh mục / Khối / Sản phẩm / Tóm tắt.php: 117 có phương pháp sau:
/**
* 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);
}
Có cách nào đơn giản để lọc một bộ sưu tập để chỉ lấy các sản phẩm có trong kho không? Rõ ràng tôi biết về isSaleable()
bên trong vòng lặp. Cảm ơn.
$this->getAddToCartUrl($product)
bên ngoài của nó.