THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,
Je retravaille sur un site tournant sur Thélia 1.5 pour rajouter une fonction : que les codes promos ne puissent pas s'appliquer à certains produits, regroupés sur une même rubrique.
Et là je commence à désespérer un peu car j'ai aucune idée de comment faire ça.
Je voulais bricoler sur la page commande.php pour que si la commande contient au moins un article de la rubrique en question, on ne puisse plus rentrer de code promo.
Le problème c'est que je ne m'en sort pas avec les boucles conditionnelles. J'ai tenté vainement de trier par les refs avec une boucle conditionnelle sur le type PANIER mais ça ne prend pas en charge plusieurs conditions à la suite. L'idéal serai que je puisse mettre plusieurs variable pour "ref" dans la boucle THELIA_prod mais je n'y arrive pas non plus. Il n'y a que quelques références concernées, je suis prêt à les mettre directement dans le code html pour être tranquille mais là je sèche complètement. Si l'un de vous à une idée ?

<tr>
  <th colspan="4">Frais de livraison </th>
  <th align="center">#PANIER_PORT &euro;</th>
</tr>
  <T_prod>
		<THELIA_prod type="PANIER" ref="25">
			<tr><th colspan="5"><p class="derniereLigne">Le #TITRE n'est pas éligible aux codes de réductions</p></th></tr>
			</THELIA_prod>
			<THELIA_prod type="PANIER" ref="245">
			<tr><th colspan="5"><p class="derniereLigne">Le #TITRE n'est pas éligible aux codes de réductions</p></th></tr>
			</THELIA_prod>
			</T_prod>	
            <tr>
            	<td colspan="4">Remise</td>
            	<td align="center">#PANIER_REMISE &euro;</td>
            </tr>
            <tr>
				<th colspan="5">
				<p class="derniereLigne"><label class="codeDeReduction">Saisissez un code de r&eacute;duction</label>
				<input name="code" type="text" class="codeDeReduction"/>
				<button type="submit" class="boutonMemeLigneQuInput"><span><span>OK</span></span></button>
				</p>
				</th>
            </tr>  			
			<//T_prod>

Merci bien.

Last edited by trebor63 (12-11-2018 22:04:07)

Offline


Si je comprends bien ton souhait, afficher un message pour une liste de référence (25 ou 245).
(si le "25" est l'identifiant produit, c'est #ID qu'il faut utiliser à la place de #REF)

<THELIA_prod type="PANIER">
    <TEST_ref variable="#REF" test="dansliste" valeur="25,245">
        <tr><th colspan="5"><p class="derniereLigne">Le #TITRE n'est pas éligible aux codes de réductions</p></th></tr>
    </TEST_ref>
</THELIA_prod>

Offline


Attention de bien fermer la boucle conditionnelle :

<THELIA_prod type="PANIER">
    <TEST_ref variable="#REF" test="dansliste" valeur="25,245">
        <tr><th colspan="5"><p class="derniereLigne">Le #TITRE n'est pas éligible aux codes de réductions</p></th></tr>
    </TEST_ref><//TEST_ref>
</THELIA_prod>

OpenStudio Toulouse

Offline


exact, j'avais oublié ce point (merci @roadster31)

Offline


Bonsoir, merci de votre réponse très rapide.
C'est l'idée et on approche du but, en passant merci pour l'exemple de la boucle test, à un petit détails près :
Imaginons que j'ai la ref 245 et une autre différente de 245 et 25 dans le panier, la boucle test sortira la texte pour la deuxième référence et ça ne m'arrange pas.
Et là à part utiliser du php je ne vois pas de solution.

Merci beaucoup en tout cas

Offline


une troisième référence mais avec un message particulier, c'est ça ?

<THELIA_prod type="PANIER">
    <TEST_ref1 variable="#REF" test="dansliste" valeur="25,245">
        <tr><th colspan="5"><p class="derniereLigne">Message pour la référence 25 et 245</p></th></tr>
    </TEST_ref1>
        <TEST_ref33 variable="#REF" test="egalite" valeur="33">
            <tr><th colspan="5"><p class="derniereLigne">Message pour la référence 33</p></th></tr>
        </TEST_ref33>
            et on peut encore ajouter d'autres boucles...
        <//TEST_ref33>
    <//TEST_ref1>
</THELIA_prod>

Offline


Un petit délai pour les nouvelles, je me suis concentré sur le désign cette semaine.

Merci pour vos réponses. Mais ça coince dans tout les cas.
Il faudrait l'équivalent d'un if then ou le fait qu'il y ai par exemple la référence 22 ou 23 dans le panier (exmple) empêche l'affichage.

Mais j'ai du mal à m'expliquer alors je vais prendre l'exemple du site tout simplement.
Disons qu'on a une ancienne gamme de produit d'id 1 à 20, avec un système de code promotionnel depuis moultes temps.
Là on veut lancer une nouvelle gamme,disons ref produit 21 22 et 23 pour lesquels on ne veut pas que le client puisse appliquer un code promotionnel.
Déjà à ce niveau j'ai complètement coincé, et je me suis dit que j'allais bloquer le truc en empechant l'affichage du formulaire d'entrée du code promo en le plaçant dans une boucle conditionnelle

Donc j'ai bricolé avec les boucles TEST (d'ailleurs merci pour vos exemple parceque j'avais pas tout compris), mais le problème du coup de la boucle, c'est que si j'ai imaginons un produit id 10 et 22, il va m'afficher quand même le formulaire à cause du 10.

Du coup je coince sérieusement. Si vous avez une idée ? smile

Offline


Tu peux utiliser les variables pour ça: http://thelia.net/wiki/index.php?title= … SET_et_GET

On fait un tour de boucle panier pour voir s'il contient une vieille ref :

#SET{avec_vieille_ref,0}
<THELIA_panier type="PANIER">
    <TEST_test_ref variable="#ID" test="inferieur" valeur="20">
        #SET{avec_vieille_ref,1}
    </TEST_test_ref><//TEST_test_ref>
</THELIA_panier>

Ensuite, ailleurs dans ton template, tu peux utiliser cette variable dans une boucle test pour savoir si tu dois afficher ton formulaire ou pas :

 <TEST_vieille_ref variable="#GET{avec_vieille_ref}" test="egal" valeur="1">
    ... ce qu'il faut si le panier contient une vieille ref ...
</TEST_vieille_ref>
    ... ce qu'il faut si le panier ne contient pas de vieille ref ...
<//TEST_vieille_ref>

Avec les variables et les boucles test, tu peux faire de l'algorithmie de base dans les templates.


OpenStudio Toulouse

Offline


Bonjour, c'est exactement ce qu'il me faut. Je teste ça au plus vite. Merci beaucoup !