Opencart - 自动禁用“缺货”产品

时间:2013-08-09 15:37:03

标签: php sql opencart

我正在寻找比viewtopic.php更先进的东西?t = 7080

我需要隐藏(或禁用)缺货且属于特定类别的产品。

这个问题出现了,因为我有一个名为“清仓”的类别,我希望清仓商品在售完后自动停用,因为我们永远不会有更多库存。与此同时,我希望所有其他类别的产品在缺货后继续显示。

请帮忙。 麦克

1 个答案:

答案 0 :(得分:1)

我会在订单模型的确认方法中执行此操作。这是在确认销售后更新产品的数量。

打开:

catalog/model/checkout/order.php

在confirm()方法中,您会找到如下行:

foreach ($order_product_query->rows as $order_product) {

您可以创建一个新方法,该方法将返回给定产品的现有数量,减去销售金额并检查新数量是否为0,此外还会检查产品是否附加到您指定的类别。< / p>

如果是,请将产品状态设置为禁用,如果您根本不想显示产品状态,或者将stock_status设置为Out of Stock(如果您只想显示它已售罄)。

// 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;

尚未经过测试,但无论是否有一些调整都可以。