SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Outils pour squelettes > Archives outils squelettes

Le règne du sur mesure

Choisir son squelette avec un mot clé.

vendredi 5 septembre 2003, par courcy, DoriaN. Dernier ajout mercredi 6 décembre 2006


Comment à l’aide d’un mot clé vous pouvez décider quel squelette vous appliquerez pour tel article ou telle rubrique...


Le problème

En assurant une formation sur spip auprès d’instituteurs du Maine et Loire il m’a été posé un problème pour lequel je n’avais pas de solution :

- Certaines rubriques qui étaient consacrées aux horaires de l’école devaient être capables de présenter les 2 ou 3 articles qu’elles contenaient sans aucun lire la suite ou lien vers d’autres articles ;

- De plus grosses rubriques qui contenaient des articles plus volumineux et plus nombreux sur les travaux de leurs élèves ne devaient présenter qu’une introduction de ces articles avec les liens lire la suite classiques.

Le souci était que le choix d’un squelette pour la présentation d’une rubrique était unique et ce qui était adapté pour l’un ne l’était plus pour l’autre...

Utiliser des squelettes spécifiques aux rubriques ne faisaient que repousser le problème à plus tard et demande plus de difficultés pour la maintenance du site.

Il n’y a qu’une seule rubrique.html alors comment faire ?

Le début de la solution

Neoram m’a montré une solution simple à ce problème - loin de moi l’idée de prétendre donc qu’elle est de moi ; cet article se borne à essayer de la présenter de la façon la plus claire possible.

En fonction d’un mot clé associé à une rubrique on appellera tel ou tel squelette.

On va donc créer 3 squelettes

- Deux squelettes pour les deux présentation spécifiques (horaire ou travaux)
- Un squelette par défaut si aucun mot clé n’a été choisi

1. sous_rubrique-horaire.html

Vous voyez il présente de façon complète tous les articles

2. sous_rubrique-travaux.html

Celui-là ne présente pas l’article au complet mais juste un lien lire la suite avec le chapeau.

3. sous_rubrique-defaut.html il s’agit du squelette appelé par défaut si aucun mot clé n’est précisé.

celui-là est très simple.

Ça se complique un peu, la solution arrive

Voici maintenant le code plus complexe de « sous_rubrique.php3 » que j’expliquerai plus en détail après... Néanmoins faites en une première lecture pour comprendre ultérieurement.

Maintenant voici le code tant attendu (roulement de tambour !!!!) du squelette rubrique.html

On suppose au préalable :
- Que vous avez créé un groupe de mot clé que vous appellerez « squelette de rubrique » qui aura pour id 11 par exemple (à adapter à votre site bien entendu).
- Que dans ce nouveau groupe de mot clé vous avez créé les mots clés « horaire » et « travaux ».

Et voilà le tour est joué !


Recollons les morceaux :

Etape 1

BOUCLE_squelette_rubrique dans rubrique.html va récupérer le mot clé du groupe 11 c’est-à-dire du groupe « squelette de rubrique » et va l’affecter à la variable $squelette_rubrique (n’oubliez de remplacer le chiffre 11 par le numéro de votre goupe de mot clé).

Etape 2

Cette variable $squelette_rubrique est récupérée par le script « sous_rubrique.php3 » qui va alors construire la valeur de $fond en fonction de ce mot clé (relisez son code) :
- Si $squelette_rubrique vaut « horaire » alors $fond vaut sous_rubrique-horaire
- Si $squelette_rubrique vaut « travaux » alors $fond vaut sous_rubrique-travaux
- Si $squelette_rubrique vaut rien alors $fond vaut sous_rubrique-defaut

Etape 3

inc_public.php3 génère la page grâce la valeur qu’aura prise $fond


Et voilà, en espérant avoir été clair. N’hésitez pas à me faire part de vos remarques pour améliorer la lisibilité de cet article. Bien sûr le principe est généralisable à un grand nombre de mots clés et de squelettes :-) Vous n’êtes limités que par votre imagination !


