Jump to content

Problème de condition


Recommended Posts

Bonjour à tous,

 

voilà j'essaie de mettre en place le module de la loi chatel mais j'aimerais que les dates de livraison soit de couleur différente afin de distinguer correctement les articles en stock de ceux qui ne le sont pas.

 

{if $delivery.5 <= 0}
    <p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {else}
    <p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {/if}

 

Je ne sais pas trop ce qui cloche dans cette condition car le résultat obtenu c'est qu'il m'affiche 2 fois la date de livraison, une fois dans une couleur et en dessous une deuxième fois dans l'autre couleur.

 

aurais je fais une erreur ?

 

En vous remerciant.

 

Cordialement Tchupa.

Link to comment
Share on other sites

Bon matin!

 

Je ne comprends pas super bien ce que tu tentes de faire, mais je peux tout de même régler un point :

La balise font n'est pas supporté en html 5, utilise du CSS à la place. Ta condition est trop longue, ton segment de code est identique dans les deux conditions, seul la valeur de la couleur change. Donc je verrais à réviser ton code comme ceci:

<p class="delivery" style="color:{if $delivery.5 <= 0}#f65a11{else}#03db2c{/if};"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>

 

Deuxièmement, je trouve étrange le fait que tu traites avec cette variable ($delivery) comme un tableau et un objet à la fois.

 

$delivery.5 signifie que tu t'attend à un ObjectModel ou un enfant de cette interface.

$delivery[0] désigne que cette variable est une variable de type Array() et non un ObjectModel.

 

Cordialement,

 

Martin

Edited by Martin Uker K (see edit history)
Link to comment
Share on other sites

Bonjour,

 

tout d'abord merci pour ta réponse, ce que je voudrais faire en gros c'est afficher mon délai de livraison en vert quand le produit est en stock et l'afficher en orange quand l'article choisi nécessite un délai supplémentaire (donc hors stock physiquement).

 

