SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

246 Plugins, 178 contribs sur SPIP-Zone, 163 visiteurs en ce moment

Accueil du site > Interactivité, échanges > Jeux > Jeux dans articles > Boucles et Balises sur le plugin Jeux

Boucles et Balises sur le plugin Jeux

20 juin 2009 – par Maïeul, Patrice Vanneufville

3 votes

Le plugin jeux permet de gérer des scores.

Pour vous aider, il propose deux modèles pour insérer les résultats dans un article. Mais peut-être aimeriez-vous créer votre propre modèle, voire même créer une page spéciale...

Rien de plus simple si vous connaissez le langage des boucles et balises de SPIP

Le plugin Jeux introduit en effet deux boucles spécifiques correspondant chacune à une table stockée en base de données. Veillez bien à avoir installé la toute dernière version du plugin afin de pouvoir bénéficier de toutes les fonctionnalités décrites dans cet article.

La Boucle JEUX

Elle permet, comme son nom l’indique, d’obtenir des informations sur les jeux.

Par défaut, elle n’affiche que les jeux publiés.

Les critères de sélection de la boucle JEUX sont :
-  {id_jeu}, chaque jeu ayant un id unique. Cette id peut-être passé en variable d’environnement, ou être dépendant du contexte de Boucle (par exemple sur une boucle JEUX_RESULTATS).
-  Les critères {date} et{age}, selon les mêmes principes que les critères de dates généraux de SPIP.
-  {type_jeu=type} pour choisir le type de jeu.
-  le critère {statut=xxx} pour sélectionner le statut. La valeur xxx peut prendre les valeurs publie, refuse, poubelle.
-  le critère {type_resultat=valeur} pour sélectionner les jeux selon le type de résultats stockés. Ces valeurs peuvent être :

  • "defaut" : recherche la configuration globale prévue par CFG avec les mêmes valeurs :
  • "aucun" : n’enregistre aucun résultat
  • "premier" : n’enregistre que le tout premier score, pour chacun des utilisateurs logués (score unique)
  • "dernier" : enregistre systématiquement le dernier score, pour chacun des utilisateurs logués (score unique)
  • "meilleur" : n’enregistre que le meilleur score, pour chacun des utilisateurs logués (score unique)
  • "meilleurs" : n’enregistre que les meilleurs scores, pour chacun des utilisateurs logués (scores multiples)
  • "tous" : enregistre tous les scores, pour chacun des utilisateurs logués

-  {titre_prive}, mais comme son nom l’indique, normalement c’est pour l’espace privé.
-  enfin, l’éventuel et un peu inutile {contenu}, correspondant au contenu "brut" (non transformé en formulaire) du jeu.

Il est bien sûr possible de faire aussi des tests d’expressions régulières sur ces critères, par exemple {statut==refuse|publie} sélectionnera les jeux dont le statut est refusé ou publié.

Les critères de classement de la boucle JEUX sont les mêmes que les critères de sélection, il suffit juste d’ajouter le mot par devant ; exemple : {par date}, éventuellement avec un ! pour inverser l’ordre.

Les balises propres à cette boucle et correspondant à des champs de données sont :
-  #ID_JEU
-  #STATUT
-  #CONTENU, correspondant au contenu "brut" ou "non interprété" du jeu stocké en base.
-  #TYPE_JEU
-  #DATE
-  #TITRE_PRIVE mais comme son nom l’indique, normalement c’est pour l’espace privé.
-  #TYPE_RESULTAT

Pour vous aider à rédiger clairement vos squelettes, quatre « fausses » balises (en fait ce sont un peu des raccourcis) vous sont aussi proposées par le plugin :
-  #TITRE_PUBLIC : extrait le titre public du contenu du jeu, équivalent à : [(#CONTENU*|titre_jeu)]
-  #CONTENU_PROPRE : correspond au contenu "interprété" du jeu. Cette balise remplace la syntaxe équivalente suivante : [(#CONTENU*|traite_contenu_jeu{#ID_JEU})]
-  #TYPE_RESULTAT_COURT : offre une description courte du type de résultat traduite dans la langue courante et remplace avantageusement une écriture du genre :

#SET{type,:jeux:resultat_#TYPE_RESULTAT:} [(#GET{type}|_T)]

-  #TYPE_RESULTAT_LONG : offre une description longue du type de résultat traduite dans la langue courante et remplace avantageusement une écriture du genre :

#SET{type,:jeux:resultat2_#TYPE_RESULTAT:} [(#GET{type}|_T)]

La boucle JEUX_RESULTATS

Elle permet d’afficher les résultats des jeux.

Ses critères de sélection sont :
-  {id_resultat}
-  {id_jeu}, éventuellement passé en contexte, global ou de boucle.
-  {id_auteur}, éventuellement passé en contexte, global ou de boucle.
-  {date}
-  {resultat_court}, correspondant au résultat court (nombre de faute ou de bonnes réponses, selon le type de jeu).
-  {resultat_long}, détaillant les résultats.
-  {total}, correspondant au total théorique de point.

Encore une fois et grâce au préfixe par, on peut s’en servir comme critères de classement.

