Categories > TinyButStrong general (FR) >

Affichage conditionnel : trouver le moyen le plus adapté

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: ashorlivs
Date: 2006-01-10
Time: 15:20

Affichage conditionnel : trouver le moyen le plus adapté

Bonjour à tous,

avant tout je tiens à féliciter Skrol29 (et les autres auteurs / contributeurs s'il y en a) pour la simplicité de TBS. Après plusieurs années de Phplib et quelques essais dans Smarty, je respire...

Voici ma question, que je vais illustrer d'un exemple simple : afficher une liste dynamique contenant des valeurs répétées

<ul>
    <li>item 1</li>
    <li>item n</li>
</ul>

Si la liste ne contient pas de données, on peut annuler l'affichage des éléments <li>...</li> grâce à ifempty ou nodata.

Mais dans ce cas, la fusion génère un couple de balises <ul> vides :

<ul>
</ul>

Quelle serait la façon la plus propre d'empêcher cet affichage ? Est-ce possible en utilisant la syntaxe simplifiée ou bien il faudrait entourer les balises <ul> avec la syntaxe explicite ?

J'ai testé avec extend et encaps mais ça n'a pas fonctionné :/

Merci d'avance,
Ashor
By: Skrol29
Date: 2006-01-10
Time: 15:39

Re: Affichage conditionnel : trouver le moyen le plus adapté

Salut Ashor,

Le plus simple pour l'instant c'est d'ajouter une section "nodata" contenant un champs automatique [onshow] qui supprime les balises <ul>.

Exemple :
<ul>
  <li>[blk1.texte;block=li]</li>
  <li>[blk1;block=li;nodata][onshow;magnet=ul]</li>
</ul>

La prochaine version de TBS prévoit un paramètre pour supprimer un bloc parent en cas de source vide. Un peut comme le paramètre "navdel" des barres de navigation.
By: ashorlivs
Date: 2006-01-10
Time: 15:56

Re: Affichage conditionnel : trouver le moyen le plus adapté

Ok, j'en étais arrivé à ce genre d'astuce, mais j'avais anticipé la prochaine version en pensant que ça existait déjà ;)

Merci beaucoup.

Suggestion pour la prochaine version : en cas de source vide, suppression du bloc parent OU possibilité de supprimer un élément désigné par un ID (du genre <div id="identifiant">). Bon courage pour ce point-là...

Ashor
By: Skrol29
Date: 2006-01-10
Time: 16:12

Re: Affichage conditionnel : trouver le moyen le plus adapté

À priori, la lecture d'attributs HTML n'est pas à l'ordre du jour. Je sais que ça aiderais certains, mais sauf cas spécifique du paramètre "selected", TBS n'a aucune connaissance du HTML. C'est voulu comme ça, car sinon le moteur devriendrait d'une grand complexité, il deviendrait sensible à la cohérence HTML et perdrait en pluralisme. TBS sait faire autre chause que du HTML (email, OpenOffice, ...)
By: Anonymous
Date: 2006-01-10
Time: 23:48

Re: Affichage conditionnel : trouver le moyen le plus adapté

C'était juste une idée, tant qu'il y a moyen de faire autrement c'est cool. En tout cas, je suis impressionné. Petit mais costaud, ouep !
By: François
Date: 2006-02-07
Time: 20:10

Re: Affichage conditionnel : trouver le moyen le plus adapté

Merci Skrol29 pour l'exemple cela m'a permis de ne pas passer par un when qui me pose quelques problèmes.

Le coup du OnShow;magnet fonctionne à merveille dans mon cas.

François
By: Anonymous
Date: 2006-02-10
Time: 11:53

Re: Affichage conditionnel : trouver le moyen le plus adapté

Salut,

Dans mon cas, je gère l'affichage conditionnel dans le code php.  C'est pas forcément la meilleur solution, mais ça marche pas mal non plus :

html :
~~~~
<div id="toto">
  <!-- step = [is_print;magnet=div] -->
  ... choses à afficher ...
</div>

php :
~~~~
$cond = true; // or false, faites le test voulu...
$TBS->MergeField ( 'is_print', $cond );

Voili voilou

++
By: ioguix
Date: 2006-02-10
Time: 12:07

Re: Affichage conditionnel : trouver le moyen le plus adapté

oops, pardon, j'avais oublié de mettre mon nom dans le message précédent. toujours est-il que je constate que ce comportement de tester dan sle code php est conseillé à cet endroit :
http://tinybutstrong.com/fr/support.php#faq_slow

:D