2011-01-11 7 views
4

Ich muss einige Produkte je nach Preis unterschiedlich anzeigen. Ich hoffte, dass ich einfach den Wert der $price Variable innerhalb der relevanten Theme-Datei (en) überprüfen könnte, aber $price enthält eine Währung formatierte Zeichenfolge. Und weil OpenCart eine Vielzahl von Währungsformaten unterstützt, gibt es keine einfache, robuste Möglichkeit, Preiszeichenfolgen in Zahlen umzuwandeln.OpenCart Theme-Entwicklung: Preis als Anzahl?

Ich habe in der Produkt-Controller-Klasse, ControllerProductProduct gesucht. Soweit ich das beurteilen kann, stellt OpenCart den Ansichten keinen numerischen Preiswert zur Verfügung. Ich könnte die Controller-Klasse ändern, aber ich würde es lieber nicht, weil es Updates verkomplizieren würde.

Habe ich etwas übersehen? Gibt es keine einfache Möglichkeit, einen numerischen Vergleich eines Preises innerhalb eines OpenCart-Themas durchzuführen?

Antwort

0

Leider ist die Antwort brauchen, ist nicht, OpenCart nicht numerischen Preiswerte Themen aussetzt. Sie müssen Kerndateien ändern, die Brad explains how to do.

+2

Wenn Brad erklärt, wie man das löst, hätte ich * seine * Antwort gewählt. :-) –

+0

Ich höre was du sagst, weshalb ich seine Antwort erwähnt habe, aber meine Frage schließt ausdrücklich das Ändern von Systemdateien aus. Sobald Sie die geringste Änderung vorgenommen haben, können Sie keine blinden Aktualisierungen mehr durchführen. Sie müssen jede neue Version von OpenCart manuell mit Ihrer benutzerdefinierten Version zusammenführen. Sie können Ihr Design auch nicht als eigenständiges Paket verteilen. Es ist ein Schmerz, den ich wirklich vermeiden wollte! – Metaphile

+2

@Metaphile: vQmod wurde für den genauen Grund des blinden Update-Problems erstellt. Es ist auch möglich, den Preis in einer Vorlage ohne Änderung zu erhalten. Sie können die Variable $ product_info verwenden –

7

bei v1.4.9.4 in product.php Blick (ControllerProductProduct) Ich kann den folgenden Code sehen, die den formatierten Wert von $ Preis festgelegt, die Sie sprechen:

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

Warum nicht Sie dies ändern, die folgenden werden ...

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

Und dann ein paar Zeilen aus dieser nach unten, können Sie dann auf diese $ price_num Wert auf die Vorlage übergeben, indem Sie die folgenden Schritte aus:

$this->data['products'][] = array(
    'product_id' => $result['product_id'], 
    ... 
    'price'   => $price, 
    'price_num'  => $price_num, 
    ... 

tun sollten, was Sie