Répondre à cet article

  • Choisir son squelette avec un mot clé.

    13 mars 2007 19:40, par AlainF

    Bonjour et merci pour cette contrib,

    Je suis sous 1.9.2 et j’utilise :

    <BOUCLE_squelette_rubrique(MOTS){id_rubrique}{type=Squelettes}{0,1}>
            <?php $squelette_rubrique='[(#TITRE|texte_script)]'; ?>
    </BOUCLE_squelette_rubrique>
    <INCLURE(sous_rubrique.php){id_rubrique}>

    pour la page rubrique.html et des pages sous_rubrique-defaut.html et autres sous_rubriques-motcle.html appelées par le(s) mot(s) clè(s) : "motcle"... choisis dans le groupe de mots clès : "Squelettes"

    Tout fonctionne très bien, Je l’ai adapté aux articles : seulement le système d’affichage des documents ne fonctionne pas, car il appelle des paramètres #ID_DOCUMENT et #URL_ARTICLE qui se perd ???

    Des idées ? par avance,merci beaucoup.

    Répondre à ce message

    • Choisir son squelette avec un mot clé. 13 mars 2007 19:42, par AlainF

      Désolé, je rajoute le fichier sous_rubrique.php : <?php

      //on analyse la valeur de la variable $squelette_rubrique
      if($squelette_rubrique){
            
      $squelette_rubrique="-".$squelette_rubrique;
      }else{
            
      $squelette_rubrique="-defaut";
      }

      //on construit $fond en fonction de $squelette_rubrique
      $fond "sous_rubrique".$squelette_rubrique;
      $delais 24 3600;

      include (
      "spip.php");

      ?>
      /code>

      Pour tout ceux que celà pourrait aider !

      Répondre à ce message

    Retour au début des forums

  • Choisir son squelette avec un mot clé.

    7 juillet 2006 23:10, par jojo

    J’utilise cette contrib en 1.8 . Je choisis les squelettes de mes rubriques et articles en fonction des mots clés. Cela marche trés biens sauf si on doit passer un parametre ( id d’un document par exemple) comme pour la gallery walma.

    par contre en 1.9 cela ne fonctionne plus du tout. Je ne sais plus ou positionner le choix du squelette qui était dans sous_rubrique.php3 sans conserver ce fichier. qui a une idée ?

    <?php

    //on analyse la valeur de la variable $squelette_rubrique
    if ($squelette_rubrique)
         {
    $squelette_rubrique="-".$squelette_rubrique;}
    else
         {
    $squelette_rubrique="-defaut";}

    //on construit $fond en fonction de $squelette_rubrique
    $fond "sous_rubrique".$squelette_rubrique;
    $delais 0;

    include (
    "inc-public.php3");

    ?>

    Répondre à ce message

    • Choisir son squelette avec un mot clé. 10 juillet 2006 12:01, par Seb

      Salut, j’ai aussi été confronté à ce problème pour le passage à la 1.9

      2 solutions en attendant une véritable modification de la contrib :

      - utiliser le couple php3/html comme dans la 1.8.3 qui fonctionne toujours même si c’est pas le top puisque ce système va être abandonné progressivement

      - utiliser une modification de la boucle postée par cyril ci-dessus en l’adaptant à une boucle rubrique...
      comme je connais rien au php, je suis passé tout simplement par un succession de boucle, chacune appelant un mot-clé de mes rubriques.

      ça donne ceci :

      <BOUCLE_principale(RUBRIQUES) {id_rubrique}>

      <BOUCLE_mot1(MOTS){id_rubrique}{titre=mot1}>
      <INCLURE{fond=sous_rubrique-mot1}{id_rubrique}>
      </BOUCLE_mot1>

      <BOUCLE_mot2(MOTS){id_rubrique}{titre=mot2}>
      <INCLURE{fond=sous_rubrique-mot2}{id_rubrique}>
      </BOUCLE_mot2>

      <BOUCLE_mot3(MOTS){id_rubrique}{titre=mot3}>
      <INCLURE{fond=sous_rubrique-mot3}{id_rubrique}>
      </BOUCLE_mot3>

      <//B_mot1>
      <//B_mot2>
      <//B_pmot3>

      </BOUCLE_principale>

      <INCLURE{fond=sous_rubrique-defaut}{id_rubrique}>

      <//B_principale>

      Bon et voila, ça a l’air de marcher...

      Répondre à ce message

      • Choisir son squelette avec un mot clé. 10 juillet 2006 22:08, par jojo

        cela marche mais ce n’est plus générique

        j’aurai souhaité quelque chose comme

        <B_squelette_rubrique>
         <BOUCLE_squelette_rubrique(MOTS){id_rubrique}{type=Squelettes}{0,1}>
                     [<INCLURE {fond=rubrique-(#TITRE|texte_script)}{id_rubrique}>]
        </BOUCLE_squelette_rubrique>
        </B_squelette_rubrique>
        <INCLURE{fond=rubrique-defaut}{id_rubrique}>
        <//B_squelette_rubrique>

        mais spip n’a pas l’air d’apprécié .. page blanche

        Répondre à ce message

      • Choisir son squelette avec un mot clé. 10 juillet 2006 23:34, par jojo

        seb je dois avoir un autre pb car la boucle de cyril me donne aussi une page blanche.. même si je corrige le pmot3 .

        Répondre à ce message

        • Choisir son squelette avec un mot clé. 11 juillet 2006 10:12, par Seb

          Effectivement ya un pb dès que la page n’a pas de mot-clé...
          Essaie cette solution :

          <B_squelette_rubrique>

          <BOUCLE_squelette_rubrique(MOTS){id_rubrique}{id_groupe==^1}{0,1}>               

                  <BOUCLE_selection_squelette(MOTS){id_rubrique}{titre=#TITRE}>
                  <INCLURE {fond=sous_rubrique-(#TITRE|texte_script)}{id_rubrique}>
                  </BOUCLE_selection_squelette>

          </BOUCLE_squelette_rubrique>       
                 
          </B_squelette_rubrique>

                  <BOUCLE_squelette_defaut(MOTS){id_groupe !==^1}{0,1}>                       
                  <INCLURE{fond=sous_rubrique-defaut}{id_rubrique}>               
                  </BOUCLE_squelette_defaut>
                 
          <//B_squelette_rubrique>       

          Pour que ça marche il faut créer comme dans la contrib initiale un groupe de mot clefs qui contient les mots clefs correspondant aux différents squelette du site. Dans mon cas le groupe de mot cléfs correspond à l’id_group=1 et ensuite il faut dissocier les boucle, une pour quand l’id_groupe=1 (alors on choisit le mot clef qui correspond à notre squelette de sous rubrique) et quand l’id_groupe est différent de 1 auquel cas on prend en compte le squelette de sous_rubrique par défaut.....

          Dis moi si ça marche pour toi STP

          Répondre à ce message

          • Choisir son squelette avec un mot clé. 11 juillet 2006 22:10, par jojo

            cela ne marche pas mais le problème n’est pas dans la boucle

            si dans rubrique.html je met simplement <INCLURE{fond=sous_rubrique-defaut}{id_rubrique} > donne une page vide

            avec en url http://127.0.0.1/nomsite/spip.php?rubrique76

            si je renomme sous_rubrique-defaut.html en rubrique.html j’ai bien ma rubrique...le pb est-il lié à id_rubrique ?

            par contre dans les articles j’ai INCLURE{fond=entete}{lang}> et ça cela marche

            Répondre à ce message

    Retour au début des forums

  • Choisir son squelette avec un mot clé.

    3 novembre 2005 00:27, par cyril

    Je ne sais plus où j’ai trouvé cette contrib...
    Pour changer de squelette d’article par mot clef, créez le fichier article.html (attention de ne pas écraser l’ancien) contenant :

    <BOUCLE_principale(ARTICLES) {id_article}>

    <BOUCLE_agenda(MOTS){id_article}{titre_mot=agenda}>
    <INCLURE(article-agenda.php3){id_article}>
    </BOUCLE_agenda>

    <BOUCLE_galerie(MOTS){id_article}{titre_mot=galerie}>
    <INCLURE(article-galerie.php3){id_article}>
    </BOUCLE_galerie>

    <INCLURE(article-normal.php3){id_article}>

    <//B_galerie>

    <//B_agenda>

    </BOUCLE_principale>

    <//B_principale>

    puis les fichiers article-normal.html, article-agenda.html, article-galerie.html dans votre dossier squelette avec les fichiers habituels article-*.php3 à la racine du site.
    Le squelette est alors choisi en attribuant un mot-clef (unique) agenda ou galerie du groupe de mots "affichage" par exemple (qui peut ensuite être enlevé de la navigation par mot clef avec le filtre {groupe_mot!='id du groupe de mot affichage'} sur l’article voire la rubrique, l’article ne possédant pas de mot clef aura le squelette article-normal.html.

    Cette boucle n’étant pas de moi ; un lien vers la contrib originale (si vous la connaissez) serait bienvenue dans cet article bien référencé, à la place de ce message.

    Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    17 avril 2004 16:57, par Psychotec

    Merci pour cette contrib. qui fonctionne parfaitement avec les rubriques. Cependant je n’arrive pas à faire la même chose pour les articles, j’ai remplacé partout rubrique par article mais ça ne fonctionne pas. Peux-tu donner un exemple pour les articles. Peut-être que mon erreur est dans ce code

    <BOUCLE_squelette_article(MOTS){id_article}{id_groupe=11}{0,1}>
          <?php $squelette_article='[(#TITRE|texte_script)]'; ?>
    </BOUCLE_squelette_article>
    <INCLURE(sous_article.php3){id_article}>

    Par avance merci.

    Paul

    Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    14 mai 2005 09:21, par bip

    Il semble qu’il y ait une petit limite en passage de paramêtres.

    En effet, si l’on a differents squelettes utilisant chacun des parametres complémentaire à id_rubrique, il est nécessaire de les passer dans leur ensemble dans le squelette de plus haut niveau.

    Sinon, c’est exellente contrib élégante et très simple à utiliser.

    Répondre à ce message

    Retour au début des forums

  • Je pense qu’il est utile de préciser que les noms sous-rubrique_"X".html sont modifiables à souhait et peuvent très bien donner rub_"X".html ; ainsi rub_defaut.html la page par défaut, rub_programme.html pour l’affichage d’un programme de Festival, de théâtre par exemple, comme celui dont je m’occupe en ce moment.

    Idem sur les articles, mais l’article ne demandait pas de précision.

    Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    27 janvier 2004 18:08, par bill

    Très bien tout ca, et bien expliqué, merci !

    Je ne sais pas si vous avez regardé bloog (le site est HS pour le moment pour cause d’attaque ...), mais la solution mise en oeuvre ressemble beaucoup à ca et la structuration proposée me semble bien pensée.

    ca se base sur un groupe de mots nommé squelette, après, si on choisit de mettre toto, c’est le squelette __rubrique-toto.html qui est utilisé.

    Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    21 avril 2004 22:28, par Eroux

    Volà, la réponse est peut-être stupide etje m’en excuse d’avance mais y a un truc que je comprends pas ....

    J’avais le même problème : besoin de différents squelettes en fonction des rubriques de mon site et ce depuis la page articles.php3... Alors j’ai monté une solution simpliste - que l’on peut améliorer grâce concaténation de chaine - : <?php
    if ($id_secteur==4) {
    $fond "ssprojet";
    } else if (
    $id_secteur==1){
    $fond "sswanted";
    } else if (
    $id_secteur==2){
    $fond "ssactualite";
    } else if (
    $id_secteur==3){
    $fond "ssrecherche";
    }
    $delais 3600;
    include (
    "inc-public.php3");


    ?>

    et vraiment, je ne vois pas ce que permet de plus les solutions présentées ci-dessus... Qqn peut m’éclairer ? Merci d’avance Emmanuelle Roux

    Répondre à ce message

    • > Choisir son squelette avec un mot clé. 11 juin 2004 16:57, par Olivier GENDRIN

      Ton problème à toi est d’avoir différentes présentations en fontcion du secteur.

      Ici, il s’agit d’avoir différentes présentations en fonctions des mots-clès de l’article. Ce sont deux approches différentes du problème du changement de squelette, tout simplement.

      Répondre à ce message

    • > Choisir son squelette avec un mot clé. 4 juillet 2004 22:48, par J.Mathias

      Bonjour,

      c’est vrai que la méthode de E.Roux semble plus simple. en revanche, j’ai donc placé ce script PHP simmplifié dans ma page article.php3 : <?php 

      if ($id_secteur==1$fond "editorial" ;  
      else if (
      $id_secteur==2$fond "revue" 

       
      $delais ; include ("inc-public.php3") ;

       
      ?>

      et placé un lien de ce type : a href="#URL_ARTICLE">[(#TITRE)] p>

      Pourtant les pages revue.html, revue.php3, editorial.html et editorial.php3 existent, cette derniere pointe vers editorial par exemple : <?php

      $fond 
      "editorial";
      $delais 24 3600;

      include (
      "inc-public.php3");

      ?>

      Il y a t’il quelques chose qui m’échappe ? Merci pour toutes ces contrib-

      J.Mathias

      Répondre à ce message

    Retour au début des forums

  • > Attribuer un mot clé à la rubrique

    18 juin 2004 11:55, par Cédric

    Pour les étourdis qui comme moi pensaient que l’on ne pouvais pas affecter un mot clé à une rubrique, il faut modifier le groupe de mot clé, et cocher la case rubrique !!!!!

    Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    5 septembre 2003 22:06, par jsb

    Salut, votre technique semble très pertinante, du moins plus facile à mettre en oeuvre que celle développée sous EVA.

    Cependant, doit-on obligatoirement identifier le groupe de mots clés ( id_groupe) dans le squelette rubrique ?

    On perd la souplesse de l’utilisation des mots clés, en imposant de mettre en dur dans le code l’id du groupe. Sauf bien šur, si les mots clés servent aussi à d’autres choses. Telle était votre volonté ? ou je me trompe ?

    Répondre à ce message

    • Eh bien oui vous avez bien saisi le probleme, si on utilisait les mots clés uniquement pour les squelettes de rubriques on ne serait pas obligé de choisir un id de groupe. Seulement (c’est le cas sur mon site) mes groupes de mots clé reflete mes qroupes de squelette... Cad que pour les rubriques je propose 11 squelettes différents et j’ai donc 11 mots clés, pour mes articles j’ai 8 squelettes donc 8 mots clés pour les breves j’ai 6 squelettes différents......

      Par dessus le marché j’utilise aussi des mots clés pour mettre certains articles en accés restreint (c’est l’objet d’une autre publication encore en test).

      Et mes administrateurs utilise aussi les mots clés pour leur role de depart c’est à dire créer certaines transversalités dans spip. Le besoin de compartimenter tous ces mots clés devient évident.

      Pour ce qui est d’Eva je suis surpris d’apprendre que la mise en oeuvre est plus complexe c’est souvent du code de bonne qualité, elle ne doit pas etre autant explicité par contre.....

      Répondre à ce message

      • > Choisir son squelette avec un mot clé. 6 septembre 2003 17:02, par jsb

        La méthode utilisée par EVA a le mérite de ne pas utiliser de PHP, seulement les balises INCLURE. Mais bon, il faut plus de lignes pour le même résultat.

        Répondre à ce message

        • > Choisir son squelette avec un mot clé. 29 septembre 2003 09:52, par crevette

          Pour EVA j’ai trouvé ça super simple et il n’y a pas de php, c’est que du spip et une bonne astuce. Pour ceux qui souhaitent comparer et me dire la différence
          - On duplique le squelette article.html
          - Dans celui-ci on colle des boucles qui repèrent le mot-clef ou le groupe de mots clefs de l’article choisi.
          - On renomme le double en article-normal.html
          - On ajoute autant de squelettes que l’on a de mots-clefs (avec leur jumeaux php3) comme album.html/album.php3

          Question
          L’avantage et la différence du processus expliqué dans cette page signifie-t-il que seul subsiste article.php3 avec ses différents squelettes,et qu’ainsi $fond s’occupe de tout ? Y’a surement moyen pour qu’un petit malin arrive à lier tout ça ! schuss

          Voir en ligne : QQs explications :

          Répondre à ce message

          • > Choisir son squelette avec un mot clé. 30 septembre 2003 21:37, par dorian

            salut, le but de l’article n’est pas de dire que c’est mieux que la méthode eva, dans notre méthode si vous ajoutez un mot clé vous changez le .php3 car $fond s’occupe de tout, avec eva il faut rajouter une boucle dans le squelette... c’est juste une vision différente de la même chose (choix du squelette par mot clé)

            Répondre à ce message

            • > Choisir son squelette avec un mot clé. 16 juin 2004 16:20, par daniel

              Juste une petite remarque :

              Il me semble qu’avec EVA il faille mettre une boucle par type de squelette alors que pour cette méthode, une seule boucle suffit. Il doit donc y avoir une incidence en terme de charge du serveur. Par ailleurs, pour ce que est de la personnalisation des variables, rien n’empêche de créer des fichier variables-xxx.php avec l’affectation des nouvelle variables.

              Daniel

              Répondre à ce message

    Retour au début des forums

  • > Choisir son squelette avec un mot clé.

    26 mars 2004 13:25, par Dje

    Salut c’est exactement ce dont j’ai besoin pour mon site. mais je n’arrive pas à utiliser ta contrib (je suis un peu nul en info). C’est peut etre a cause de id_groupe je n’arrive pas à savoir comment trouver l’identifiant de mon groupe de mot Peut tu m’aider

    Répondre à ce message

    • Vas dans ta partie admin http://adressedetonsiteweb/ecrire, tu cliques sur le lien mots-clés puis tu cliques sur modifier ce groupe de mots-clés et là tu vois dans l’adresse (barre en haut de ton explorateur) l’ID du groupe de mots-cles.

      Paul

      Répondre à ce message

    Retour au début des forums

0 | 25



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net