我正在寻找比 viewtopic.php?t=7080 更高级的东西
我需要隐藏(或禁用)缺货且属于特定类别的产品。
出现这个问题是因为我有一个名为“清仓”的类别,我希望清仓商品在售罄后自动禁用,因为我们永远不会有更多库存。同时我希望所有其他类别的产品在缺货后继续展示。
请帮忙。麦克风
我会在订单模型的确认方法中执行此操作。确认销售后,这是更新产品数量的地方。
打开:
catalog/model/checkout/order.php
在 confirm() 方法中,您会发现如下一行:
foreach ($order_product_query->rows as $order_product) {
您可以创建一个新方法,该方法将返回给定产品的现有数量,减去已售数量并检查新数量是否为 0,此外它还会检查产品是否附加到您的给定类别。
如果是这样,那么如果您根本不希望它显示,则将产品状态设置为禁用,或者如果您只想显示它已售罄,请将 stock_status 设置为缺货。
// check quantity and categories
private function checkQuantity ($product_id) {
$return = array();
// first check if product is attached to your specified category and add boolean to array
$categories = $this->db->query ("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
if (in_array($your_clearance_category_id, $categories->rows)):
$return['check'] = true;
else:
$return['check'] = false;
endif;
// get your pre-sale quantity and add to array
$quantity = $this->db->query ("SELECT quantity FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product_id . "'");
$return['quantity'] = $quantity->row['quantity'];
return $return;
}
然后在结构打开后添加foreach ($order_product_query->rows as $order_product) {
:
$checks = $this->checkQuantity($order_product['product_id']);
if ($checks['check']):
if (((int)$check['quantity'] - (int)$order_product['quantity']) <= 0):
$this->db->query ("UPDATE " . DB_PREFIX . "product SET status = '0' WHERE product_id = '" . (int)$order_product['product_id'] . "'");
endif;
endif;
尚未测试,但它应该可以使用或不使用一些调整。