我一直在尝试获得一个干净的解决方案,只显示具有可过滤属性的产品,即分层导航过滤器Large只会显示目前库存量大的T恤。
我想在加载productCollection之前对其进行过滤,以保持页面加载速度快(ish) - 我最近的尝试是尝试在其库存达到0时将项目的状态设置为禁用,以便magento的核心过滤将在分层导航结果页面上启动。
我尝试过的所有方法都没有成功将状态设置为禁用 - 我应该可以向CatalogInventory / Model / Stock / Status.php updateStatus()添加一些内容吗?或者某个地方..像:
/**
* Update product status from stock item
*
* @param int $productId
* @param string $productType
* @param int $websiteId
* @return Mage_CatalogInventory_Model_Stock_Status
*/
public function updateStatus($productId, $productType = null, $websiteId = null)
{
if (is_null($productType)) {
$productType = $this->getProductType($productId);
}
$storeId = Mage::app()->getStore()->getStoreId();
$item = $this->getStockItemModel()->loadByProduct($productId);
$status = self::STATUS_IN_STOCK;
$qty = 0;
if ($item->getId()) {
$status = $item->getIsInStock();
$qty = $item->getQty();
}
if($qty < 1)
Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
else
Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
$this->_processChildren($productId, $productType, $qty, $status, $item->getStockId(), $websiteId);
$this->_processParents($productId, $item->getStockId(), $websiteId);
return $this;
}
我已经好几天了,没有运气。如果有一个更优雅的解决方案我是敞开的
感谢