Magento Modèle D'E-Mail Si Des Instructions
Magento Modèle d'e-Mail Si des Instructions ne sont pas de l'évaluation de vrai quand j'en attends. Quelqu'un peut me dire quel est le problème? Regardez le code suivant:
{{var customer.group_id}}
{{if customer.group_id}}Print true{{else}}Print false{{/if}}
{{if customer.group_id==4}}Print true{{else}}Print false{{/if}}
{{if customer.group_id=4}}Print true{{else}}Print false{{/if}}
{{if customer.group_id eq 4}}Print true{{else}}Print false{{/if}}
La sortie est
4
Print True
Print False
Print False
Print False
J'ai essayé de mettre des guillemets autour de la 4, mais même résultat. Comment puis-je évaluer les égalités avec magento modèle d'e-mail si des instructions?
Vous devez vous connecter pour publier un commentaire.
Creuser dans le code, il semble que le modèle logique est mis en œuvre par
Varien_Filter_Template
(dans lib\Varien pas app\code) dans lefilter
fonction qui émet un rappel à laifDirective
fonction si le modèle correspond à l'expression régulière. LeifDirective
utilise à son tour la_getVariable
la fonction à évaluer votreif
condition._getVariable
puis tokenizes l'état dansVarien_Filter_Template_Tokenizer_Variable
dans une propriété ou une méthode.Lorsque la si la condition est détectée à être une méthode, il va exécuter cette méthode, sinon il renvoie simplement la chaîne de valeur de la variable.
Tous les moyens (je pense!) que si vous voulez évaluer une expression à l'intérieur de l'instruction si, vous avez besoin d'ajouter un nouveau client attribut (il y a d'extensions disponibles pour cela) que le modèle permet d'évaluer. Donc, si vous définissez une valeur de type boolean "isMemberOfGroupNameX" attribut, puis le modèle de travail.
J'imagine que ce n'est pas la réponse que vous cherchez, mais je suis assez sûr que ce soit le cas.
HTH,
JD
J'ai résolu ce problème en utilisant le "bloc" de la technique.
Ce que vous faire est de vous transmettre l'ordre à un bloc et ensuite faire votre logique à l'intérieur de ce bloc.
Bien que ma solution est un problème différent, l'approche doit travailler ici.
Ce que je voulais, c'était d'avoir un paiement par chèque option et un supplément de texte dans l'email de confirmation rappelant à payer. J'ai ajouté ceci dans le nouveau modèle d'ordre:
Puis j'ai créé un fichier
app/design/frontend/default/default/template/paymentstatus/orderemail.phtml
Ce est le " si " de la logique, dans mon cas, je voulais voir si le statut de la commande a été que pour un chèque et ensuite seulement de rappeler au client que sa commande besoin de fonds compensés.
{{block type='core/template' area='frontend' template='paymentstatus/orderemail.phtml' order=$order}}<br />
ce code vous avez placéJ'ai pu plus ou moins accomplir ce droit dans le modèle à l'aide de {{dépendent}} balises de modèle.
Vous aurez pour évoquer cette variable dans app/code/local/Mage/Sales/Model/Order.php dans les méthodes comme sendNewOrderEmail() et ainsi de suite.
Dans les conditions normales d'Magento blocs/classes vous utilisez
$customer->getGroupId()
pour accéder à la valeur de l'id de groupe. Le CMS/e-Mail modèle équivalent estcustomer.getGroupId()
, pascustomer.group_id
comme vous avez écrit.