0

在 OpenCart 3.0.2.0 中,我试图让发票页面显示每个产品的“SKU”变量。该变量与其他产品数据一起在数据库中,但由于某些不敬的原因,OpenCart 没有显示它的选项。您可以显示产品名称、价格、库存情况等,但不能显示 SKU。

有谁知道如何在 OC 3 中专门执行此操作?他们已经将模板从 PHP 切换到 Twig,我不确定我做错了什么,但我在 OC 2.0 中使用的方法在 3.0 中不起作用。

4

2 回答 2

2

如果您希望 SKU 在管理端的 order_invoice 中,则必须进行如下修改:

管理员/模型/销售/order.php

寻找 :

public function getOrderProducts($order_id) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");

    return $query->rows;
}

代替 :

public function getOrderProducts($order_id) {
    $query = $this->db->query("SELECT op.*,p.sku FROM " . DB_PREFIX . "order_product op LEFT JOIN " . DB_PREFIX . "product p on op.product_id = p.product_id WHERE order_id = '" . (int)$order_id . "'");

    return $query->rows;
}

管理员/控制器/销售/order.php

`public function invoice()`

寻找:

 `$product_data[] = array(
    'name'     => $product['name'],`

之后添加:

`'sku'  => $product['sku'],`

在 admin/view/sale/order_invoice.twig

添加:

`{{ product.sku }}`

因此,您必须首先从产品表中获取 sku,这在默认订单发票页面中不可用。

于 2018-04-05T05:04:34.743 回答
0

您是说它出现在 admin/view/sale/order_invoice.twig 中吗?

如果是这样,首先在第 518 行附近修改 admin/controller/sale/order.php:

    foreach ($products as $product) {
        $data['order_products'][] = array(
            'product_id' => $product['product_id'],
            'name'       => $product['name'],
            'model'      => $product['model'],
            'option'     => $this->model_sale_order->getOrderOptions($this->request->get['order_id'], $product['order_product_id']),
            'quantity'   => $product['quantity'],
            'price'      => $product['price'],
            'total'      => $product['total'],
            'reward'     => $product['reward']
        );
    }

包括那里的某处(比如模型行之后,比如说),一行:

'sku'      => $product['sku'],

然后在 admin/view/sale/order_invoice.twig 中添加您希望它出现的位置:

{{ product.sku }}

当然,您必须对其进行样式化或为它制作一个列。希望这会为您指明正确的方向。

于 2018-04-04T13:24:31.573 回答