SPIP-Contrib

SPIP-Contrib

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

290 Plugins, 198 contribs sur SPIP-Zone, 119 visiteurs en ce moment

Accueil > Squelettes > Tutoriels pour squelettes > Épingler des articles liés à des mots-clés avec #ARRAY

Épingler des articles liés à des mots-clés avec #ARRAY

5 mars 2015 – par Thiébaut – commentaires

14 votes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Le but de la manœuvre : « déterrer » ou « épingler » certains articles toujours d’actualité... pour étoffer judicieusement le contenu d’une marge par exemple. Rien de plus simple me direz-vous. Mais, si ces articles « épinglés » étaient liés à un ou plusieurs mots-clés thématiques, on voudrait qu’ils soient affichés sous l’un d’entre eux. Enfin, on voudrait aussi pouvoir aussi épingler les articles non « tagués » par des mots thématiques.

Précisions

  • On va détourner un seul mot-clé, qui servira d’épingle, que l’on appellera dans notre exemple « z_epingles » et que l’on distinguera des autres mots en le mettant dans un groupe à part appelé « Z » : c’est une sorte de « faux mot-clé » ;
  • A l’aide de ce mot-clé unique « z_epingles », on épinglera des articles déjà liés à des « vrais » mots-clés... et/ou des articles pas forcément liés à des mots-clés ;
  • Faute de place, on veut, quoiqu’il arrive, prendre uniquement les dix derniers articles épinglés, qu’il soient liés ou non à de « vrais » mots-clés... et les afficher du plus récent au moins récent ;
  • Aucun plugin nécessaire.

L’exemple

Articles épinglés par mots-clés
Ici, trois articles ont été épinglés avec un mot-clé « épingle ». Le premier était lié à deux mots-clés thématiques : histoire et conférence. Par hasard, la boucle a choisi « Conférences ». Les deux autres étaient liés à plusieurs mots-clés... dont un commun : « Écologie » : ils ont été regroupés sous celui-là.

