Question

Je dois afficher certains produits différemment selon leur prix. J'espérais que je pouvais simplement vérifier la valeur de la variable $price à partir du fichier de thème concerné (s), mais $price contient une chaîne formatée de monnaie. Et parce que OpenCart prend en charge une variété de formats de devises, il n'y a pas moyen simple et robuste de la conversion des chaînes de prix retour en chiffres.

Je l'ai regardé dans la classe de contrôleur de produit, ControllerProductProduct. Pour autant que je peux dire, OpenCart ne pas exposer une valeur de prix numérique à vue. Je pourrais modifier la classe de contrôleur, mais je préfère ne pas car il compliquerait les mises à jour.

Ai-je oublié quelque chose? Yat-il pas facile d'effectuer une comparaison numérique sur un prix à partir d'un thème OpenCart?

Était-ce utile?

La solution 2

Malheureusement, la réponse est non, OpenCart ne pas exposer les valeurs de prix numériques à des thèmes. Vous devrez modifier les fichiers de base, qui Brad explique comment faire .

Autres conseils

Regarder v1.4.9.4 à product.php (ControllerProductProduct) je peux voir le code suivante qui vous parlez la valeur formatée de $ prix que:

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

Pourquoi changez-vous pas que ce soit ce qui suit ...

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

Et puis quelques lignes plus bas de cela, vous pouvez alors passer cette valeur $ price_num au modèle en ajoutant ce qui suit:

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

devrait faire ce que vous avez besoin

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top