Utiliser le filtre «unique» pour présenter une grande liste d'articles - comments Utiliser le filtre «unique» pour présenter une grande liste d'articles 2008-11-18T21:10:20Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment410173 2008-11-18T21:10:20Z <p>Intégré à une rubrique, le code marche. Mes articles sont triés par lettres. L'affichage de ma rubrique me montre les articles commençant par A. Dès que je clique sur un autre des onglets, ça me met une erreur 404. Aurais-je loupé une étape ?<br class='autobr' /> Je suis en SPIP 1.9.2e.</p> <p>Merci d'avance pour une éventuelle réponse.</p> <p>Et merci pour cette contrib' très simple d'utilisation !</p> Utiliser le filtre «unique» pour présenter une grande liste d'articles 2008-03-07T09:29:11Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment403810 2008-03-07T09:29:11Z <p>Bonjour<br class='autobr' /> Les articles à présenter ont pour titre, le titre d'un mot clé.<br class='autobr' /> Dans le champ titre de l'article, j'ai donc <code><motxxxx|titre></code>.<br class='autobr' /> Par conséquent le filtre titre <i>par titre</i><i>titre==^[A-ZÀÉÈ]</i>ne marche pas. As-tu une idée pour contourner ce problème ?<br class='autobr' /> Merci IDP</p> Utiliser le filtre «unique» pour présenter une grande liste d'articles 2008-02-20T16:13:55Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment403243 2008-02-20T16:13:55Z <p>Bon, ce filtre est intéressant par contre je n'arrive pas à afficher des articles > 100. C'est bien domageable car j'ai plus de 300 articles sur mon spip et je me coupe d'une grande partie non visibles.<br class='autobr' /> Y a-t-il un remède?</p> Utiliser le filtre “unique” pour présenter une grande liste d'articles 2007-05-10T16:07:01Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment393743 2007-05-10T16:07:01Z <p>Merci, vous êtes très sympa d'avoir été voir. Depuis j'essaie de faire un mini dico sur des articles, avec des images et un petit exercice. Mon problème est la gestion des accents et des images car je voudrais pouvoir imprimer en pdf ( pour l'instant ça ne fonctionne pas sur les articles du <a href="http://profsdesecoles.123.fr/spip.php?rubrique22" class='spip_out' rel='external'>mini dico</a> ). Les articles dont les titres ont des accents ne s'affichent pas par exemple <a href="http://profsdesecoles.123.fr/spip.php?article194" class='spip_out' rel='external'>échelle</a>...<br class='autobr' /> Si vous avez quelques minutes et des idées, je suis preneur. <br class='autobr' /> Merci en tous les cas.<br class='autobr' /> Reyatem</p> |unique mal placé 2007-04-09T11:01:26Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment392792 2007-04-09T11:01:26Z <p><code>(#SET{titre,[(#EVAL{strtoupper("[(#TITRE|couper{1})]")}|unique)]})][</code></p> <p>On a beau se relire cent mille fois...</p> Présenter une grande liste d'articles et gérer les minuscules 2007-04-09T10:48:39Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment392790 2007-04-09T10:48:39Z <p>Coucou, voici la solution que j'ai utilisé pour produire le même effet et gérer les titres avec une première lettre en minuscule, mais par contre sans gestion des accents...</p> <div class='precode'><pre dir='ltr' style='text-align: left;'><code><a href="[(#SELF|parametre_url{lettres,''}|parametre_url{debut_arti,''})]"> tous </a> <BOUCLE_alphabet(ARTICLES){id_rubrique}{par titre}>[ (#SET{titre,[(#EVAL{strtoupper("[(#TITRE|couper{1}|unique)]")})]})][ (#SET{titre_min,[(#EVAL{strtolower("[(#GET{titre})]")})]})][ - <a href="[(#SELF|parametre_url{lettres,''}|parametre_url{debut_arti,''})] &lettres=&#91;(#GET{titre})#GET{titre_min}&#93;" > [(#GET{titre})] </a> ]</BOUCLE_alphabet></code></pre></div> <p>Ici j'enregistre dans <i>titre</i> la première lettre de l'article passée en majuscule, puis dans <i>titre_min</i> la première lettre en minuscule.<br class='manualbr' />Cette première boucle construit la liste alphabétique. Avec les [ ] bien placés pour ne pas avoir toutes les occurences de la boucle.<br class='manualbr' />On notera : <code> lettres=&#91;#GET{titre}#GET{titre_min}&#93; </code> qui produit un lien du genre lettres=[Aa] en utilisant les entités HTML car spip n'aime pas trop les [ ] en plein milieu des filtres.<br class='manualbr' />Ainsi que l'emploie de #EVAL pour utiliser les fonctions strtolower et strtoupper de PHP.</p> <div class='precode'><pre dir='ltr' style='text-align: left;'><code><B_arti> #ANCRE_PAGINATION <BOUCLE_arti(ARTICLES){id_rubrique}{par titre}{titre==^#ENV{lettres}}{pagination}> <p>#TITRE<br/>#INTRODUCTION </BOUCLE_arti> #PAGINATION </B_arti></code></pre></div> <p>Et cette deuxième boucle produit la liste des articles filtrée.<br class='manualbr' />Une recherche sur titre==^[Aa] renvoie les articles dont le titre commence par A ou a.</p> Utiliser le filtre “unique” pour présenter une grande liste d'articles 2007-03-29T06:25:16Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment392504 2007-03-29T06:25:16Z <p>Le problème est que tu as des titres qui commencent par des minuscules et tes onglets sont dupliqués (a,A etc..).<br class='autobr' /> Pour résoudre ce problème, essaye les modifications suivantes:</p> <p>- Dans ton fichier mes_fontions.php (si tu n'en n'as pas, tu en crée un dans ton dossier squelette; en haut de ta page tu place: <code><?php</code> et en bas de ta page,<br class='autobr' /> <code>?></code>), tu ajoute la fonction :</p> <div class='precode'><pre dir='ltr' style='text-align: left;'><code>/* * +----------------------------------+ * Nom du filtre : upper * +-------------------------------------+ * Fonctions : * Transforme une chaîne de caractères en majuscules * +-------------------------------------+ */ function upper ($chaine) { return strtoupper($chaine); } // FIN du filtre upper</code></pre></div> <p>- Dans ton squelette tu remplace dans la partie cliquable du lien :</p> <p><code> (#GET{initiale}|unique) </code></p> <p>par</p> <p><code> (#GET{initiale}|upper|unique) </code></p> <p>et dans la même boucle BOUCLE_onglets, tu supprime le critère <code>titre==^[A-AÉÈÀ]</code>.</p> <p>Ainsi tu n'auras que des majuscules dans tes onglets, l'onglet “A” contenant les titres qui commencent par a ou A.</p> <p>En effet ça semble marcher car les critères tels que <code>titre==A</code> n'ont pas l'air de tenir compte de la casse<br class='autobr' /> (je n'ai pas eu le temps de vérifier ni de bien comprendre cet aspect).</p> Utiliser le filtre “unique” pour présenter une grande liste d'articles 2007-03-28T16:23:46Z https://contrib.spip.net/Utiliser-le-filtre-unique-pour#comment392492 2007-03-28T16:23:46Z <p>Je trouve cette contribution très sympathique, je voulais faire un petit glossaire, mais je voulais qu'il soit appelé par un mot-clé clé sur un squelette rubrique et qu'il utilise les brèves plutôt que les articles. Je me suis permis de bidouiller ce que vous aviez fait, mais comme je n'y connais pas grand-chose chose, je me permets de vous le soumettre pour d'éventuelles corrections, si cela présente un intérêt ?<br class='autobr' /> Il faut créer un mot-clef clef “onglets”, que l'on affecte à la rubrique concernée.<br class='autobr' /> Voilà, ça marche. Il faut avoir au moins une brève dans la rubrique.<br class='autobr' /> Voilou, merci encore. <br class='autobr' /> Le squelette (fait sur la rubrique de la dist)<br class='autobr' /> _<br class='autobr' /> _</p> <p><code><br class='autobr' /> #CACHE<i>7200</i><br class='autobr' /> <BOUCLE_principale(RUBRIQUES) {id_rubrique=10}> [(#REM) PrŽciser un numero de rubrique ]<br class='autobr' /> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' '<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" class='spip_url spip_out auto' rel='nofollow external'>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>'></p> <head> <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title> [<meta name="description" content="(#INTRODUCTION|couper{150}|textebrut)" />] <INCLURE{fond=inc-head}> [(#REM) Lien vers le flux RSS de la rubrique ] <link rel="alternate" type="application/rss+xml" title="<:syndiquer_rubrique:>" href="[(#URL_PAGE{backend}|parametre_url{id_rubrique,#ID_RUBRIQUE})]" /> [(#REM) Styles pour l'affichages des onglets ] <style type="text/css"> .texteencadre-spip { -moz-border-radius: 1em; color: #000033; background: #EEF; border-bottom: 2px solid #0066CC; border-left: 1px solid #3399FF; border-right: 2px solid #0066CC; border-top: 1px solid #3399FF; margin: 1em 0; padding: .25em; position: relative; } #onglets { width: 100%; text-align: center; padding: 0; margin: 0; margin-left: auto; margin-right: auto; } #onglets li { display: inline; list-style: none; margin: 0; } a.onglets_off { text-decoration: none; font-family: sans-serif; font-size: 11px; font-weight: bold; color: #FFFFCC; background-color: #005731; padding: 4px 6px 4px 6px; border: 1px solid white; } a.onglets_off:hover, a.onglets_on { text-decoration: none; font-family: sans-serif; font-size: 11px; font-weight: bold; color: #005731; background-color: #FFFFCC; padding: 4px 6px 5px 6px; border: 1px solid white; } </style> </head> <body class="page_rubrique"> <div id="page"> [(#REM) Entete de la page + titre du site ] <INCLURE{fond=inc-entete}> [(#REM) Fil d'Ariane ] <div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a><BOUCLE_ariane(HIERARCHIE){id_rubrique}> > <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ > (#TITRE|couper{80})]</div> <div id="conteneur"> [(#REM) Contenu principal : contenu de la rubrique ] <div id="contenu"> <div class="cartouche"> [(#LOGO_RUBRIQUE||image_reduire{200,200})] <h1 class="#EDIT{titre} titre">#TITRE</h1> [<p><small><:dernier_ajout:> : (#DATE|affdate_jourcourt).</small></p>] </div> [<div class="#EDIT{texte} chapo">(#TEXTE)</div>] <br class="nettoyeur" /> <div class="contre-encart"> <h1 align="center" style="color: green;">[(#TITRE|supprimer_numero)]</h1> <h3 align="center" style="color: green;">#DESCRIPTIF</h3> [(#REM) Les onglets ] <div id="onglets"> <ul> <BOUCLE_onglets(BREVES){id_rubrique}{par titre}{titre==^[A-Z˃é]}> #SET{initiale,#TITRE|match{\w{1}}} [<li><a [class="(#ENV{lettre,A}|=={#GET{initiale}}|?{'onglets_on','onglets_off'})"] href="spip.php?rubrique#ID_RUBRIQUE&lettre=#GET{initiale}"> (#GET{initiale}|unique) </a></li>] </BOUCLE_onglets> </ul> </div> [(#REM) Les BREVES ] <B_tous_BREVES> #ANCRE_PAGINATION <hr> <BOUCLE_tous_BREVES(BREVES){id_rubrique}{par titre}{titre==^#ENV{lettre,A}}{pagination}> <table border="0"> <tr> <td>[(#LOGO_BREVES||image_reduire{120})]</td> <td valign="top"> <div style="margin-top: 5px; margin-bottom: 5px; font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: bold; font-size: 100%;"> [(#TITRE)] </div> <div class="texteencadre-spip"> <div style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 90%;"> [(#INTRODUCTION|justifier)] <a href='https://contrib.spip.net/spip.php?breve#ID_BREVE'>- Voir la fiche -</a> </div> </td> </tr> </table> <hr> </BOUCLE_tous_BREVES> <p align="center" style="font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: normal; font-size: 100%;"> #PAGINATION </p> <p align="center" style="font-family: Verdana,Arial,Helvetica,sans-serif; font-weight: normal; font-style: italic; font-size: 80%;"> (Au total : #GRAND_TOTAL [(#ID_RUBRIQUE|=={99}|?{brochures,BREVES})]) </p> </B_tous_BREVES> Il n'y a pas de brochure dont le titre commence par #ENV{lettre}. <//B_tous_BREVES> [(#REM) Articles de la rubrique ] <B_articles> <div class="liste-articles"> #ANCRE_PAGINATION <h2 class="invisible"><:articles_rubrique:></h2> <ul> <BOUCLE_articles(ARTICLES) {id_rubrique} {par date}{inverse} {pagination}> <li> <h3 class="titre"><a href="#URL_ARTICLE">#TITRE</a></h3> <small>[(#DATE|affdate_jourcourt)][, <:par_auteur:> (#LESAUTEURS)]</small> </li> </BOUCLE_articles> </ul> [<p class="pagination">(#PAGINATION)</p>] </div> </B_articles> [(#REM) Si aucun article, affiche un plan de la rubrique ] <B_sous_rubriques> <div class="rubriques"> <h2 class="menu-titre"><:sous_rubriques:></h2> <ul> <BOUCLE_sous_rubriques(RUBRIQUES) {id_parent} {par num titre, titre}> <li> <a href="#URL_RUBRIQUE">[(#TITRE)]</a> [(#REM) Une boucle recursive pour le mini plan] <B_miniplan> <ul> <BOUCLE_miniplan(RUBRIQUES) {id_parent} {par num titre, titre}> <li> <a href="#URL_RUBRIQUE">[(#TITRE)]</a> <BOUCLE_m2(BOUCLE_miniplan)></BOUCLE_m2> </li> </BOUCLE_miniplan> </ul> </B_miniplan> </li> </BOUCLE_sous_rubriques> </ul> </div> </B_sous_rubriques> <//B_articles>[(#REM) supprimer pour toujours avoir le miniplan] [(#REM) Documents joints a la rubrique ] <B_documents_joints> <div id="documents_joints"> <h2><:titre_documents_joints:></h2> <ul> <BOUCLE_documents_joints(DOCUMENTS) {id_rubrique} {mode=document} {par num titre, date} {doublons}> <li> <div class="spip_doc_titre"><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</a> <small>(#TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)])</small></div> [<div class="spip_doc_descriptif">(#DESCRIPTIF)</div>] </li> </BOUCLE_documents_joints> </ul> </div> </B_documents_joints> </div><!-- fin contre-encart --> <div class="encart"> [(#REM) Breves du secteur ] <B_breves> <div class="breves"> #ANCRE_PAGINATION <h2 class="menu-titre"><:breves:></h2> [<p class="pagination">(#PAGINATION)</p>] <ul> <BOUCLE_breves(BREVES) {id_secteur} {par date}{inverse} {pagination 5}> <li>[(#DATE|affdate_court) – ]<a href="#URL_BREVE">#TITRE</a></li> </BOUCLE_breves> </ul> </div> </B_breves> [(#REM) Sites de la rubrique ] <B_sites> <div class="syndic"> <h2 class="menu-titre"><:sur_web:></h2> <ul> <BOUCLE_sites(SITES) {id_rubrique} {par nom_site}> <li><a href='https://contrib.spip.net/[(#ID_SYNDIC|generer_url_site)]'>#NOM_SITE</a> <B_syndic> <ul> <BOUCLE_syndic(SYNDIC_ARTICLES) {id_syndic} {age<180} {par date}{inverse} {0,3}> <li><a href="#URL_ARTICLE" class="spip_out">#TITRE</a></li> </BOUCLE_syndic> </ul> </B_syndic> </li> </BOUCLE_sites> </ul> </div> </B_sites> [(#REM) Proposer un site ] #FORMULAIRE_SITE </div><!-- fin encart --> [<div class="notes"><h2><:info_notes:></h2>(#NOTES)</div>] </div><!-- fin contenu --> [(#REM) Menu de navigation laterale ] <div id="navigation"> [(#REM) Menu de navigation par rubriques ] <INCLURE{fond=inc-rubriques}{id_rubrique}> [(#REM) Menu de navigation mots-cles ] <B_mots> <div class="divers"> <h2 class="menu-titre"><:mots_clefs:></h2> <ul> <BOUCLE_mots(MOTS) {id_rubrique} {par titre}> <li><a href="#URL_MOT" rel="tag">#TITRE</a></li> </BOUCLE_mots> </ul> </div> </B_mots> </div><!-- fin navigation --> </div><!-- fin conteneur --> [(#REM) Pied de page ] <INCLURE{fond=inc-pied}{skel=#SQUELETTE}> </div><!-- fin page --> </body> <code> </BOUCLE_principale>