SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 252 visiteurs en ce moment

Accueil > Interactivité, échanges > Jeux > Des jeux pour votre site > Boucles et Balises sur le plugin Jeux

Boucles et Balises sur le plugin Jeux

20 juin 2009 – par Maïeul, Patrice Vanneufville – 17 commentaires

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

Télécharger

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>

Télécharger

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

[1Le 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

Dernière modification de cette page le 20 juin 2009

Retour en haut de la page

Vos commentaires

  • Le 6 juin 2011 à 15:59, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

    Bonjour,

    je suis actuellement en pleine programmation d’un site sous SPIP, j’ai installé le plugin jeu et la Boucle jeux qui fonctionne parfaitement bien. J’aurai juste une petite question d’ordre un peu plus technique ! Je voudrais que lorsque l’on répond correctement à la question du qcm, on accède directement à la page suivante... Savez-vous s’il est possible de faire cela et comment ?

    Merci d’avance,
    Elo

    • Le 6 juin 2011 à 16:02, par Maïeul En réponse à : Boucles et Balises sur le plugin Jeux

      c’est quoi la page suivante ? j’ai peur que cela soit difficle, étant donné la complexité du code du plugin, pas ratiboisé depuis la version 1.9

    • Le 6 juin 2011 à 16:08, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

      La page suivante, c’est la rubrique suivante : par exemple je suis dans la rubrique27 et en cliquant sur la bonne réponse j’arrive sur la rubrique 28... En fait la partie du site que je réalise est une sorte d’enquête pour les enfants : quand ils répondent bien à la question, ils peuvent accèder à la thématique suivante. Si ce n’est pas possible je tenterai de modifier le principe du jeu. Merci quand même !

    • Le 6 juin 2011 à 17:20, par Patrice Vanneufville En réponse à : Boucles et Balises sur le plugin Jeux

      Salut.

      La solution ne pourrait-elle pas passer par l’affichage du commentaire par les scores ?
      -  Voir la doc ici : Des jeux dans vos articles !
      -  Exemple :

      [score]
      0%: Il est urgent de réviser. Recommence !
      30%: Tu n'as pas la moyenne... Recommence !
      50%: Ce n'est pas encore parfait... Recommence !
      100%: Tu es un as. Maintenant clique ici : [->rub28].

      Est-ce bien ce que tu cherches ?

    • Le 7 juin 2011 à 14:18, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

      Oui je pense que ça fera tout à fait l’affaire ! Merci beaucoup !

      Elo

    • Le 9 juin 2011 à 09:59, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

      J’ai encore une petite question en ce qui concerne ce plugin... Lorsque j’affiche le résultat, le bouton réinitialiser apparaît. Or je trouve que ce mot est un peu compliqué pour les enfants, du coup je voulais savoir s’il est possible de le modifier par le mot « rejouer » ou même carrément par une image ? J’ai essayé de chercher où je pouvais avoir accès à cette fonction dans le plugin mais comme je ne m’y connais pas suffisamment je préfère demandé...

      Merci d’avance,
      Elo

    • Le 9 juin 2011 à 10:08, par Maïeul En réponse à : Boucles et Balises sur le plugin Jeux

      oui c’est tout à fait possible.

      Il faut que tu reprenne le fichier lang/local.fr du plugin, que tu le copie dans le dossier lang de ton dossier squelettes (le cas échéant) et que dans cette copie tu modifie (l. 27) :

      1. 'reinitialiser' => 'R&eacute;initialiser',

      par

      1. 'reinitialiser' => 'Rejouer',

      voir par

      1. 'reinitialiser' => '<img src="'.find_in_path('toto.jpg')." alt="Rejouer"/>',

      plus d’info sur les chaînes de langues : http://programmer.spip.org/-Elements-linguistiques-
      et sur find_in_path : http://programmer.spip.org/-Elements-linguistiques- et http://programmer.spip.org/find_in_path

    • Le 9 juin 2011 à 10:43, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

      Génial ça fonctionne super bien ! Est-ce que c’est toujours dans ce fichier php que je peux modifier l’emplacement de l’image et enlever les deux [ ] qui l’entoure ?

      Merci beaucoup en tout cas, le rendu convient maintenant beaucoup plus au public que je souhaite viser !

    • Le 9 juin 2011 à 17:26, par Maïeul En réponse à : Boucles et Balises sur le plugin Jeux

      heu, quel image ? je pense pas que ce soit dans ce fichier php que tu puisse changer cela.

    • Le 10 juin 2011 à 00:18, par Patrice Vanneufville En réponse à : Boucles et Balises sur le plugin Jeux

      Bonjour.

      Je viens de modifier le plugin pour que les boutons soient désormais surchargeables — et que par exemple les [ ] soient enlevables.

      Il suffit donc de surcharger le fond fonds/bouton_rejouer.html (en le recopiant dans ton squelette, puis en le modifiant) et de sélectionner pour le jeu en question l’option de config suivante :

      [config]
      bouton_refaire=rejouer

      Le solution ci-dessus lang/local.fr peut donc être abandonnée.
      Nouvelle version du plugin : 2.2.0.
      Commit concerné : http://zone.spip.org/trac/spip-zone...

    • Le 30 octobre 2013 à 15:14, par billigha En réponse à : Boucles et Balises sur le plugin Jeux

      s’il vous plait comment fait on pour insérer un jeu et le jouer dans mon document html5 pas encore hébergé

    Répondre à ce message

  • Le 23 août 2013 à 11:19, par jmfre En réponse à : Boucles et Balises sur le plugin Jeux

    Bonjour

    Merci pour votre plugin

    Je cherche a afficher dans une page (squelette ou article) les résultats des QCM avec le texte en français (comme lorsque le corrigé s’affiche après un QCM).
    Pour l’instant, j’ai réussi à afficher le # RESULTAT_LONG, mais pas les résultats en français courant.

    Suis-je passé devant la solution sans la voir ? Pouvez-vous m’indiquer une piste ?

    Merci
    Jean-Michel

    • Le 31 août 2013 à 18:12, par Patrice Vanneufville En réponse à : Boucles et Balises sur le plugin Jeux

      Bonjour, difficile de répondre à cette question car les résultats sont stockés de façon un peu brute, à l’utilisateur de les exploiter comme il le veut.

      Vu que les phrases du QCM ne sont pas présentes dans #RESULTAT_LONG, mais seulement les différents index, il faudrait inventer un filtre pour réussir à retrouver les phrases d’origine : j’avoue que cela n’est pas inclus dans le plugin pour l’instant alors que ce serait bien utile...

      Aurais-tu un peu avancé dans le code de ce filtre ?

    • Le 31 août 2013 à 19:32, par jmfre En réponse à : Boucles et Balises sur le plugin Jeux

      Bonjour Patrick
      Pas de progrès sur le code de ce filtre.
      Je vais d’abord travailler pour être à l’aise avec les boucles et le PHP, puis je reprendrai ce sujet.
      Je posterai dans cette page si j’entrevois une solution.

      Merci pour ta réponse
      Jean-Michel

    • Le 2 septembre 2013 à 01:01, par Patrice Vanneufville En réponse à : Boucles et Balises sur le plugin Jeux

      Je vais réfléchir un peu à la question...

    Répondre à ce message

  • Le 16 juin 2011 à 09:55, par Elo En réponse à : Boucles et Balises sur le plugin Jeux

    Merci beaucoup pour ton aide ! En effet c’est maintenant beaucoup plus pratique de pouvoir modifier l’aspect du jeu ! Toutefois il y a quelque chose que je ne comprends pas, j’explique. J’ai bien surchargé le fond bouton rejouer.html dans un dossier fonds dans mon dossier squelettes. J’ai en même temps surchargé le fichier jeux.css
    J’ai voulu ajouté en background une image à la place du mot « Rejouer ». J’ai donc modifié dans le fichier css :

    .jeux_bouton_reset
    background-image:url(../image/titusTete.png) ;

    Sachant que dans le fichier html du bouton_rejouer, le code est le suivant :

    1. <div class="jeux_bouton_reset">[ <a href="[(#NETTOYER_URI|parametre_url{var_mode, recalcul})]"><:jeux:rejouer:></a> ]</div>

    Mais l’image n’apparaît toujours pas, j’ai toujours le « Rejouer » entre [ ]. Ai-je mal positionner quelque chose, dois-je insérer l’image directement dans le fichier html ?
    Merci encore,
    Elo

    • Le 16 juin 2011 à 23:31, par ? En réponse à : Boucles et Balises sur le plugin Jeux

      Il y a peut-être un problème de chemin dans l’URL de ta CSS : vérifie cela avec le couple Firefox/Firebug ou toute autre possibilité de d’explorer les CSS de ta page en live.

      Questions : le dossier « /image/ » est-il bien au singulier ? les « ../ » sont-ils névessaires ? Le chemin relatif de l’image doit être calcul à partir de celui de la feuille. Problème : SPIP met aussi tout en cache !

      Pour retirer les crochets il faut les retirer du code HTML :

      1. <div class="jeux_bouton_reset"><a href="[(#NETTOYER_URI|parametre_url{var_mode, recalcul})]"><:jeux:rejouer:></a></div>

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le plugin FreeRadio 1.0

    25 mai 2011 – 29 commentaires

    Le plugin SPIP FreeRadio est un lecteur de flux audio gratuit à intégrer dans le corps des articles. Il permet de se mettre « à l’écoute » de WebRadios ou de sons à partir de leurs URL. FreeRadio est écrit en actionscript. Facile à intégrer, il est (...)

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

Ça spipe par là