我需要根据价格不同地展示一些产品。我希望我可以简单地从相关主题文件中检查$price
变量的值,但$price
包含货币格式的字符串。而且由于OpenCart支持各种货币格式,因此没有简单,可靠的方法将价格字符串转换回数字。
我查看了产品控制器类ControllerProductProduct
。据我所知,OpenCart不会向视图公开数值价格。我可以修改控制器类,但我不愿意,因为它会使更新复杂化。
我忽略了什么吗?难道没有简单的方法可以在OpenCart主题中对价格进行数字比较吗?
答案 0 :(得分:7)
在product.php(ControllerProductProduct
)中查看v1.4.9.4我可以看到以下代码设置您正在讨论的$ price的格式化值:
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')));
为什么不将此更改为以下内容...
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);
然后在这几行之后,您可以通过添加以下内容将此$ price_num值传递给模板:
$this->data['products'][] = array(
'product_id' => $result['product_id'],
...
'price' => $price,
'price_num' => $price_num,
...
应该做你需要的事情
答案 1 :(得分:0)
不幸的是答案是否定的,OpenCart不会向主题公开数字价格值。您必须修改核心文件,即Brad explains how to do。