Jump to content

conditions sur une catégorie et ses sous-catégories


Recommended Posts

Bonjour à tous.
je veux afficher un petit logo sur l'image des produits d'une catégorie. sous Prestashop 1.6.
en mettant :

 {if $category->id == '6420007'|| $category->id == '600000'} 

(mon code)

{/if}

dans mon tpl, ça fonctionne très bien mais je voudrais que cette condition s'applique a toutes les sous-catégories des catégories de ma formule.
Quelqu'un a-t'il une solution?
Merci d'avance

Link to comment
Share on other sites

il y a 55 minutes, ndiaga a dit :

Bonjour,

Il  faut  essayer  de  jouer  avec  id_parent.

faites  un 


<pre> {print_r|$category} </pre>   

pour   voir  si vous  avez  id_parent.  

Oui et non, il faut mettre les conditions sur les nleft et nright

($category->nleft >= xxx && $category->nright <= yyy) avec xxx et yyy de la catégorie 6420007

Link to comment
Share on other sites

Il y a 14 heures, doekia a dit :

Oui et non, il faut mettre les conditions sur les nleft et nright

($category->nleft >= xxx && $category->nright <= yyy) avec xxx et yyy de la catégorie 6420007

Bonjour,
merci pour votre réponse.
Cependant ça reste flou pour moi.
nright et nleft correspondent a quoi exactement?
Nright correspond il aux sous catégories et nright aux catégories parentes?
sachant que les deux catégories citées dans mon message, sont deux catégories parentes et que l'une d'entre elles comporte plusieurs sous-catégories qui elles mêmes contiennent, aussi plusieurs sous-catégories.
encore merci

Edited by Michel presta (see edit history)
Link to comment
Share on other sites

il y a 34 minutes, doekia a dit :

Merci pour le lien.
Je vous avoue que je n'y comprend pas grand chose.
pouvez vous me donner une explication simple s'il cous plait?
Sachant que 6420007 et 600000 sont des catégories parentes  (l'une n'est pas la sous-catégorie de l'autre) et que je souhaite appliquer ma condition à ces deux catégories et leur sous-catégories.
Désolé, je suis un novice dans la manipulation des conditions et des variables.
Peut être pouvez vous me donner le code que je devrais mettre 😊
Merci pour votre aide.

Edited by Michel presta (see edit history)
Link to comment
Share on other sites

Aller en base de données, consulter la table ps_category,

select id_category,nleft,nright from  ps_category where id_category in (6420007,600000);

En fonction du résultat écrire dans ton tpl

{if ($category->nleft >= <nleft600000> && $category->nright <= <nrigh600000>) || ($category->nleft >= <nleft6420007> && $category->nright <= <nrigh6420007>)}
  ... ton code ...
{/if}

Bien sûr replacer nleft6xxxxx et nright6yyyyy par les valeurs en provenance de ta base de données

 

Link to comment
Share on other sites

juste une petite question.
<nrigh600000> doit etre remplacé par <nrigh677> ou bien par <677> seulement?
Les valeurs trouvées par la requête sont les suivantes: 

                nleft        nright

600000  677            774

6420007 775           776

merci

Link to comment
Share on other sites

j'applique cette formule dans le fichier product-list.tpl:

{if ($category->nleft >= <nleft 677> && $category->nright <= <nright 774>) || ($category->nleft >= <nleft 775> && $category->nright <= <nright 776>)}

    <span class="drop_shipping">
            <span class="dropshipping">{l s='drop shipping'}</span>
   </span>
{/if}

 j'ai une erreur 500.

la formule suivante fonctionne pour les deux catégories mais pas pour les sous-catégories

{if $category->id == '6420007'|| $category->id ==  '600000'}
                        <span class="drop_shipping">
                        <span class="dropshipping">{l s='drop shipping'}</span>
                        </span>

 {/if}

Je dois me tromper quelque part

 

Link to comment
Share on other sites

en attendant de trouver la solution je vais mettre toutes les catégories dans le code 😒
{if $category->id == '6420007'|| $category->id == '600000'|| $category->id == '610000'|| $category->id == '611000'|| $category->id == '612000'|| $category->id == '613000'
                    || $category->id == '614000'|| $category->id == '620000'|| $category->id == '621000'|| $category->id == '622000'|| $category->id == '623000'|| $category->id == '624000'
                    || $category->id == '630000'|| $category->id == '6410000'|| $category->id == '6420000'|| $category->id == '650000'|| $category->id == '660000'|| $category->id == '661000'
                    || $category->id == '668000'|| $category->id == '669000'|| $category->id == '661200'|| $category->id == '661300'|| $category->id == '661400'|| $category->id == '661500'
                    || $category->id == '670000'|| $category->id == '690000'|| $category->id == '6420001'|| $category->id == '691000'|| $category->id == '692000'|| $category->id == '693000'
                    || $category->id == '700000'|| $category->id == '710000'|| $category->id == '720000'|| $category->id == '730000'|| $category->id == '740000'|| $category->id == '750000'
                    || $category->id == '760000'|| $category->id == '770000'|| $category->id == '780000'|| $category->id == '790000'|| $category->id == '800000'|| $category->id == '810000'
                    || $category->id == '820000'}

 

comme ça ça fonctionne mais c'est moche

Edited by Michel presta (see edit history)
Link to comment
Share on other sites

Il y a 2 heures, Michel presta a dit :

J'ai modifié mon premier message car il était un peu trop virulent 🤣

Fort heureusement tout le monde peut consulter l'historique des changements.

Je ne vois pas trop quel age tu as passé, mais si tu relis mes réponses je ne vois pas comment tu pourrais trouver que ma remarque n'est pas justifiée.
Mais bon comme à priori ceux qui aident ont le droit de ce faire traiter de toute sorte de nom sur ce forum tandis que ceux qui demandent celle-ci sont prompt à la susceptibilité quoiqu'il fasse. Je préfère quitter ce thread. Et je m'abstiendrai de t'aider à l'avenir.

 

Link to comment
Share on other sites

J'ai plus de 55 ans et je demande de l'aide

Si tu ne le fais pas avec plaisir, je ne vois pas pourquoi tu réponds aux messages

Que je sache, je ne t'ai traité de rien et en contrepartie je serait pathétique. 

Ça n'est pas la peine de répondre si c'est pour te justifier. 

Je n'en ai pas envie. 

Maintenant, tu as résolu mon problème qui était urgent et je t'en remercie. 

Maintenant qu'il est résolu, je prendrais le temps d'étudier ce morceau de code pour le comprendre et savoir l'appliquer par la suite. 

Salutations 

Edited by Michel presta (see edit history)
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...