【问题标题】:Display units of measure for a product显示产品的计量单位
【发布时间】:2020-08-08 09:16:29
【问题描述】:

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

目录/模型/目录/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;
    }
}

保存更改并关闭文件。

现在,打开文件

目录/控制器/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>

很好!一切都在产品页面上运行。但您需要它在模块中同样工作(例如特色产品)。

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

后端:

目录/控制器/扩展/模块/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??

【问题讨论】:

    标签: php html opencart opencart2.x


    【解决方案1】:

    打开目录/控制器/扩展/模块/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;
    }
    

    基本上,我在这里将$this-&gt;request-&gt;get['product_id'] 替换为$product_info['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 } ?>
    

    【讨论】:

    • 是的,你是对的,最好的方式是给出完整的答案,而不是把编码器放在路上......
    • @focus.style 谢谢!现在没有错误了!但是显示的是重量而不是单位吗?如何添加计量单位?
    • 对不起。代码有错误。更新了答案,将$data['weight'] 替换为$weight。刚测试过。现在它应该可以工作了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多