Jump to content

[Résolu] Traduction D'un Bouton Selon La Catégorie


Recommended Posts

Bonjour à toute la communauté,

sur le site de mes clients j'aurais besoin de modifier le bouton "Ajouter au panier" par "Ajouter au devis" car une des catégories de leurs produits (des jeux en bois géants) passe par une demande de devis.

 

Et bien entendu, je souhaite garder "Ajouter au panier" pour l'autre catégorie des jeux familiaux que l'on peut acheter sur le site.

 

Or, depuis que le site est en ligne, leurs clients n'osent pas ajouter les jeux géants au "panier" car ils ne comprennent pas que c'est une simple demande devis. Ils envoient donc un mail.

 

Où pourrais-je introduire une condition if qui selon l'ID de la catégorie traduirait "Ajouter au panier" sinon "Ajouter au devis" ?

D'avance merci pour votre aide.

 

Le site au cas où : http://alortujou.com

Edited by Sébastien Boureau (see edit history)
Link to comment
Share on other sites

Bonjour Johann,

en effet j'ai vu que ces fichiers tpl comportaient le texte "Add to cart".

 

Malheureusement, mon problème ne se borne pas à une simple traduction mais à comment écrire cette condition if ?

 

Est-ce que ce serait dans le fichier productscategory.tpl du module productscategory  et surtout qqun sait-il comment la coder ?

Link to comment
Share on other sites

Merci Mediacom87,

 

je vous présente ce que j'ai écrit.

Je sens que je suis proche mais la syntaxe doit-être erronée :

 

Dans le fichier product.tpl, là où s'affiche le gros bouton "Ajouter au panier", la class est "box-car-bottom"

J'avais cette ligne :

<span>{if $content_only && (isset($product->customization_required) && $product->customization_required)}{l s='Customize'}{else}{l s='Add to cart'}{/if}</span>

que j'ai modifié en ceci vers la fin :

<span>{if $content_only && (isset($product->customization_required) && $product->customization_required)}{l s='Customize'}{else}{if $id_category == '13'}{l s='Ajouter au devis'}{else}{l s='Add to cart'}{/if}{/if}</span>

Dans mon back-office, l'ID de ma catégogie "Grands jeux" est 13.

C'est pourquoi je dis : "Si l'id de la catégorie est égale à 13, écrire "Ajouter au devis", sinon écrire "Add to cart"

 

Ca ne fonctionne pas sauf si je remplace le == '13' par != '13' et à ce moment sur tous les produits, peut importe la catégorie je lis "Ajouter au devis"

Ce qui me permet de penser que 13 n'est pas l'ID de ma catégorie.

J'ai beau scruter avec Firebug une autre ID, je ne trouve pas.

 

Comment pourrais-je trouver l'id de cette catégorie ?

Link to comment
Share on other sites

sur la page produit, vous ne pouvez récupérer l'id de la catégorie, tout simplement parce qu'il n'y en a pas, un produit pouvant être affecté à plusieurs catégories.

donc votre $id_category != 13 fonctionne car $id_category n'existant pas, il n'est jamais équivalent à 13.

 

La seule chose que vous pourriez récupérer c'est l'id de la catégorie par défaut du produit courant.

Link to comment
Share on other sites

Bon ben à force de tester j'ai trouvé.

Voici le code utilisé (j'ai retiré ici le début du code qui ne change pas) :

<span>(...) {else}{if $category->id == 13 || $category->id == 18 || $category->id == 19}{l s='Ajouter au devis'}{else}{l s='Add to cart'}{/if}{/if}</span>

Il fallait comparer $category->id à toutes les catégories auxquelles appartient le produit (ici la 13, la catégorie principale) et 2 autres sous-catégories, les 18 et 19.

Maintenant ça fonctionne.

 

le signe || signifie OU

 

Pour info, j'ai également utilisé le mode {debug} avant la fin du </span> qui m'a permis d'ouvrir une fenêtre SMARTY et de voir toutes les variables utilisées.

C'est comme cela que j'ai testé $category->id.

 

Merci pour l'aide des contributeurs de ce post.

Edited by Sébastien Boureau (see edit history)
Link to comment
Share on other sites

Bonjour,

 

merci pour votre retour qui aidera pas mal de monde à l'avenir.

 

vous pouvez améliorer le code en faisant ainsi :

<span>(...) {else if $category->id == 13 || $category->id == 18 || $category->id == 19}{l s='Ajouter au devis'}{else}{l s='Add to cart'}{/if}</span>
Link to comment
Share on other sites

Bon, le problème n'est pas tout à fait résolu, zut !

 

Je m'explique :

 

Je résume :

_ j'ai deux catégories A & B dont les produits doivent avoir un bouton avec le texte "Ajouter au panier"

_ j'ai une catégorie C dont les produits doivent avoir un bouton avec le texte "Ajouter au devis"

 

Je suis arrivé à le faire à partir du moment où on choisit un produit situé sur la première page d'une des catégories.

Malheureusement, si je choisis un produit en page d'accueil ou en page 2 (ou supérieure) d'une catégorie, mon texte "Ajouter au devis" n'est pas pris en compte.

Idem pour une recherche.

[édit] : En fait, dès que je modifie la page 1 de la catégorie (tri différent, plus de produits par page etc...) l'ID de la catégorie n'est plus 13, 18 ou 19 !

 

Comment est-ce que ces fichues ID de catégories fonctionnent-elles ?

Je suis perdu.

En mode {debug}, j'ai quelques pistes mais je ne trouve pas de solution.

 

Quelqu'un pour m'aider s'il-vous plaît ?

Edited by Sébastien Boureau (see edit history)
Link to comment
Share on other sites

ok

en fait dans vos pages produits, il existe effectivement une variable smarty {$category} qui est fonction de la page référente.

Donc si vous venez d'un module sur la page d'accueil , pas de catégorie.

De même si vous appliquez des filtres, c'est que vous utilisez le module de nav à facettes et donc la catégorie est perdue.

 

En revanche, sur vos fiches produits, vous pourriez baser votre test sur {$product->id_category_default}

Il retourne l'id de la catégorie par défaut du produit. Et celle-ci n'est pas fonction de la page référente.

 

Par contre, si vos produits appartiennent à plusieurs catégories, il faudra bien s'assurer que la catégorie par défaut renseignée est celle que vous testez.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...