2011-01-11 14 views
4

私はいくつかの製品を価格によって異なって表示する必要があります。私は、関連するテーマファイルの中から変数$priceの値をチェックするだけでよいことを期待しましたが、$priceには通貨フォーマットの文字列が含まれています。 OpenCartはさまざまな通貨フォーマットをサポートしているため、価格文字列を数値に変換する単純で堅牢な方法はありません。OpenCartのテーマ開発:価格は数字ですか?

私は製品コントローラクラスControllerProductProductを調べました。私が知る限り、OpenCartはビューに数値的な価格を公開しません。私はコントローラのクラスを変更することができましたが、更新が複雑になるため、むしろそうしたいと思います。

私は何か見落としましたか? OpenCartテーマ内から価格を比較する簡単な方法はありませんか?

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'))); 

てみません:私はあなたが話している$価格のフォーマットされた値を設定し、次のコードを見ることができますproduct.php(ControllerProductProduct)でv1.4.9.4を見ると

答えて

0

を行う必要があります残念ながら答えはノーである、OpenCartはテーマに、価格の数値値を公開していません。 Brad explains how to doというコアファイルを変更する必要があります。

+2

ブラッドがこれを解決する方法を説明していれば、私は彼の答えを選択したでしょう。 :-) –

+0

私は彼の答えに言及している理由はあなたが言っていることを聞いて、私の質問は特にシステムファイルを変更除外します。若干の変更を加えてしまえば、もはやブラインドアップデートを実行できなくなります。新しいバージョンのOpenCartをカスタムバージョンと手動でマージする必要があります。テーマを自己完結型パッケージとして配布することもできません。私が本当に避けたい痛みです! – Metaphile

+2

@Metaphile:vQmodは、ブラインドアップデートの問題の正確な理由のために作成されました。変更なしでテンプレート内の価格値を取得することも可能です。 '$ product_info'変数を使うことができます –

7

あなたの次の...

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, 
    ... 

は何が必要

関連する問題