4

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

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

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

4

2 回答 2

7

查看 product.php ( ) 中的 v1.4.9.4,ControllerProductProduct我可以看到以下代码设置您正在谈论的 $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,
    ...

应该做你需要的

于 2011-06-28T20:16:20.240 回答
0

不幸的是,答案是否定的,OpenCart 不会向主题公开数字价格值。您将不得不修改核心文件,布拉德解释了如何做.

于 2012-07-07T19:04:06.703 回答