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

时间:2011-01-11 18:38:52

标签: opencart

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

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

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

2 个答案:

答案 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