我希望当我的产品数量等于1时,产品缺货(而不是数量等于0时)。 可能吗 ? 怎么样?
答案 0 :(得分:0)
在PrestaShop 1.6中(经过测试并确认在v1.6.0.14中工作),您可以通过以下方法完成此操作,其中网站将始终显示可用库存数量,即实际数量最小值。如果您有6个库存,此修改将更改您的网站以向您的客户报告5个库存,当您只有1个库存时,客户将看到该产品的数量为0并标记为缺货。
将文件/classes/stock/StockAvailable.php
复制至/override/classes/stock/StockAvailable.php
。
编辑文件/override/classes/stock/StockAvailable.php
,如下所示。
第357-380行是函数AvailableStock::getQuantityAvailableByProduct()
,它通常会像这样读取(格式可能略有不同):
public static function getQuantityAvailableByProduct( $id_product,
$id_product_attribute = null, $id_shop = null ) {
if( $id_product_attribute === null ) $id_product_attribute = 0;
$skey = 'StockAvailable::getQuantityAvailableByProduct_' . (int)$id_product . '-' .
(int)$id_product_attribute . '-' . (int)$id_shop;
if( !Cache::isStored( $key )) {
$query = new DbQuery();
$query->select( 'SUM(quantity)' );
$query->from( 'stock_available' );
if( $id_product !== null ) $query->where( 'id_product = ' . (int)$id_product );
$query->where( 'id_product_attribute = ' . (int)$id_product_attribute );
$query = StockAvailable::addSqlShopRestriction( $query, $id_shop );
Cache::store( $key, (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue( $query ));
}
return Cache::retrieve( $key );
}
将以关键字return
开头的函数的最后一行替换为以下内容:
$iStockQty = Cache::retrieve( $key );
if( $iStockQty > 0 ) $iStockQty--;
return $iStockQty;
/cache/class_index.php
,以便Prestashop自动重新创建此文件,同时考虑新的覆盖文件。答案 1 :(得分:0)
我还在StockAvailable.php中找到方法self::removeProductFromStockAvailable($id_product)
来做类似的事情。