La boucle

  1. [(#REM) Dans deux tableaux, on sélectionne les 10 derniers articles épinglés,
  2. et pour chacun d'entre eux on sélectionne au hasard l'un des mots-clés...
  3. tout en éliminant les doublons éventuels...]                         
  4.  
  5. #SET{motsepingles,#ARRAY}
  6. #SET{articlesepingles,#ARRAY}
  7.        
  8. <BOUCLE_articlesepingles(ARTICLES){titre_mot=z_epingles}{!par date}{0,10}>                             
  9. #SET{articlesepingles,#GET{articlesepingles}|push{#ID_ARTICLE}}        
  10. <BOUCLE_motsarticlesepingles(MOTS){!type==^Z}{id_article}{doublons motsepingles}{par hasard}>
  11.         #SET{motsepingles,#GET{motsepingles}|push{#ID_MOT}}
  12. </BOUCLE_motsarticlesepingles>
  13.  
  14. </BOUCLE_articlesepingles>
  15.  
  16. [(#REM) Sous chacun de ces mots-clés sélectionnés, on regroupe les articles épinglés concernés]
  17.  
  18. <BOUCLE_motsepingles(MOTS){id_mot IN #GET{motsepingles}}>
  19. <B_epinglesparmot>
  20. <h2>#TITRE</h2>
  21. <div class="menu menu_epingles">
  22. <ul>
  23. <BOUCLE_epinglesparmot(ARTICLES){id_mot}{id_article IN #GET{articlesepingles}}{doublons epinglesmots}>
  24. <li>
  25. <a href="#URL_ARTICLE" rel="bookmark" title="#TITRE" alt="">
  26. #TITRE
  27. </a>
  28. </li>  
  29. </BOUCLE_epinglesparmot>
  30. </ul>
  31. </div><!--.menu_epingles-->    
  32. </B_epinglesparmot>
  33. </BOUCLE_motsepingles>
  34.        
  35. </B_articlesepingles>
  36.  
  37. [(#REM) Partie conditionnelle permettant d'afficher autre chose
  38. si la boucle ne donne rien ]
  39.  
  40. <//B_articlesepingles>

Télécharger

Pour les articles épinglés qui ne seraient pas rattachés à des mots-clés thématiques...

Si l’on souhaite pouvoir « épingler » également des articles qui ne sont pas forcément rattachés à des mots-clés thématiques (c’est à dire qui sont seulement « tagués » par notre unique mot-clé « z_épingles ») alors il suffit d’ajouter ce code juste avant la dernière balise (celle qui ferme la partie conditionnelle de la boucle principale) :

  1. [(#REM) Et les articles épinglés ne contiennent aucun mot thématique...]
  2. <B_epinglesansmot>
  3. <h2>A lire aussi</h2>
  4. <div class="menu menu_epingles">
  5. <ul>
  6. <BOUCLE_epinglesansmot(ARTICLES){id_article IN #GET{articlesepingles}}{doublons epinglesmots}>
  7. <li>
  8. <a href="#URL_ARTICLE" rel="bookmark" title="#TITRE">
  9. [(#LOGO_ARTICLE|sinon{[(#GET{logo_dossier})]}|image_passe_partout{65,65}|image_recadre{65,65,center})]#TITRE
  10. </a>
  11. </li>  
  12. </BOUCLE_epinglesansmot>
  13. </ul>
  14. </div><!--.menu_epingles-->    
  15. </B_epinglesansmot>                    
  16. </ul>
  17. </div><!--.menu_epingles-->    
  18. </B_epinglesansmot>    

Télécharger

Ce qui donne au final

Liste des articles épinglés, avec ou sans vrai mot-clé
En priorité, on épingle les articles rattachés à un « vrai » mot-clé, du plus récent au moins récent, en les regroupant par mot le cas échéant (seule exception à la chronologie). A la fin, sous une case générique « A lire aussi », on regroupe toutes les articles épinglés qui n’ont pas de mot-clé thématique.

P.-S.

Remarque : Les tableaux permettent de conserver le tri des boucles (ici par date inverse), par exemple pour épingler les plus récents en premier.

Dernière modification de cette page le 28 décembre 2016

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

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

  • ciparam : plugin « Configurateur de squelettes »

    29 novembre 2010 – 15 commentaires

    Ce plugin offre un mécanisme de sélection de forme de rubrique ou d’article, un mécanisme de variantes de chartes graphiques, la possibilité de choisir l’ordre de tri des articles dans les rubriques, un mécanisme de paramétrage de la page d’accueil, (...)

  • Galleria (fr)

    16 novembre 2011 – 197 commentaires

    Une galerie d’image qui utilise la librairie javascript Galleria. Description Ce plugin vous permet d’ajouter des galeries d’images à vos articles. La galerie créée utilise la librairie javascript Galleria. Le plugin propose un modèle nommé (...)

  • Responsive Nav

    9 avril 2016 – 18 commentaires

    Un menu responsive dans vos squelettes Adaptation du plugin Responsive Nav pour SPIP. Installation Ce plugin s’installe comme tous les plugins. Voir http://www.spip.net/fr_article3396.html Il fonctionne avec le squelette dist par défaut (...)

  • cibloc : mettre en forme le texte d’articles avec des blocs

    9 juillet – 21 commentaires

    Le plugin CIBLOC permet de mettre en forme le texte d’articles avec des blocs. Il offre des blocs, des colonnes, des icônes et des boutons. Les objectifs de ce plugin Le plugin CIBLOC offre des blocs, des colonnes, des icônes et des boutons : (...)

  • spiPDF : générer des contenus sur mesure en PDF

    16 février 2011 – 240 commentaires

    Le plugin spiPDF génère des fichiers au format PDF d’article ou de tout autre élément SPIP, simplement à partir d’un squelette construit au format HTML 4 et facile à modifier. Avertissement de sécurité Ce plugin a fait l’objet d’une faille de sécurité (...)