Magento - отключить товар, когда запас достигает 0 - PullRequest
1 голос
/ 25 октября 2011

Я пытался найти чистое решение, чтобы показывать только продукты, которые имеют фильтруемый атрибут IN STOCK, т.е. многослойный навигационный фильтр Large, будут отображаться только футболки с большими размерами на складе.

Я бы хотел отфильтровать это перед загрузкой 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;
}

Я занимался этим несколько дней, и мне не повезло. Если есть более элегантное решение, я широко открыт

спасибо

...