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

Bonjour @corentin
J’aimerais savoir comment faire pour afficher les valeur des variable phone_no, email,… de la fiche société ainsi que des variables d’une fiche adresse dans l’entête du site web ?
Bonne journée,

Bonjour @Jonathan,

Étant donnĂ© que le champ standard « Adresse Â» de l’onglet « Pied de page Â» des « Paramètres du site web Â» n’est pas dynamique, il faudra passer par un « modèle de pied de page personnalisĂ© Â» :

image

Attention il est très facile de casser son site web s’il y a une erreur dans le modèle !

VoilĂ  une base :

{% set company = frappe.db.get_value("Company", "Dokompany", ["tax_id"], as_dict=True) %}
{% set address = frappe.db.get_value("Address", {"is_your_company_address": True}, "*", as_dict=True) %}

{% if company %}
{{ company.tax_id }}
{% endif %}

{% if address %}
{{ address | get_condensed_address(no_title=True) }}
{% endif %}

Re-Bonjour @corentin,

Je te remercie pour ta réactivité.
Je voulais surtout le faire pour l’En-têtes.

Merci pour le pied de page. Plus tard, je vais analysé le code frappe pour comprendre. ça m’aidera aussi pour la suite.

Ah oui excuse-moi j’ai lu trop vite ton message.

La section « En-tĂŞte Â» est dĂ©diĂ©e Ă  la balise invisible <head>, utilisĂ©e pour ajouter des mĂ©tadonnĂ©es pour le rĂ©fĂ©rencement, pour les machines.


Ce que tu cherches est sûrement la bannière mais je pense qu’elle n’est pas dynamique (pas de Jinja) :

image

Sinon tu peux aussi étendre le modèle standard de barre de navigation :

image

Pas de soucis.
Merci, c’est une bonne idée d’étendre le modèle standard de la barre de navigation.

Cependant, je ne peux pas dupliqué les modèle standard de pied de page ou barre de navigation.
Je dois crée une nouvelle.
Et dès que je fait ça, les donnée saisie dans l’onglet barre de navigation ou pied de page dans paramètre de site web ne sont plus utilisé.

La barre ou le pied de page est totalement vierge!

Tu aurais le code des modèles standard barre de navigation et pied de page.
J’aimerais juste rajouté des choses pas devoir tous refaire complètement a partir de zéro.

Ah oui, les modèles standard ne sont pas chargés dans la vue formulaire, donc impossible de les dupliquer. Le code du modèle en lui-même se résume à :

{% include "templates/includes/navbar/navbar.html" %}

Tu pourras trouver le code des templates Jinja ici :

Merci @corentin.
Efficace comme d’habitude.
J’ai réussi. Manque plus qu’a amélioré :+1:t6:

Bonne journée ou fin de journée. :hugs:

1 Like