Des tags pour SpipClear

lundi 4 décembre 2006

SPIP / SpipClear

Ce soir, j’ai bricolé un squelette mot.html pour SpipClear. Le but du squelette est d’afficher la liste des articles attachés à un mot clé d’un groupe défini (dans mon cas le groupe "tags").

Pour commencer, j’ai décortiqué les squelettes de SpipClear pour comprendre leur fonctionnement basé sur des inclusions conditionnelles. Je ne comprenais pas très bien des portions de codes comme celle-ci dans layout.html :

[(#RECHERCHE|?{' ',''})
<INCLURE{fond=search}{id_secteur}{recherche}{debut_liste}>]
[(#ENV{id_article}|?{' ',''})<INCLURE{fond=post}{id_article}>]

Un petit tour sur spip.net pour revoir le fonctionnement des filtres de test. Puis la lecture de l’article "Filtres de test - Qui a dit impossible ?" sur cent20.net m’ont permis de comprendre le truc.

Fichier mot.html

J’ai donc créé un fichier mot.html calqué sur article.html :

<BOUCLE_mot(MOTS){id_mot}><INCLURE{fond=layout}
{id_mot}
{id_secteur=1}
{id_rubrique=1}
{date}
{recherche}></BOUCLE_mot>

L’id du secteur et de la rubrique sont indiqués en dûr pour l’instant car un mot n’a pas d’id_secteur associé. En indiquent id_rubrique=1 dans ce squelette, on évite une erreur dans le cas où une recherche est lancée depuis une page mot.html (voir SpipClear : Correctif problème moteur de rechercehe).

Fichier layout.html

Dans le fichier layout.html (fichier central de SpipClear), j’ai modifié le contenu de la div "content" à la ligne 35 :

<div id="content">
        [(#RECHERCHE|?{'',' '})
                [(#ENV{id_article}|?{'',' '})
                [(#ENV{id_mot}|?{'',' '})
                <INCLURE{fond=list}{id_rubrique}{archives}{debut_liste}{home}>
                ]
                ]
        ]
        [(#RECHERCHE|?{' ',''})
        <INCLURE{fond=search}{id_secteur}{recherche}{debut_liste}>]
        [(#ENV{id_article}|?{' ',''})<INCLURE{fond=post}{id_article}>]
        [(#ENV{id_mot}|?{' ',''})<INCLURE{fond=tag}{id_mot}>]
</div>

Traduction de l’inclusion dans le fichier layout.html :

[(#RECHERCHE|?{'',' '})
        [(#ENV{id_article}|?{'',' '})
                [(#ENV{id_mot}|?{'',' '})
                <INCLURE{fond=list}{id_rubrique}{archives}{debut_liste}{home}>
                ]
        ]
]

Si #RECHERCHE n’est pas vide on "ignore" le bloc de code (pas d’inclure).

Si #RECHERCHE est vide on passe au test suivant.

Si #ENV{id_article} n’est pas vide on ignore le bloc.

Si #ENV{id_article} est vide on passe au test suivant.

Si #ENV{id_mot} n’est pas vide on ignore le bloc.

Et pour finir si #ENV{id_mot} est vide on fait l’inclure.

Fichier tag.html

Code du squelette tag.html appelé par layout.html :

<BOUCLE_tag(MOTS) {id_mot} {doublons}>
<div class="cartouche">
[(#LOGO_MOT||image_reduire{200,200})]
<h1 id="tag-titre">#TITRE</h1>
</div>
<B_articles_tag>
<div id="tag-articles">
        #ANCRE_PAGINATION
        <ul>
                <BOUCLE_articles_tag(ARTICLES) {id_mot} {par popularite}{inverse} {pagination 10}>
                <li>
                <h2 id="p#ID_ARTICLE" class="post-title"><a href="#URL_ARTICLE">#TITRE</a></h2>
                <p class="post-info">
                <B_auteurs><:par_auteur|ucfirst:> <BOUCLE_auteurs(AUTEURS){id_article}{", "}>#NOM</BOUCLE_auteurs>, </B_auteurs>
                [(#DATE|affdate_long)]
                <span>::</span>
                <BOUCLE_categorie(RUBRIQUES){id_rubrique}><a href="#URL_RUBRIQUE">#TITRE</a></BOUCLE_categorie>
                </p>
                </BOUCLE_articles_tag>
        </ul>
        [<p class="pagination">(#PAGINATION)</p>]
</div>
</B_articles_tag>
</BOUCLE_tag>

Ensuite, il suffit de styler la liste des articles située dans la div tag-articles.

Fichier post.html

Pour finir il faut modifier le fichier post.html afin d’afficher la liste des tags associées à un article lors de son affichage. Il suffit d’insérer ce code à la ligne 10 du fichier :

<B_mots><p id="post-tags"><BOUCLE_mots(MOTS){id_article}{" | "}><a href="#URL_MOT">#TITRE</a></BOUCLE_mots></p></B_mots>

Pour habiller la liste des tags vous pouvez utiliser une des images du paquet d’icônes disponibles sur le site de Mark James.

Nuage de mots clés

Vous pouvez aussi afficher une liste des tags du site dans un nuage (tag cloud) à l’aide du plugin Nuage de mots clés. L’article suivant indique comment insérer ce nuage dans la barre latérale de SpipClear.

À lire : Plugin nuage de mots clés pour Spip.

Vos commentaires

  • Raphaël BESSON

    Salut Bruno,

    Merci beaucoup pour le boulot.
    Associé au squelette SpipClear et au plugin Nuage, le rendu est du plus bel effet, même si je n’ai pas tout compris.

    Raphaël

    4 janvier 2007, 19:23

  • bb

    Bonjour Raphaël,

    En relisant mon billet, je me suis rendu compte que j’avais oublié de décrire comment j’ai fait pour lister les mot clés attachés à un article avec la petite étiquette devant pour faire joli.

    Je fais un billet là dessus dès que j’ai un moment.

    9 janvier 2007, 01:36

  • Raphaël

    Salut Bruno,

    Deux autres trucs :
    - ton dernier commentaire souffre d’un petit problème que j’ai corrigé sur mon site : le squelette de James fait appel à un fichier boss.png qu’il a oublié de mettre dans sa distribution : soit tu le créées à ton image, soit tu enlèves la boucle BOUCLE_le_boss dans post.html
    - la recherche ne fonctionne pas, je suis en train de m’y atteler. Si je trouves, je te tiens au courant.

    13 janvier 2007, 18:43

  • Raphaël

    Pardon, une précision :
    la recherche ne fonctionne pas si on est pas sur la racine du blog.

    13 janvier 2007, 19:14

  • bb

    Bonsoir Raphaël,

    J’ai testé la recherche avec les squelettes SpipClear d’origine et le problème est toujours présent lorsqu’on lance une recherche depuis un article.

    Je me demande si cela ne viendrait pas du fichier formulaire.php...

    Je vais poser la question sur le forum de la contrib et je te tiens au courant.

    14 janvier 2007, 23:11

  • ?

    James fait appel à un fichier boss.png qu’il a oublié de mettre dans sa distribution

    Qu’il a intentionnellement omis ;) Son macareux fétiche ne peut pas intégrer n’importe quelle charte graphique, c’est expliqué là : http://www.spip-contrib.net/me-Moi-... dernier paragraphe « Et pour faire joli ? » c’est pour mettre les gens à contribution :)

    Y a une communauté à monté autour de spipclear, on dirait ;)

    15 janvier 2007, 11:43

  • bb

    Bonsoir Raphaël,

    Après une bonne heure de prise de tête, j’ai enfin trouvé la cause du problème. J’ai tout essayé, reinstall des squelettes fraîchement téléchargés depuis la zone, désactivation des plugins installés et j’en passe...

    En fait le moteur de recherche ne fonctionne pas depuis une page article quand on utilise les urls propres. Si tu les désactives ça fonctionne sans problème.

    Je rapporte l’info sur le forum de spip-contrib, affaire à suivre.

    15 janvier 2007, 21:09

  • ?

    Hello et merci pour la contribution. J’ai un soucis toutefois avec le mini calendrier.
    En effet, depuis une page appelée via un lien sur un tag, le mini-calendrier ne fonctionne plus de manière satisfaisante : d’une part tous les jours pour lesquels il y a un article sont repérés comme un lien (alors que je m’attendais à ce que seuls les jours pour lesquels un article ayant le mot-clef en cours seraient pris en compte) et, d’autre part, l’URL retournée n’est pas bonne (mon_site/spip.php ?rubrique&archives=2007-01-16)
    au lieu de
    (mon_site/spip.php ?rubrique1&archives=2007-01-16)

    Ai-je zappé un truc à faire ?
    Merci de ton aide

    17 janvier 2007, 06:35

  • bb

    Bonjour,

    En ce qui concerne le calendrier le comportement que tu décris est normal. Je n’ai pas fait de "lien" entre le squelette qui affiche les articles liés à un mot clé et le calendrier.

    Ton problème d’url ressemble au problème que Raphaël et moi rencontrons avec le moteur de recherche.

    Quelle est l’url de ton site ? Utilises-tu les url propres ?

    17 janvier 2007, 16:51

  • Raphaël

    Salut à tous,

    Chouette la communauté augmente ;-)

    Bien vu pour le forum sur Spip-Contrib, j’aurai dû regarder là avant.

    Je confirme, si on enlève les type_urls = propres, tout rentre dans l’ordre : calendrier et recherche.

    Un autre souci, cette fois-ci lié à ta contrib, si on change le modèle, ça ne suit pas dans le fichier tag.html, c’est le modèle par défaut qui est pris. Et je n’arrive pas à comprendre pourquoi.
    Attention, je parle de modèle DotClear et non de modèle SPIP.

    Raphaël

    18 janvier 2007, 00:31

  • bb

    Bonsoir Raphaël,

    J’ai aussi changé de thème pour voir ce que donnait l’erreur dont tu parlais mais je n’ai toujours pas trouvé de solution au problème.C’est à ce moment là que ça déconne :

    <link rel="stylesheet" type="text/css" href="squelettes/SpipClear/themes/default/style.css" media="screen" />

    Du coup le squelette mot appelle la feuille de style du thème par défaut. Ce code est généré dans le fichier layout.html à la ligne 12 par ceci :

    [<link rel="stylesheet" type="text/css" href="#DOSSIER_SQUELETTE/themes/(#ID_SECTEUR|theme|sinon{default})/style.css" media="screen" />]

    On retrouve cette fonction thème dans le fichier mes_fonctions.php à la ligne 60 :

    function theme($id_secteur) {
    return $GLOBALS['scEstUnBlog'][$id_secteur];
    }

    Donc si la fonction ne marche pas c’est qu’il doit y avoir un problème avec le passage de la valeur #ID_SECTEUR ... Or c’est aussi une variable comme celle-ci qui fait que le moteur de recherche ne fonctionne pas depuis un post. En effet, dans ce cas l’id_rubrique n’a pas l’air de passer et l’action du formulaire de recherche devient rubrique.html au lieu de rubrique1.html...

    Bref je découvre plein de choses sur le fonctionnement du squelette SpipClear, je ne trouve toujours pas la solution, mais il y a des pistes.

    Patience...

    21 janvier 2007, 20:48

  • bb

    Re Bonsoir Raphaël,

    J’ai trouvé pourquoi la page mot.html de change pas de thème. Tout simplement parce qu’un mot n’a pas d’id_secteur associé. Donc pour l’instant il y a une solution "bourrin" qui consiste à indiquer l’id_secteur en dur dans le fichier mot.html comme ceci :

    <BOUCLE_mot(MOTS){id_mot}><INCLURE{fond=layout}
    {id_mot}
    {id_secteur=1}
    {date}
    {recherche}></BOUCLE_mot>

    Si je trouve un moyen de faire ça de façon plus modulable je l’indiquerai dans le billet.

    21 janvier 2007, 22:05

  • Yves

    "Je confirme, si on enlève les type_urls = propres, tout rentre dans l’ordre : calendrier et recherche."

    Bonjour,

    Excusez-moi, je débute. J’ai un site SPIP qui fonctionne très bien, j’ai voulu y ajouter un blog SPIP-Clear, donc sur un secteur à part. ça fonctionne à peu près, sauf que :
    - le formulaire de recherche a été modifié sur tout mon site, et pas seulement sur la partie blog, et il ne fonctionne plus
    - le minical est très joli mais le résultat est bizarre : sur une rubrique du blog, pas de problème, seul les jours où un billet est publié sont en surbrillance ; par contre, dès qu’on ouvre un billet, c’est tous les jours où un article a été publié, n’importe où sur le site et pas seulement dans la blog, qui sont en surbrillance, et en plus quand on clique dessus ça bugge.

    est-ce que cette remarque à propos des "url propres" solitionnerait mon problème ?
    ...et en pratique, c’est dans quel fichier qu’on doit faire la modif ?

    je galère un peu... merci ! :)

    le site est www.energay.org/spip et le blog est la rubrique 66

    26 janvier 2007, 11:17

  • bb

    Bonsoir Yves,

    Pour ton formulaire de recherche, je l’ai testé depuis la page d’accueil et il fonctionne. Par contre il n’est pas présent dans la rubrique du blog. Si tu as des soucis avec le moteur de recherche c’est peut être parce que tu as installé le modèle formulaire_recherche.html de SpipClear dans ton dossier squelettes. Dans ce cas le formulaire de recherche de SpipClear s’applique à tout le site. C’est une piste... En tout cas ton problème ne semble pas venir des urls propres car tu ne les utilise pas sur ton site.

    Pour l’agenda je vois le problème, as-tu bien suivi la procédure d’installation pour SpipClear ?

    Essaye de désinstaller les squelettes du blog et réinstalle tout avec l’archive scStarter disponible sur SpipContrib.

    26 janvier 2007, 19:06

  • Yves

    Bonjour,

    J’ai bien utilisé le scStarter de Spip Contrib ; j’ai en effet fini par désactiver le script de la balise de recherche (et j’ai supprimé l’appel au formulaire dans le fond de page du blog), pour les raisons de bugs évoqués plus haut, donc ce que tu as observé est si je puis dire "normal" :) Par contre c’est vrai que j’avais installé les squelettes directement dans le répertoire squelettes. J’ai refait l’installation, avec SpipClear en sous-répertoire de squelettes, mais ça né résoud par le problème du minical (je retesterai la recherche plus tard, je pb du minical m’embête plus). AH oui j’ai aussi désactivé le sommaire.html fourni avec SC car il s’appliquait à tout mon site.

    Tu dis que tu vois le problème du minical ? peux-tu m’éclairer ? je mets mon mail ci-dessous. Je ne suis pas développeur, mais je peux comprendre les explications même techniques ;)

    Une question annexe : à quoi sert le mot-clé "selection" qu’on nous demande de créer pour installer SC ?

    Merci, amicalement
    Yves

    27 janvier 2007, 14:24

  • bb

    Bonsoir Yves,

    Le mot-clé sélection sert à afficher en permanence des liens vers certains articles dans la barre lattéral. Il suffit d’appliquer ce mot-clé à un article et une section "A retenir" apparaît dans la barre de droite.

    Pour ton problème de calendrier, as-tu bien créé un secteur pour ton blog (cad une rubrique à la racine du site) ? Si ce n’est pas le cas c’est peut être de là que vient le problème...

    Compare la méthode que tu as utilisé pour installer SpipClear avec celle décrite sur SpipBlog (voir lien commentaire).

    Pose aussi tes questions sur le forum attaché à l’article de SpipContrib, tu auras plus de réponse que les miennes.

    27 janvier 2007, 20:02

  • bb

    Le problème du moteur de recherche est enfin résolu (voir post en lien).

    4 février 2007, 22:12

  • Hébert Abd-El Krim*

    Bonjour,

    J’utilise le même squelette SPIP que vous... Et je suis très intéressé par le packetage complet que vous avez envisagé pour une raison très simple. J’ai suivi la méthode indiquée et je n’ai pas du tout réussi à faire marcher quoique ce soit.

    Merci par avance.

    p.s. : après j’aurai une autre minuscule demande qui est liée au logo du site (top.png) que je voudrais transformer en zone réactive en lien direct vers <:accueil du site :> tout en supprimant le titre du site en lien de couleur blanche par défaut. Ce squelette est extrêmement dense quand j’y repense. D’habitude j’ai pas ces difficultés... Merci beaucoup.

    21 septembre 2007, 06:15

  • bb

    Bonsoir Hébert,

    J’avais oublié d’ajouter à la fin de l’article la description du code à insérer dans le fichier post.html. Cela permet d’afficher les tags sous le titre d’un article. Désolé, j’ai corrigé cette erreur. Avec ces informations tu devrais pouvoir t’en sortir.

    Pour changer le contenu de la tête de page, il faut modifier le code situé dans la div id="top" aux lignes 21, 22 et 23 du fichier layout.html. Il te faudra aussi modifier le fichier style.css pour supprimer l’image de fond de la div id="top".

    J’ajoute un zip contenant les fichiers modifiés prochainement.

    Bon courage ++

    22 septembre 2007, 00:37

  • Hébert Abd-El Krim*

    Bonsoir bb boss,

    bein... euh... en fait ça fonctionne mais qu’à moitié, j’ai les mots-clés en dessous du titre de l’article tout ça. Mais il y a un "mais", je n’ai strictement aucune zone réservée aux ’Tags’. On passe sans transition du calendrier à la langue. J’ai bien suivi la procédure, une étape n’aurait pas été oubliée par hasard ? J’attends avec impatience vos conseils.

    Merci.
    @ +

    22 septembre 2007, 03:24

  • bb

    Bonjour Hébert,

    Si j’ai bien compris, ton problème est d’arriver à afficher le nuage de mots-clés dans la barre latérale du site. Pour cela il faut utiliser le plugin "nuage de mots-clés" dont la documentation est disponible sur spip-contrib à cette adresse :

    http://www.spip-contrib.net/Nuage-de-mots-cles

    Regarde le lien de ce commentaire pour voir comment il faut l’intégrer à SpipClear.

    Bon courage ++

    22 septembre 2007, 12:14

  • Hébert Abd-El Krim*

    Merci énormément. Tout marche correctement.

    22 septembre 2007, 13:13

  • Soon7

    Hello,

    Merci d’avoir partagé tes avancées concernant la partie mot de spip clear, c’est exactement ce qui me manquait, je l’intégrerai dès que j’aurai un peu de temps ^^

    22 novembre 2007, 15:55

Répondre à cet article

Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.