Mais pour aller plus loin :
-  On peut par exemple classer les résultats dans l’ordre de résultat relatif au score théorique total. Ainsi {par round(resultat_court / total, 3)} classera par l’arrondi, à trois chiffres après la virgule, du résultat court sur le score théorique total.
-  Grâce au système de jointures semi-automatiques de SPIP, il est possible de classer et de sur des critères de la boucle AUTEURS ou de la boucle JEUX.

  • Pour faire sur des critères de la boucle JEUX, mettre dans les parenthèses de déclaration de la boucle JEUX_RESULTATS spip_jeux, comme ceci par exemple <BOUCLE_resultats(JEUX_RESULTATS spip_jeux){par statut} ... [1].
  • Pour faire sur des critères de la boucle AUTEURS, mettre dans les parenthèses de déclaration de la boucle JEUX_RESULTATS spip_auteurs , comme ceci par exemple <BOUCLE_resultats(JEUX_RESULTATS spip_jeux){par nom} ....

Les balises propres à la boucle JEUX_RESULTATS sont :
-  #ID_AUTEUR
-  #ID_RESULTAT
-  #ID_JEU
-  #RESULTAT_COURT
-  #RESULTAT_LONG
-  #TOTAL

Quelques exemple

Ces exemples sont tirés des modèles proposés par le plugin, mais légèrement simplifiés pour éviter d’introduire des usages avancés de spip, comme par exemple les balises #GET et #SET, ainsi que le problème des modèles.

Afficher les résultat d’un jeu

Il s’agit du modèle "jeu_resultats" simplifié. L’original se trouve ici.

  1. <B_resultats>
  2. <table  class='spip'>
  3. <thead><tr class="row_first" >
  4.                                         <th><:jeux:auteur:></th>
  5.                                         <th><:date:></th>
  6.                                         <th style="text-align:center"><:jeux:resultat:></th>
  7.                         </tr></thead>
  8. <BOUCLE_resultats(JEUX_RESULTATS spip_auteurs) {id_jeu}{par nom}>
  9. <!-- {statut==refuse|publie} -->
  10. <tr [class="(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})"]>
  11.         <td><a href="#URL_AUTEUR">#NOM</a></td>
  12.         <td>[(#DATE|affdate)] [(#DATE|heures)]:[(#DATE|minutes)]</td>
  13.         <td>#RESULTAT_COURT / #TOTAL</td>
  14. </tr>
  15. </BOUCLE_resultats>
  16. </table>
  17. </B_resultats>
  18. <br/><:jeux:aucun_resultat:>
  19. <//B_resultats>

Explication : cette boucle affiche sous forme de tableau les résultats du jeu dont l’id_jeu est passé en paramètre, classés par nom d’auteurs ayant joué.

Afficher les résultats d’un auteur

Il s’agit du modèle simplifié "auteur_resultats", l’original se trouve ici.

  1. <B_resultats>
  2. <table class='spip'>
  3. <tr class="row_first">
  4.         <th><:jeux:jeu_numero_court:></th>
  5.         <th><:jeux:jeu_type:></th>
  6.         <th><:date:></th>
  7.         <th><:jeux:resultat:></th>
  8. </tr></thead>
  9. #PAGINATION
  10. <BOUCLE_resultats(JEUX_RESULTATS spip_jeux) {id_auteur} {par id_jeu}{pagination 30}>
  11. <tr [class="(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})"]>
  12.         <td>#ID_JEU</td>
  13.         <td>#TYPE_JEU</td>
  14.         <td>[(#DATE|affdate)] [(#DATE|heures)]:[(#DATE|minutes)]</td>
  15.         <td>#RESULTAT_COURT / #TOTAL</td>
  16. </tr>
  17. </BOUCLE_resultats>
  18. </table>
  19. </B_resultats>
  20. <br/><:jeux:aucun_resultat:>
  21. <//B_resultats>

Commentaire : affiche les résultats de l’auteur dont l’id_auteur est passé en paramètre, classé par id_jeu et paginés par paquet de trente résultats.

Conclusion

Les balises et boucles de SPIP, c’est puissant !

Notes

[1] Le syntaxe de SPIP a évolué entre la 1.9 et la 2.0, il est possible que sur le 2.0, il ne soit pas nécessaire de préciser le préfixe spip_, mais c’est à vérifier

Répondre à cet article

Retour en haut de la page

Ça discute par ici

  • Plugin Pages uniques

    11 décembre 2008 – 75 commentaires

    Allez, avouez... il ne vous est jamais arrivé d’avoir besoin d’articles qui ne sont rattachés à aucun rubriquage particulier ? Des articles uniques, n’ayant ni de thème, ni de rapport avec aucun autre ? Ou encore des articles pour lesquels vous avez (...)

  • Le plugin Accès Restreint

    29 septembre 2006 – 518 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public et privé en accès restreint. Les zones ainsi définies ne sont alors accessibles qu’aux visiteurs authentifiés et (...)

  • Les thèmes de Sarka-SPIP 3

    26 décembre 2009 – 14 commentaires

    Cet article a pour but de présenter brièvement la liste des thèmes propres à Sarka-SPIP au travers d’une galerie de vignettes. La galerie Vous pouvez télécharger le thème que vous désirez en cliquant sur sa vignette. Prochainement, une description de (...)

  • Formulaire de participation à un événement

    23 janvier – 17 commentaires

    Cet article tente de rassembler des informations au sujet de l’affichage d’un formulaire de participation aux événements gérés par le plugin Agenda développé par Cédric Morin. La version 2 du plugin Agenda permet d’afficher dans l’espace public des (...)

  • Le Squelette Zpip

    11 novembre 2009 – 119 commentaires

    Zpip [1] est un squelette réutilisable, modulaire et disposant d’une galerie de thèmes. Il est issu d’une fusion des projets Zesty et SPIP-Zen. Installer Zpip Pour installer Zpip et jouer avec sans plus attendre, il suffit de suivre le guide (...)