在OpenCart 3.0.2.0中,我试图让Invoices页面显示每个产品的“SKU”变量。变量与数据库以及其他产品数据一起存在于数据库中,但由于某种不正当的原因,OpenCart没有显示它的选项。您可以显示产品名称,价格,库存可用性等,但不能显示SKU。
有没有人知道如何在OC 3中专门做到这一点?他们已经从PHP切换到Twig用于模板,我不确定我做错了什么,但我在OC 2.0中使用的方法不适用于3.0。
答案 0 :(得分:2)
如果您想在管理员端按顺序购买SKU,则需要修改如下:
管理员/模型/销售/ 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
in
`public function invoice()`
查找
`$product_data[] = array(
'name' => $product['name'],`
之后添加:
`'sku' => $product['sku'],`
在admin / view / sale / order_invoice.twig
中添加:
`{{ product.sku }}`
因此,您必须先从产品表中获取sku,这在默认订单发票页面中不可用。
答案 1 :(得分: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 }}
您必须按照自己的方式对其进行样式化或为其制作专栏。希望这能指出你正确的方向。