développement du thème OpenCart: Prix en nombre?
-
10-10-2019 - |
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?
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