2017-05-19 3 views
1

Je suis en train de montrer du texte sur une page produit, lorsque le prix est au-dessus 300. Je suis en utilisant le code suivant:Afficher le texte lorsque le nombre est au-dessus de 1.000

{if $product.integerprice >= 300} Free shipping {/if} 

product.integerprice de $ est le prix.

Cela fonctionne, mais seulement jusqu'à 1.000 (ce qui est 1000, mais le prix est généré avec un point pour des milliers). Après 1.000, il arrête d'afficher le texte.

Je n'ai pas de chance en pensant au problème, j'espère que quelqu'un pourra me guider.

+1

Est-ce une sorte de langage de modèle? La syntaxe me semble étrange. Quoi qu'il en soit, * peut * être * que 1.000 est interprété comme 1, car le point sera analysé comme séparateur décimal au lieu du séparateur des milliers. Quelle est la valeur de '$ product.integerprice'? –

+0

Oh c'est Smarty. –

+0

C'est une plate-forme personnalisée, c'est démodé, je travaille avec ce que j'ai :) Oui, je considérais aussi que 1.000 est interprété comme 1000, mais je ne pouvais pas penser à une solution de contournement. –

Répondre

1

Si le point est le problème, alors il suffit de se débarrasser de celui-ci:

{if str_replace('.', '', $product.integerprice) >= 1000} Free shipping {/if} 

Alors, pourquoi 300 travail alors? Dans votre cas, vous comparez une chaîne à un nombre. PHP convertit automatiquement votre chaîne en un nombre dans ce cas. Vous avez donc:

'300' >= 300 //true, chaîne convertie en 300

'1.000' >= 1000 //false, chaîne convertie en 1, puisque PHP pense que c'est un flotteur.

en raison de la mise à jour de la question - Je ne suis pas fort dans smarty. Mais je suppose que vous pouvez faire la même chose (supprimer le point) avec replace.

+0

Merci, c'est la bonne solution :) –

+0

Lol, j'ai changé votre lien pour faire référence à la version anglaise. Lire le russe est assez difficile pour la plupart des lecteurs. ;-) –

+0

@MCEmperor Ooops, sry pour cela et merci)) –