OpenCart主题开发:价格是多少?

Met*_*ile 4 opencart

我需要根据价格不同地展示一些产品.我希望我可以简单地$price从相关的主题文件中检查变量的值,但$price包含货币格式的字符串.而且由于OpenCart支持多种货币格式,因此没有简单,可靠的方法将价格字符串转换回数字.

我查看了产品控制器类ControllerProductProduct.据我所知,OpenCart不会向视图公开数值价格.我可以修改控制器类,但我不愿意,因为它会使更新复杂化.

我忽略了什么吗?难道没有简单的方法可以在OpenCart主题中对价格进行数字比较吗?

Bra*_*rad 7

综观product.php(v1.4.9.4 ControllerProductProduct)我可以看到下面的代码将是你在谈论$价格的格式化值:

if ($discount) {
    $price = $this->currency->format($this->tax->calculate($discount, $result['tax_class_id'], $this->config->get('config_tax')));
} else {
    $price = $this->currency->format($this->tax->calculate($result['price'],$result['tax_class_id'], $this->config->get('config_tax')));
Run Code Online (Sandbox Code Playgroud)

你为什么不把它改成以下......

if ($discount) {
    $price_num = $this->tax->calculate($discount, $result['tax_class_id'], $this->config->get('config_tax'));
    $price = $this->currency->format($price_num);
} else {
    $price_num = $this->tax->calculate($result['price'],$result['tax_class_id'], $this->config->get('config_tax'));
    $price = $this->currency->format($price_num);
Run Code Online (Sandbox Code Playgroud)

然后从这几行开始,您可以通过添加以下内容将此$ price_num值传递给模板:

$this->data['products'][] = array(
    'product_id'    => $result['product_id'],
    ...
    'price'         => $price,
    'price_num'     => $price_num,
    ...
Run Code Online (Sandbox Code Playgroud)

应该做你需要的