显示产品的计量单位

Display units of measure for a product

美好的一天。请帮我显示商品的计量单位。 OcStore 2.3 引擎。 默认情况下,测量单位不显示在产品旁边,他们帮助我以这种方式显示在产品页面上:

catalog/model/catalog/product.php

查找行:

public function getProduct($product_id) {

在上面提到的行之前添加以下代码:

public function getProductWeightWithUnit($product_id) {
    $product_info = $this->getProduct($product_id);

    $query = $this->db->query("SELECT unit FROM `" . DB_PREFIX . "weight_class_description` WHERE 
    weight_class_id='".$product_info['weight_class_id']."'");

    if ($query->num_rows) {
        return number_format($product_info['weight'],2) . " " . $query->row['unit'];
    } else {
        return false;
    }
}

保存更改并关闭文件。

现在,打开文件

catalog/controller/product/product.php

查找行:

if ($product_info['minimum']) {

在上面提到的行之前添加以下代码:

if ($product_info['weight']) {
     $data['weight'] = $this->model_catalog_product->getProductWeightWithUnit($this->request->get['product_id']);
} else {
     $data['weight'] = false;
}

现在,后台代码已经准备好了。根据您使用的主题,您需要从主题中编辑正确的 product.tpl 文件。例如,如果您使用默认主题,则要编辑的文件如下:

catalog/view/theme/default/template/product/product.tpl

找到行:

<li><?php echo $text_stock; ?> <?php echo $stock; ?></li>

并在后面添加如下代码:

<li><?php echo $weight; ?></li>

很好!一切都在产品页面上运行。但是您需要它在模块中发挥相同的作用(例如特色产品)。

我对模块执行所有相同的步骤

后端:

catalog/controller/extension/module/featured.php

和前端:

catalog/view/theme/default/template/extension/module/featured.tpl

但我收到错误:

Notice: Undefined index: product_id in C:\OSPanel\domains\mywebsite.com\catalog\controller\extension\module\featured.php on line 43

这就是它所说的:

    if ($product_info['weight']) {
LINE 43     $data['weight'] = $this->model_catalog_product->getProductWeightWithUnit($this->request->get['product_id']);
    } else {
        $data['weight'] = false;
    }

为什么在 ??

中没有看到 product_id

您必须使用 $product_info['product_id'] 或仅使用 $product_id 而不是 $this->request->get['product_id'] 因为您无法使用此表达式获得多个产品的 product_id,这些产品位于循环 foreach ($products as $product_id) {

打开catalog/controller/extension/module/featured.php.

查找

if ($this->config->get('config_tax')) {

在前面添加

if ($product_info['weight']) {
    $weight = $this->model_catalog_product->getProductWeightWithUnit($product_info['product_id']);
} else {
    $weight = false;
}

基本上,我在这里用$product_info['product_id']替换了$this->request->get['product_id'],就像@K.B。在他的回答中说,但做了更准确的例子。

然后,在同一个文件中找到

'tax'         => $tax,

之后添加
'weight'      => $weight,

现在去catalog/view/theme/default/template/extension/module/featured.tpl

查找

<?php if ($product['tax']) { ?>
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
<?php } ?>

之后添加
<?php if ($product['weight']) { ?>
<span><?php echo $product['weight']; ?></span>
<?php } ?>