Pour tirer au sort une ou plusieurs valeurs pour une autre action ou afficher un dicton

Cette action a été inspirée par un post de Cosmic sur le forum : https://lomart.fr/forum/up-forum/335-bg-slideshow-random

🆙 random : sélectionne une ou plusieurs valeurs dans une liste ou un dossier

Cliquer pour lire la documentation

syntaxe
{up random=1;2;3} -> une des 3 valeurs au hasard
{up random=1;2;3 | maxi=2 | sep-out=;} -> deux des 3 valeurs au hasard séparées par un point virgule
{up random=1,2,3 | sep-in=,} -> une des 3 valeurs séparées par une virgule au hasard
{up random=dossier/*.{jpg,ˆpng}} -> un des fichiers jpg ou png dans le dossier
{up random=dossier/fichier.csv} -> une des valeurs dans le fichier csv
{up random}val1{===}val2{===}val3{===}valN{/up random} -> une des valeurs au hasard
@version: UP-3.1 @license: GNU/GPLv3 @auyhor: Lomart @tags: Expert
  • random: liste des valeurs, fichier txt ou csv avec les valeurs, chemin vers fichiers
  • maxi = 1: nombre de valeurs retournées
  • sep-in = ;: séparateur pour la liste des valeurs en entrée
  • sep-out = ;: séparateur pour la liste des valeurs en sortie
  • csv-numcol: numéro de la colonne d'un fichier .csv
  • csv-title = 1: 1 si la 1ere ligne d'un fichier .csv contient les titres
  • mask = *.*: masque pour sélection des fichiers d'un dossier. ex: *\[ab\].[jpg,png] -> [ab]*.{jpg,png}
  • msg-empty: message si aucun argument en entrée

Mise en forme du retour

  • main-tag (block): 0=liste texte ou balise du conteneur pour support id, class et style
  • item-tag = div: 0=liste texte ou balise du conteneur pour support id, class et style
  • id: identifier
  • main-style: classe et style inline pour bloc principal
  • item-style: classe et style inline pour les blocs item
  • css-head (base-css): style ajouté dans le HEAD de la page

Les données tirées au sort

La première chose à définir est la liste des données utilisée pour le tirage au sort.

Comme argument principal

Une liste de valeurs

Cette méthode "simple" permet de fournir une valeur aléatoire à une autre action.

Imaginons que nous disposions de plusieurs dossiers (slideshow-1 à slideshow-4) pour les images d'un slideshow et que nous voulions en choisir un au hasard, ce shortcode le fera parfaitement.

{up bg-slideshow=images/slideshow-{up random=1;2;3;4}}

Dans l'exemple ci-dessus, j'utilise une liste de valeurs séparées par un point-virgule (voir option sep-in), mais j'aurais pu indiquer l'ensemble des nombres de 1 à 4 avec l'argument 1-4

Voyons cela avec un exemple :

{up counter=0,{up random=100-9999}
 | class=b; fs150; bg-yellow; t-red; p1; min-width:200px; tc}

Les fichiers d'un dossier

Si l'argument principal est un dossier, l'action va retourner un ou plusieurs fichiers correspondant au masque défini par l'option mask (*.* par défaut)

{up html=img
 | src={up random=images/photos | mask=*-mini.[jpg,png]}
}

Pour afficher une image au hasard, j'indique le nom du dossier comme argument et l'option mask pour limiter la sélection aux fichiers JPG et PNG se terminant par -mini.

Pour les besoins de la démonstration, j'utilise l'action html, mais il existe une action image-random qui fait cela à merveille.

Un fichier texte ou csv

Il est souvent pratique d'utiliser une source externe pour définir la liste des choix.

On dispose d'un fichier texte contenant un dicton par ligne, le shortcode ci-dessous va en afficher 1 ou 2 au hasard.

Dans cet exemple, j'utilise l'option maxi qui défini le nombre de valeurs à tirer au sort.
Pour la démo, son argument est aussi une action random qui retourne 1 ou 2.

Alors que dans les exemples précédents, nous récupérions une valeur en texte brut, la présence des options main-tag et item-style définissent la mise en forme

{up random=images\actions-demo\sentence.txt
  | maxi={up random=1;2}
  | main-tag=div
  | item-style=p1 mv1 bd-violet
}
L’intégrité est une composante essentielle de la sécurité. Et pas seulement en informatique !

2 options sont réservées aux fichiers CSV :

  • csv-title : 1 si la première ligne du fichier contient le titre des colonnes
  • csv-numcol : la position de la colonne contenant les données à utiliser. Par défaut, 0 retourne la ligne complète.

Un petit exemple avec le fichier departements-francais.csv

{up random=images/actions-demo/table-sort/departements-francais.csv
  | csv-numcol=2
| csv-title
| main-tag=h5
| main-style=tc;padding:10px;bd-violet
}
Seine-Maritime

Blocs dans le contenu entre shortcode

Une autre possibilité est de créer les contenus à sélectionner entre les shortcodes ouvrant et fermant de l'action.

Je vais faire court pour la démo, mais le principe est là. Notez que le style est

Shortcode en mode wysiwyg

Shortcode en mode code

<p>{up random}</p>
<h5><span style="color:red;">un</span></h5>
<p>{===}</p>
<p><strong><span style="color:green;">deux</span></strong></p>
<p>{===}</p>
<p><span style="background-color:tan; color:red; padding:6px"><strong>trois</strong></span></p>
<p>{/up random}</p>

Le résultat

un

Le résultat

Par défaut, il est retourné au format texte pur. Si plusieurs valeurs sont demandées avec l'option maxi, elles seront séparées par le caractère indiqué dans l'option sep-out (point-virgule par défaut).

Si une balise est spécifiée pour l'option main-tag, le résultat sera mis en forme en s'appuyant sur les options item-tag, main-style, item-style et id.

Une petite démonstration pour bien comprendre

{up random=1-999}
180
{up random=1-999 | maxi=3}
571;373;681
{up random=1-999 | maxi=3
 | main-tag=div | main-style=tc bd-purple p2
 | item-tag=span | item-style=b p1 m1 t-white bg-red}
495 780 245

Pour découvrir toutes les options disponibles, cliquez sur le bandeau bleu au début de cet article.

Pour info, cette page utilise 24 action(s) :
span (1) upactionslist (1) flexauto (6) counter (1) random (9) html (1) modal (2) csv2table (1) div (1) jcontent-info (1)