将产品属性添加到 opencart 发票
Adding product attributes to opencart invoice
我正在尝试在 Opencart
版本 2.0.1.1
的“打印发票”页面上显示产品属性。
到目前为止,我已经通过添加 $this->load->model("catalog/product");
编辑了 admin/controller/sale/order.php
然后我添加了 'attribute' => $this->model_catalog_product->getProductAttributes($product['product_id'])
到 $product_data[] = array()
现在在 order_invoice.tpl
页面上,我使用 <?php print_r ($attribute);?>
查看它正在提取什么数据,它显示:
Array
(
[attribute_id] => 1
[product_attribute_description] => Array
(
[1] => Array
(
[text] => 240
)
)
)
[text] => 240
是属性的值,但我终生无法显示属性名称,我尝试了无数次,并且按照最常见的建议,我尝试了 $attribute['name'];
但这什么也没带来。
谁能解释一下如何正确检索属性名称和属性值。
I've tried $attribute['name']; but this brings up nothing
那么您认为它为什么应该提出一些问题?显然,在 $attribute
中没有名为 name
的条目(您可以注意到在转储中您通过 print_r
)
因此,您需要以 returns 属性名称的方式更改 $this->model_catalog_product->getProductAttributes
,因此为了正确使用 $attribute['name']
,您的 $attribute
转储应该是这样的:
Array
(
[attribute_id] => 1
[name] => 'bla bla bla'
[product_attribute_description] => Array
(
[1] => Array
(
[text] => 240
)
)
)
所以这就是我们要做的(很抱歉介绍太长):
- 打开文件
<OC_ROOT>/admin/model/catalog/product.php
- 转到函数
getProductAttributes($product_id)
@ class ModelCatalogProduct
- 在这一行
$product_attribute_data[] = array(
之前,我们应该添加一个获取属性名称的查询:
// attribute name is stored in the table `attribute_description`
$attr_name_query = $this->db->query("SELECT `name` FROM `" . DB_PREFIX . "attribute_description` WHERE `attribute_id` = " . (int)$product_attribute['attribute_id'] . " and `language_id` = " . (int)$this->config->get('config_language_id'));
$attr_name = $attr_name_query->row['name'];
- 最后,将
$attr_name
添加到结果属性数组,在行 'attribute_id' => $product_attribute['attribute_id'],
之后添加 'name' => $attr_name
我正在尝试在 Opencart
版本 2.0.1.1
的“打印发票”页面上显示产品属性。
到目前为止,我已经通过添加 $this->load->model("catalog/product");
admin/controller/sale/order.php
然后我添加了 'attribute' => $this->model_catalog_product->getProductAttributes($product['product_id'])
到 $product_data[] = array()
现在在 order_invoice.tpl
页面上,我使用 <?php print_r ($attribute);?>
查看它正在提取什么数据,它显示:
Array
(
[attribute_id] => 1
[product_attribute_description] => Array
(
[1] => Array
(
[text] => 240
)
)
)
[text] => 240
是属性的值,但我终生无法显示属性名称,我尝试了无数次,并且按照最常见的建议,我尝试了 $attribute['name'];
但这什么也没带来。
谁能解释一下如何正确检索属性名称和属性值。
I've tried $attribute['name']; but this brings up nothing
那么您认为它为什么应该提出一些问题?显然,在 $attribute
中没有名为 name
的条目(您可以注意到在转储中您通过 print_r
)
因此,您需要以 returns 属性名称的方式更改 $this->model_catalog_product->getProductAttributes
,因此为了正确使用 $attribute['name']
,您的 $attribute
转储应该是这样的:
Array
(
[attribute_id] => 1
[name] => 'bla bla bla'
[product_attribute_description] => Array
(
[1] => Array
(
[text] => 240
)
)
)
所以这就是我们要做的(很抱歉介绍太长):
- 打开文件
<OC_ROOT>/admin/model/catalog/product.php
- 转到函数
getProductAttributes($product_id)
@ classModelCatalogProduct
- 在这一行
$product_attribute_data[] = array(
之前,我们应该添加一个获取属性名称的查询:
// attribute name is stored in the table `attribute_description`
$attr_name_query = $this->db->query("SELECT `name` FROM `" . DB_PREFIX . "attribute_description` WHERE `attribute_id` = " . (int)$product_attribute['attribute_id'] . " and `language_id` = " . (int)$this->config->get('config_language_id'));
$attr_name = $attr_name_query->row['name'];
- 最后,将
$attr_name
添加到结果属性数组,在行'attribute_id' => $product_attribute['attribute_id'],
之后添加'name' => $attr_name