Utiliser une variable dans descriptif article site Web

hello :slight_smile:

Nous avons désactivé l’affichage du tarif sur nos articles web car nous avons des tarifs qui dépendent des usagers du FabLab. Et l’affichage correct en fonction du type de client ne fonctionnait que lorsque les personnes étaient loggés. Le système montrant alors la liste de tarif adéquate.
Nous avons donc mis tous les tarifs à la main dans les descriptions de chaque articles du site web, afin que même un visiteur de passage puisse voir les tarifs, de la même manière que lorsqu’il vient en présentiel.
Cela évite de faire fuir les particulier/assos en voyant le tarif pro par défaut. Et évite les déconvenues pour les pros qui pensaient pouvoir utiliser les machines pour une bouchée de pain.

Cependant, comme vous vous en doutez, ce n’est pas optimal car en cas de changement de tarif il faut le faire Ă  deux endroits : une fois dans « prix de l’article Â» et une fois dans le descriptif de l’article du site web.

Nous avons tenté de récupérer le tarif de l’article via un code type {{ myKey.Value }} mais aucun des champs présents ne semble interpréter le code comme c’est le cas dans les envois de mail par exemple.

Y aurait-il un moyen de faire en sorte que les champs puissent récupérer une variable ?
Dans notre cas, cela nous permettrait d’écrire par exemple :

Tarifs :
utilisateurs type 1 : {{ variablePrixArticleListePrixType1 }} €/Heure
utilisateurs type 2 : {{ variablePrixArticleListePrixType2 }} €/Heure

et que sur la page web de l’article, un visiteur puisse voir :

Tarifs :
utilisateurs type 1 : X €/Heure
utilisateurs type 2 : Y €/Heure

Je vous remercie.

Hello @nathan_EcoCentre,

Le contenu du descriptif du site web n’est pas prĂ©vu pour ĂŞtre « rendu Â» en Jinja, donc les accolades seront affichĂ©es telles quelles.

Une solution pourrait être de recréer la description du site web automatiquement à l’enregistrement de l’article du site web via un script serveur.

Tu peux récupérer tous les prix associés à ton article en utilisant l’api frappe.get_all("Item Price", filters={"item_code": doc.item_code}, fields=["price_list_rate", "uom"])

Ensuite tu peux utiliser cette info pour construire un tableau présentant tes tarifs par utilisateur.
Ex (script déclenché avant l’enregistrement de l’article du site web):

table_body = []
for price in frappe.get_all("Item Price", filters={"item_code": doc.item_code}, fields=["price_list_rate", "uom", "price_list"]):
    table_body.append(f"""
        <tr>
          <td>{price.price_list}</td>
          <td>{price.price_list_rate}</td>
          <td>{price.uom}</td>
        </tr>
   """)
    
    
doc.web_long_description = f"""
<table class="table">
  <tbody>
    {''.join(table_body)}
  </tbody>
</table>
"""

Autre exemple en utilisant le tableau des spécifications:

doc.website_specifications = []
for price in frappe.get_all("Item Price", filters={"item_code": doc.item_code}, fields=["price_list_rate", "uom", "price_list"]):
    doc.append("website_specifications", {
        "label": price.price_list,
        "description": f"{price.price_list_rate} / {price.uom}"
    })

Bonne soirée!

3 Likes