D'ailleurs dans mon premier poste je n'ai pas mis la bonne condition :( "mode boulet"

 

{if $delivery.5 <= 0}
	<p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {elseif $delivery.5 >0}
	<p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {/if}

 

Et le code du tpl en entier:

 

{if $datesDelivery|count}
 <div id="loi_chatel">
  {if !$oos}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#f65a11">{l s='Expedition prevue'}</font></a></p>

  {else}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#03db2c">{l s='En stock'}</font></a></p>
  {/if}

  {foreach from=$datesDelivery item=delivery}
   {if $delivery.5 <= 0}
	<p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {elseif $delivery.5 >0}
	<p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
   {/if}

  {/foreach}
  <div name="openclosecarrier" id="openclosecarrier" class="cachediv">
   {foreach from=$datesDelivery item=delivery}
	{if $delivery.5 == 0}
	 <div class="firstcarrier">
	  <p class="carriername">{$delivery.2}</p>
	  <p class="carrierimg">{$delivery.3} </p>
	  <p class="carrierprice">{$delivery.4}</p>
	 </div>
	{/if}
   {/foreach}
   {foreach from=$datesDelivery item=delivery}
	{if $delivery.5 <> 0}
	 <div class="allcarrier">
	  <p class="delivery">{l s='Livré entre le'} {$delivery.0} {l s='et le'} {$delivery.1}</p>
	  <p class="carriername">{$delivery.2}</p>
	  <p class="carrierimg">{$delivery.3} </p>
	  <p class="carrierprice">{$delivery.4}</p>
	 </div>
	{/if}

 

Le soucis que je rencontre le voici en image:

 

post-125302-0-10822200-1376807974_thumb.png

J'espère que c'est plus clair.

 

Merci.

 

Tchupa.

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

le problème viens de :

 

 {foreach from=$datesDelivery item=delivery}
		    {if $delivery.5 == 0}
			 code 1
		    {/if}
	   {/foreach}
	   {foreach from=$datesDelivery item=delivery}
		    {if $delivery.5 <> 0}
			 code 2
		    {/if}
	   {/foreach}

 

pour le code 2 tu as foreach et if <> donc ça affiche tout quand c'est différent de 0...

 

 

Le 2eme problème c'est de mettre 2 foreach identiques à la suite, il faut les fusionner, essaye de remplacer tes 2 foreach par :

 

 {foreach from=$datesDelivery item=delivery}
		    {if $delivery.5 eq 0}
                  code 1
               {else}
                   code 2
		    {/if}
	   {/foreach}

 

autrement dit :

 {foreach from=$datesDelivery item=delivery}
  {if $delivery.5 eq 0}
               <div class="firstcarrier">
                 <p class="carriername">{$delivery.2}</p>
                 <p class="carrierimg">{$delivery.3} </p>
                 <p class="carrierprice">{$delivery.4}</p>
                </div>
         {else}
               <div class="allcarrier">
                 <p class="delivery">{l s='Livré entre le'} {$delivery.0} {l s='et le'} {$delivery.1}</p>
                 <p class="carriername">{$delivery.2}</p>
                 <p class="carrierimg">{$delivery.3} </p>
                 <p class="carrierprice">{$delivery.4}</p>
                </div>
    {/if}
 {/foreach}

Link to comment
Share on other sites

je n'avais vu que 2 {foreach from=$datesDelivery item=delivery} à la suite en faite il y en as 3...

fusionne avec le premier foreach (qui fait 8 lignes) pour avoir :

 

 

{foreach from=$datesDelivery item=delivery}
	  {if $delivery.5 eq 0}
			  <p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
			<div class="firstcarrier">
			  <p class="carriername">{$delivery.2}</p>
			  <p class="carrierimg">{$delivery.3} </p>
			  <p class="carrierprice">{$delivery.4}</p>
                </div>
	  {else}

			<p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
			<div class="allcarrier">
			  <p class="delivery">{l s='Livré entre le'} {$delivery.0} {l s='et le'} {$delivery.1}</p>
			  <p class="carriername">{$delivery.2}</p>
			  <p class="carrierimg">{$delivery.3} </p>
			  <p class="carrierprice">{$delivery.4}</p>
			 </div>
		{/if}
 {/foreach}

Link to comment
Share on other sites

Bonjour,

 

j'ai toujours 3 lignes concernant les dates :/

 

post-125302-0-60331200-1376894509_thumb.png

 

<!-- date de livraison -->
 {if $datesDelivery|count}
 <div id="loi_chatel">
  {if !$oos}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#f65a11">{l s='Expedition prevue'}</font></a></p>

  {else}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#03db2c">{l s='En stock'}</font></a></p>
  {/if}

  {foreach from=$datesDelivery item=delivery}
    {if $delivery.5 eq 0}
							  <p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
						    <div class="firstcarrier">
							  <p class="carriername">{$delivery.2}</p>
							  <p class="carrierimg">{$delivery.3} </p>
							  <p class="carrierprice">{$delivery.4}</p>
    </div>
    {else}
						    <p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>
    <div class="allcarrier">
							  <p class="delivery">{l s='Livré entre le'} {$delivery.0} {l s='et le'} {$delivery.1}</p>
							  <p class="carriername">{$delivery.2}</p>
							  <p class="carrierimg">{$delivery.3} </p>
							  <p class="carrierprice">{$delivery.4}</p>
							 </div>
				    {/if}
  {/foreach}
  </div>
  <!--<div name="openclosecarrieropen" id="openclosecarrieropen"><p class="open"><a class="openclose" href="javascript:DivStatus( 'openclose', 'carrier' )">{l s='Tous les modes de livraison'}<img src="{$base_dir}modules/blockloichatel/img/open.gif" alt="open" /></a></p></div>
  <div name="openclosecarrierclose" id="openclosecarrierclose" class="cachediv"><p class="close"><a class="openclose" href="javascript:DivStatus( 'openclose', 'carrier' )">{l s='Réduire'}<img src="{$base_dir}modules/blockloichatel/img/close.gif" alt="close" /></a></p></div> -->
 </div>
 {/if}


 <!-- fin date de livraison -->

 

Tchupa.

Link to comment
Share on other sites

Je me posais la même question peut être un fichier dans le module en question, concernant la compilation c'est Ok c'est ma version de développement donc cache désactivé et compilation activé en permanence sur celle-ci.

Link to comment
Share on other sites

Je suis en local,

 

le code que j'ai mis plus haut est bien dans le fichier product.tpl,

 

je viens de faire un test en supprimant les lignes qui affiches les différents transporteur , la ligne bleu disparait, mais me reste toujours la ligne orange et verte quelque soit la condition rempli:

 

<!-- date de livraison -->
 {if $datesDelivery|count}
 <div id="loi_chatel">
  {if !$oos}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#f65a11">{l s='Expedition prevue'}</font></a></p>

  {else}
   <p class="oos"><a href="{$base_dir}cms.php?id_cms={$lc_cms}" target="_new"><font color="#03db2c">{l s='En stock'}</font></a></p>
  {/if}

  {foreach from=$datesDelivery item=delivery}
    {if $delivery.5 eq 0}
							  <p class="delivery"><font color="#f65a11">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>

    {else}
						    <p class="delivery"><font color="#03db2c">{l s='Livré entre le'} {$delivery[0]} {l s='et le'} {$delivery[1]}</font></p>

				    {/if}
  {/foreach}
  </div>
  <!--<div name="openclosecarrieropen" id="openclosecarrieropen"><p class="open"><a class="openclose" href="javascript:DivStatus( 'openclose', 'carrier' )">{l s='Tous les modes de livraison'}<img src="{$base_dir}modules/blockloichatel/img/open.gif" alt="open" /></a></p></div>
  <div name="openclosecarrierclose" id="openclosecarrierclose" class="cachediv"><p class="close"><a class="openclose" href="javascript:DivStatus( 'openclose', 'carrier' )">{l s='Réduire'}<img src="{$base_dir}modules/blockloichatel/img/close.gif" alt="close" /></a></p></div> -->
 </div>
 {/if}


 <!-- fin date de livraison -->

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...