Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 05/07/2017 15:28:23

raiyul
Petit nouveau
Inscription : 13/04/2016
Messages : 11

Opérateurs logiques "AND" "OR"

Ceci pourra être utile à plusieurs

En passant de la version 2.1.5  à la version 2.2.1 (en langue française), j'ai constaté ceci qui pourra venir en aide à plusieurs.
Dans un patron (template) de menu j'avais un code semblable à ceci :

{if condition_1 or (condition_2 and condition 3)} du code {\if}.
   Avec la version 2.2.1 (en langue française) ça ne marche plus sad .
Remplacement par
{if condition_1 || (condition_2 && condition 3)} du code {\if} et ça marche smile .

Donc remplacement de l'opérateur AND par &&  et de l'opérateur OR par ||.

C'est tout simple, mais très utile.

Hors ligne

 

#2 05/07/2017 15:59:43

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 105
Site Web

Re : Opérateurs logiques "AND" "OR"

Bonjour,

merci mais je viens de tester avec succès :

{$cond1=false}
{$cond2=true}
{$cond3=true}
	
{if $cond1 or ($cond2 and $cond3)}
	ok !
{/if}

Ca m'étonnerait que Smarty ait changé cela - peux-tu nous donner ton code ? Merci !

Hors ligne

#3 05/07/2017 17:49:41

raiyul
Petit nouveau
Inscription : 13/04/2016
Messages : 11

Re : Opérateurs logiques "AND" "OR"

Il s'agissait de code de menu, où le choix des pièces présentées du menu dépendait de conditions.

Voici un exemple corrigé (autres.tpl), patron utilisé dans un gabarit :

<ul style="list-style-type:none; ">
{foreach from=$nodelist item=node}
{if ($node->extra1 == 'retour' ) || ($node->extra1== 'annonce') ||
(   ($node->extra1=='membres' && feu_smarty::is_user_memberof('Membres')) ||
    ($node->extra1=='auteurs' && feu_smarty::is_user_memberof('Auteurs'))||
    ($node->extra1=='attente' && feu_smarty::is_user_memberof('potentiel'))
     )}
  {if $node->current == true}
  <li><a href="{$node->url}" class="currentpage"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>
  {else}
  <li><a href="{$node->url}">{$node->menutext}</a></li>
  {/if}
{/if}
{/foreach}
</ul>

Il est possible que hors de l'utilisation dans un menu au sein d'un gabarit, AND et OR passent très bien. Et je précise que le site est installé en français.

Hors ligne

#4 07/07/2017 08:10:18

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 105
Site Web

Re : Opérateurs logiques "AND" "OR"

J'ai testé avec succès les opérateurs de comparaison or / and dans Navigator.

C'est bien par Navigator que tu passes ?

Hors ligne

#5 07/07/2017 11:31:40

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 5 973
Site Web

Re : Opérateurs logiques "AND" "OR"

Et je précise que le site est installé en français.

Tu as récupéré le fichier "en français" sur quel site ??


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#6 07/07/2017 15:23:41

raiyul
Petit nouveau
Inscription : 13/04/2016
Messages : 11

Re : Opérateurs logiques "AND" "OR"

Voici d'où provient la mise à jour de 2.1.5 à 2.2.1 :

s3.amazonaws.com/cmsms/downloads/13729/cmsms-2.2.1-install.expanded.zip

avant la mise à jour tout fonctionnait admirablement avec AND et OR dans la navigation. Sinon rien n'avait été modifié.

Hors ligne

#7 07/07/2017 17:02:17

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 5 973
Site Web

Re : Opérateurs logiques "AND" "OR"

cmsms-2.2.1-install.expanded.zip

c'est bon mais pourquoi utiliser cmsms-2.2.1-install.expanded.zip et non le  cmsms-2.2.1-install.zip

avant la mise à jour tout fonctionnait admirablement avec AND et OR dans la navigation. Sinon rien n'avait été modifié.

Ce qui est bizarre c'est que airelibre n'a pas de soucis, mais alors
poste dans le Forum EN en donnant le maximum de précisons sur ton gabarit et avec quel module tu l’utilises maintenant et avant la mise à jour.
Indique aussi version PHP et serveur utilisé
A la rigueur tu peux mettre un lien sur cette discussion pour suivre

suivre sur le forum EN
https://forum.cmsmadesimple.org/viewtop … =3&t=76885


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#8 10/07/2017 09:20:48

raiyul
Petit nouveau
Inscription : 13/04/2016
Messages : 11

Re : Opérateurs logiques "AND" "OR"

J'ai  placé ma description sur le forum anglais.

Calguy m'a répondu assez rapidement (voir sous  forum.cmsmadesimple.org/viewtopic.php?f=3&t=76885&e=0)

Si j'ai bien compris la réponse de Calguy,
CMSMS 2.2 a introduit une nouvelle version de smarty qui applique probablement des règles plus strictes pour l'analyse syntaxique.

Les mots 'or' et 'and' sont des opérateurs permis à la place de '||' et '&&'. Le problème proviendrait des blancs.
L'interpréteur a de la peine à comprendre à l'analyse que le 'or' doit être considéré comme un opérateur.

Calguy propose d'ajouter des espaces autour de tous les opérateurs de comparaison.

Essai concluant
Si je veille a avoir des blancs partout avant et après les opérateurs 'or' et 'and' mon code fonctionne parfaitement.

Avoir des espaces avant et après tout opérateur 'and' ou 'or' est donc aussi une bonne solution.

Hors ligne

#9 10/07/2017 10:01:53

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 105
Site Web

Re : Opérateurs logiques "AND" "OR"

Merci pour ces explications - je n'avais pas testé sans blanc car en effet, l'interpréteur ne peut pas comprendre :

{if $varor$var}

Ca parait logique wink

Bonne continuation

Hors ligne

#10 10/07/2017 11:56:01

raiyul
Petit nouveau
Inscription : 13/04/2016
Messages : 11

Re : Opérateurs logiques "AND" "OR"

Oui oui, d’accord l'exemple donné est clair ; mais j'avais entre autres quelque chose de ce genre (je simplifie)

(($node->extra1 == 'retour' )or ($node->extra1== 'annonce'))and (...

et avant la version 2.2 ça fonctionnait sans espaces entre ')' et 'or' ou ')' et 'and'

avec bien des interpréteurs, ça fonctionnerait et ça a fonctionné de la version 1.2 à la version 2.1.5 de CMSMS

Maintenant il faut écrire le même ainsi

(($node->extra1 == 'retour' ) or ($node->extra1== 'annonce')) and (...

Hors ligne

#11 10/07/2017 12:02:44

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 105
Site Web

Re : Opérateurs logiques "AND" "OR"

ok merci pour tous les futurs lecteurs smile

Hors ligne

#12 10/07/2017 15:30:47

Ouik
Modérateur
Lieu : Bourgogne
Inscription : 08/01/2008
Messages : 1 025
Site Web

Re : Opérateurs logiques "AND" "OR"

C'est étonnant que ça ait fonctionné, il faut croire que smarty avait une certaine tolérance…

Hors ligne

Pied de page des forums

  Flux Rss Twitter FaceBook