Разработка темы OpenCart: цена как номер? - PullRequest
4 голосов
/ 11 января 2011

Мне нужно отображать некоторые товары по-разному в зависимости от их цены.Я надеялся, что смогу просто проверить значение переменной $price в соответствующих файлах темы, но $price содержит строку в формате валюты.А поскольку OpenCart поддерживает различные форматы валют, не существует простого и надежного способа преобразования строк цен обратно в числа.

Я смотрел в классе контроллеров продукта, ControllerProductProduct.Насколько я могу судить, OpenCart не предоставляет числовое значение цены для просмотра.Я мог бы изменить класс контроллера, но я бы предпочел не делать этого, потому что это усложнит обновления.

Я что-то пропустил?Нет ли простого способа сравнить цены в рамках темы OpenCart?

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

Глядя на v1.4.9.4 в product.php (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,
    ...

Должен делать то, что вам нужно

0 голосов
/ 07 июля 2012

К сожалению, ответ - нет, OpenCart не предоставляет числовые значения цены темам. Вам придется изменить основные файлы, которые Брэд объясняет, как это сделать .

...