<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>uZine 3</title>
	<link>http://www.uzine.net/</link>
	<description></description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>




<item xml:lang="fr">
		<title>Les crit&#232;res communs &#224; toutes les boucles</title>
		<link>http://www.uzine.net/article900.html</link>
		<guid isPermaLink="true">http://www.uzine.net/article900.html</guid>
		<dc:date>2001-05-04T22:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>l'&#233;quipe de SPIP</dc:creator>


		<dc:subject>par ...</dc:subject>
		<dc:subject>par hasard</dc:subject>
		<dc:subject>inverse</dc:subject>
		<dc:subject>par num ...</dc:subject>
		<dc:subject>age</dc:subject>
		<dc:subject>age_relatif</dc:subject>
		<dc:subject>debut_...</dc:subject>
		<dc:subject>{a/b}</dc:subject>
		<dc:subject>{a,b}</dc:subject>
		<dc:subject>{&#034;inter&#034;}</dc:subject>

		<description>
&lt;p&gt;Certains crit&#232;res s'appliquent &#224; (presque) tous les types de boucles. Ce sont des crit&#232;res destin&#233;s &#224; restreindre le nombre de r&#233;sultats affich&#233;s ou &#224; indiquer l'ordre d'affichage. On peut sans difficult&#233; combiner plusieurs de ces crit&#232;res de s&#233;lection. &lt;br class='autobr' /&gt;
Classer les r&#233;sultats &lt;br class='autobr' /&gt;
par crit&#232;re_de_classement indique l'ordre de pr&#233;sentation des r&#233;sultats. Ce crit&#232;re de classement correspond &#224; l'une des balises tir&#233;es de la base de donn&#233;es pour chaque type de boucle. Par exemple, on pourra classer les articles par (...)&lt;/p&gt;


-
&lt;a href="http://www.uzine.net/rubrique143.html" rel="directory"&gt; Mise en page : manuel de r&#233;f&#233;rence&lt;/a&gt;

/ 
&lt;a href="http://www.uzine.net/mot176.html" rel="tag"&gt;par ...&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot177.html" rel="tag"&gt;par hasard&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot178.html" rel="tag"&gt;inverse&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot179.html" rel="tag"&gt;par num ...&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot180.html" rel="tag"&gt;age&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot181.html" rel="tag"&gt;age_relatif&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot182.html" rel="tag"&gt;debut_...&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot183.html" rel="tag"&gt;{a/b}&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot184.html" rel="tag"&gt;{a,b}&lt;/a&gt;, 
&lt;a href="http://www.uzine.net/mot185.html" rel="tag"&gt;{&#034;inter&#034;}&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Certains crit&#232;res s'appliquent &#224; (presque) tous les types de boucles. Ce sont des crit&#232;res destin&#233;s &#224; restreindre le nombre de r&#233;sultats affich&#233;s ou &#224; indiquer l'ordre d'affichage. On peut sans difficult&#233; combiner plusieurs de ces crit&#232;res de s&#233;lection.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Classer les r&#233;sultats&lt;/h3&gt;
&lt;p&gt;&lt;tt&gt;{&lt;b&gt;par&lt;/b&gt; &lt;i&gt;crit&#232;re_de_classement&lt;/i&gt;}&lt;/tt&gt; indique l'ordre de pr&#233;sentation des r&#233;sultats. Ce crit&#232;re de classement correspond &#224; l'une des balises tir&#233;es de la base de donn&#233;es pour chaque type de boucle. Par exemple, on pourra classer les articles &lt;code class='spip_code' dir='ltr'&gt;{par date}&lt;/code&gt;, &lt;code class='spip_code' dir='ltr'&gt;{par date_redac}&lt;/code&gt; ou &lt;code class='spip_code' dir='ltr'&gt;{par titre}&lt;/code&gt;. (Notez que, si les balises sont en majuscules, les crit&#232;res de classement sont en minuscules.)&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Cas particulier :&lt;/i&gt; &lt;TT&gt;&lt;B&gt;{par hasard}&lt;/B&gt;&lt;/TT&gt; permet d'obtenir une liste pr&#233;sent&#233;e dans un ordre al&#233;atoire.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Inverser le classement.&lt;/i&gt; De plus, &lt;TT&gt;&lt;B&gt;{inverse}&lt;/B&gt;&lt;/TT&gt; provoque l'affichage du classement invers&#233;. Par exemple &lt;code class='spip_code' dir='ltr'&gt;{par date}&lt;/code&gt; commence par les articles les plus anciens ; avec &lt;code class='spip_code' dir='ltr'&gt;{par date}{inverse}&lt;/code&gt; on commence la liste avec les articles les plus r&#233;cents.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Classer par num&#233;ro.&lt;/i&gt; &lt;font color=&#034;red&#034;&gt;(SPIP 1.3)&lt;/font&gt; Lorsqu'on r&#233;alise le classement selon un &#233;l&#233;ment de texte (par exemple le &lt;i&gt;titre&lt;/i&gt;), le classement est r&#233;alis&#233; par ordre &lt;i&gt;alphab&#233;tique&lt;/i&gt;. Cependant, pour forcer un ordre d'affichage, on peut indiquer un num&#233;ro devant le titre, par exemple : &#171; 1. Mon premier article &#187;, &#171; 2. Deuxi&#232;me article &#187;, &#171; 3. Troisi&#232;me... &#187;, etc ; avec un classement alphab&#233;tique, le classement de ces &#233;l&#233;ments donnerait la s&#233;rie &#171; 1, 10, 11, 2, 3... &#187;. Pour r&#233;tablir le classement selon les num&#233;ros, on peut utiliser le crit&#232;re :&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;&lt;b&gt;{par num&lt;/b&gt; crit&#232;re&lt;b&gt;}&lt;/b&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}&gt;&lt;/textarea&gt;
&lt;p&gt;affiche les articles d'une rubrique class&#233;s selon l'ordre chronologique invers&#233; (les plus r&#233;cents au d&#233;but, les plus anciens &#224; la fin), et :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_articles(ARTICLES){id_rubrique}{par titre}&gt;&lt;/textarea&gt;
&lt;p&gt;les affiche selon l'ordre alphab&#233;tique de leur titre ; enfin :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_articles(ARTICLES){id_rubrique}{par num titre}&gt;&lt;/textarea&gt; &lt;p&gt;les affiche selon l'ordre du num&#233;ro de leur titre (remarque : l'option &lt;code class='spip_code' dir='ltr'&gt;{par num titre}&lt;/code&gt; ne fonctionne pas pour les plus anciennes versions de MySQL, ant&#233;rieures &#224; la version 3.23).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Comparaisons, &#233;galit&#233;s&lt;/h3&gt;
&lt;p&gt;&lt;TT&gt;&lt;B&gt;{&lt;/B&gt;&lt;I&gt;crit&#232;re&lt;/I&gt; &lt;B&gt;&lt;&lt;/B&gt; &lt;I&gt;valeur&lt;/I&gt;&lt;B&gt;}&lt;/B&gt;&lt;/TT&gt; Comparaison avec une valeur fix&#233;e (on peut utiliser &#171; &gt; &#187;, &#171; &lt; &#187;, &#171; = &#187;, &#171; &gt;= &#187;, &#171; &lt;= &#187;. Tous les &lt;i&gt;crit&#232;res de classement&lt;/i&gt; (tels que tir&#233;s de la base de donn&#233;es) peuvent &#233;galement &#234;tre utilis&#233;s pour limiter le nombre de r&#233;sultats.&lt;/p&gt;
&lt;p&gt;Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){id_article=5}&gt;&lt;/textarea&gt;
&lt;p&gt;affiche l'article dont le num&#233;ro est 5 (utile pour mettre en vedette un article pr&#233;cis sur la page d'accueil).&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){id_secteur=2}&gt;&lt;/textarea&gt;
&lt;p&gt;affiche les articles du secteur num&#233;ro 2.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Expressions r&#233;guli&#232;res.&lt;/i&gt; Tr&#232;s puissant (mais nettement plus complexe &#224; manipuler), le terme de comparaison &#171; == &#187; introduit une comparaison selon une expression r&#233;guli&#232;re. Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){titre==^[aA]}&gt;&lt;/textarea&gt;
&lt;p&gt;s&#233;lectionne les articles dont le titre commence par &#171; a &#187; ou &#171; A &#187;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;N&#233;gation.&lt;/i&gt; &lt;font color=&#034;red&#034;&gt;(SPIP 1.2)&lt;/font&gt; On peut utiliser la notation &lt;tt&gt;{xxx != yyy}&lt;/tt&gt;, le ! correspondant &#224; la n&#233;gation (op&#233;rateur logique NOT).&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){titre!==^[aA]}&gt;&lt;/textarea&gt;
&lt;p&gt;s&#233;lectionne les articles dont le titre ne commence pas par &#171; a &#187; ou &#171; A &#187;.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){id_secteur != 2}&gt;&lt;/textarea&gt;
&lt;p&gt;s&#233;lectionne les articles qui n'appartiennent pas au secteur num&#233;ro 2.&lt;/p&gt;
&lt;p&gt;Pour faciliter l'utilisation des comparaisons sur les dates, on a ajout&#233; des crit&#232;res :
&lt;br /&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;TT&gt;age&lt;/TT&gt; et &lt;TT&gt;age_redac&lt;/TT&gt; correspondent respectivement &#224; l'anciennet&#233; de la publication et de la premi&#232;re publication d'un article, en jours : &lt;TT&gt;{age&lt;30}&lt;/TT&gt; s&#233;lectionne les &#233;l&#233;m&#233;nts publi&#233;s depuis un mois ;
&lt;br /&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; les crit&#232;res &lt;TT&gt;mois&lt;/TT&gt;, &lt;TT&gt;mois_redac&lt;/TT&gt;, &lt;TT&gt;annee&lt;/TT&gt;, &lt;TT&gt;annee_redac&lt;/TT&gt; permettent de comparer avec des valeurs fixes (&lt;code class='spip_code' dir='ltr'&gt;{annee&lt;=2000}&lt;/code&gt; pour les &#233;l&#233;ments publi&#233;s avant la fin de l'ann&#233;e 2000).&lt;/p&gt;
&lt;p&gt;On peut combiner plusieurs de ces crit&#232;res pour effectuer des s&#233;lections tr&#232;s pr&#233;cises. Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){id_secteur=2}{id_rubrique!=3}{age&lt;30}&gt;&lt;/textarea&gt;
&lt;p&gt;affiche les articles du secteur 2, &#224; l'exclusion de ceux de la rubrique 3, et publi&#233;s depuis moins de 30 jours.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Astuce.&lt;/i&gt; Le crit&#232;re &lt;code class='spip_code' dir='ltr'&gt;age&lt;/code&gt; est tr&#232;s pratique pour afficher les articles ou les br&#232;ves dont la date est situ&#233;e &#171; dans le futur &#187;, avec des valeurs n&#233;gatives (&#224; condition d'avoir s&#233;lectionn&#233;, dans la Configuration pr&#233;cise du site, l'option &#171; Publier les articles post-dat&#233;s &#187;). Par exemple, ce crit&#232;re permet de mettre en valeur des &#233;v&#233;nements futurs. &lt;code class='spip_code' dir='ltr'&gt;{age&lt;0}&lt;/code&gt; s&#233;lectionne les articles ou les br&#232;ves dont la date est situ&#233;e dans le futur (&#171; apr&#232;s &#187; aujourd'hui)...&lt;/p&gt;
&lt;p&gt;&lt;font color=&#034;red&#034;&gt;(SPIP 1.3)&lt;/font&gt; &lt;i&gt;&#194;ge par rapport &#224; une date fix&#233;e.&lt;/i&gt; Le crit&#232;re &lt;code class='spip_code' dir='ltr'&gt;age&lt;/code&gt; est calcul&#233; par rapport &#224; la date d'aujourd'hui (ainsi &lt;code class='spip_code' dir='ltr'&gt;{age&lt;30}&lt;/code&gt; correspond aux articles publi&#233;s depuis moins d'un mois par rapport &#224; aujourd'hui). Le crit&#232;re &lt;tt&gt;&lt;b&gt;age_relatif&lt;/b&gt;&lt;/tt&gt; compare la date d'un article ou d'une br&#232;ve &#224; une date &#171; courante &#187; ; par exemple, &#224; l'int&#233;rieur d'une boucle ARTICLES, on conna&#238;t d&#233;j&#224; une date pour chaque r&#233;sultat de la boucle, on peut donc s&#233;lectionner par rapport &#224; cette date (et non plus par rapport &#224; aujourd'hui).&lt;/p&gt;
&lt;p&gt;Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='10' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_article_principal(ARTICLES){id_article}&gt; &lt;h1&gt;#TITRE&lt;/h1&gt; &lt;BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif&lt;=0}{exclus}{par date}{0,1}&gt; Article suivant: #TITRE &lt;/BOUCLE_suivant&gt; &lt;/BOUCLE_article_principal&gt;&lt;/textarea&gt;
&lt;p&gt;la BOUCLE_suivant affiche un seul article de la m&#234;me rubrique, class&#233; par date, dont la date de publication est inf&#233;rieure ou &#233;gale &#224; la date de l'&#171; article_principal &#187; ; c'est-&#224;-dire l'article de la m&#234;me rubrique publi&#233; apr&#232;s l'article principal.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Affichage d'une partie des r&#233;sultats&lt;/h3&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;TT&gt;&lt;B&gt;{&lt;/B&gt;&lt;I&gt;a&lt;/I&gt;&lt;B&gt;,&lt;/B&gt;&lt;I&gt;b&lt;/I&gt;&lt;B&gt;}&lt;/B&gt;&lt;/TT&gt; o&#249; &lt;i&gt;a&lt;/i&gt; et &lt;i&gt;b&lt;/i&gt; sont des chiffres. Ce crit&#232;re permet de limiter le nombre de r&#233;sultats. &lt;i&gt;a&lt;/i&gt; indique le r&#233;sultat &#224; partir duquel on commence l'affichage (attention, le premier r&#233;sultat est num&#233;rot&#233; 0 - z&#233;ro) ; &lt;i&gt;b&lt;/i&gt; indique le nombre de r&#233;sultats affich&#233;s.&lt;/p&gt;
&lt;p&gt;Par exemple &lt;TT&gt;{0,10}&lt;/TT&gt; affiche les dix premiers r&#233;sultats ; &lt;TT&gt;{4,2}&lt;/TT&gt; affiche les deux r&#233;sultats &#224; partir du cinqui&#232;me (inclus).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;TT&gt;&lt;B&gt;{debut_&lt;/B&gt;&lt;I&gt;xxx&lt;/I&gt;&lt;B&gt;,&lt;/B&gt;&lt;I&gt;b&lt;/I&gt;&lt;B&gt;}&lt;/B&gt;&lt;/TT&gt; est une variante tr&#232;s &#233;labor&#233;e de la pr&#233;c&#233;dente. Elle permet de faire commencer la limitation des r&#233;sultats par une variable pass&#233;e dans l'URL (celle variable remplace ainsi le &lt;i&gt;a&lt;/i&gt; que l'on indiquait pr&#233;c&#233;demment). C'est un fonctionnement un peu compliqu&#233;, que fort heureusement on n'a pas besoin d'utiliser trop souvent.&lt;/p&gt;
&lt;p&gt;La variable pass&#233;e dans l'URL commence forc&#233;ment par &lt;TT&gt;debut_&lt;i&gt;xxx&lt;/i&gt;&lt;/TT&gt; (o&#249; &lt;i&gt;xxx&lt;/i&gt; est un mot choisi par le webmestre) . Ainsi, pour une page dont l'URL est :&lt;/p&gt;
&lt;p&gt;&lt;TT&gt;petition.php3?id_article=13&amp;debut_signatures=200&lt;/TT&gt;&lt;/p&gt;
&lt;p&gt;avec un squelette (&lt;TT&gt;petition.html&lt;/TT&gt;) contenant par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_signatures(SIGNATURES){id_article}{debut_signatures,100}&gt;&lt;/textarea&gt;
&lt;p&gt;on obtiendra la liste des 100 signatures &#224; partir de la 200-i&#232;me. Avec l'URL :&lt;/p&gt;
&lt;p&gt;&lt;TT&gt;petition.php3?id_article=13&amp;debut_signatures=300&lt;/TT&gt;&lt;/p&gt;
&lt;p&gt;on obtient la liste des 100 signatures &#224; partir de la 300-i&#232;me.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;TT&gt;&lt;B&gt;{&lt;/B&gt;&lt;I&gt;a&lt;/I&gt;&lt;B&gt;/&lt;/B&gt;&lt;I&gt;b&lt;/I&gt;&lt;B&gt;}&lt;/B&gt;&lt;/TT&gt; o&#249; &lt;i&gt;a&lt;/i&gt; et &lt;i&gt;b&lt;/i&gt; sont des chiffres. Ce crit&#232;re permet d'afficher une partie &lt;i&gt;a&lt;/i&gt; (proportionnellement) des r&#233;sultats en fonction d'un nombre de &#171; tranches &#187; &lt;i&gt;b&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Par exemple : &lt;TT&gt;{1/3}&lt;/TT&gt; affiche le premier tiers des r&#233;sultats. Ce crit&#232;re est surtout utile pour pr&#233;senter des listes sur plusieurs colonnes. Pour obtenir un affichage sur deux colonnes, il suffit de cr&#233;er une premi&#232;re boucle, affich&#233;e dans une case de tableau, avec le crit&#232;re &lt;code class='spip_code' dir='ltr'&gt;{1/2}&lt;/code&gt; (la premi&#232;re moiti&#233; des r&#233;sultats), puis une seconde boucle dans une seconde case, avec le crit&#232;re &lt;code class='spip_code' dir='ltr'&gt;{2/2}&lt;/code&gt; (la seconde moiti&#233; des r&#233;sultats).&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Attention.&lt;/i&gt; L'utilisation du crit&#232;re &lt;code class='spip_code' dir='ltr'&gt;{doublons}&lt;/code&gt; avec ce crit&#232;re est p&#233;rilleuse. Par exemple :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_prem(ARTICLES){id_rubrique}{1/2}{doublons}&gt; &lt;li&gt; #TITRE &lt;/BOUCLE_prem&gt; &lt;BOUCLE_deux(ARTICLES){id_rubrique}{2/2}{doublons}&gt; &lt;li&gt; #TITRE &lt;/BOUCLE_deux&gt;&lt;/textarea&gt;
&lt;p&gt;n'affichera pas tous les articles de la rubrique ! Imaginons par exemple qu'il y ait au total 20 articles dans notre rubrique. La BOUCLE_prem va afficher la premi&#232;re moiti&#233; des articles, c'est-&#224;-dire les 10 premiers, et interdire (&#224; cause de &lt;code class='spip_code' dir='ltr'&gt;{doublons}&lt;/code&gt;) de les r&#233;utiliser. La BOUCLE_deux, elle, va r&#233;cup&#233;rer la deuxi&#232;me moiti&#233; des articles de cette rubrique &lt;i&gt;qui n'ont pas encore &#233;t&#233; affich&#233;s&lt;/i&gt; par la BOUCLE_prem ; donc, la moiti&#233; des 10 articles suivants, c'est-&#224;-dire les 5 derniers articles de la rubrique. Vous avez donc &#171; perdu &#187; 5 articles dans l'op&#233;ration...&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Affichage &lt;i&gt;entre&lt;/i&gt; les r&#233;sultats&lt;/h3&gt;
&lt;p&gt;&lt;TT&gt;&lt;B&gt;{&#034;&lt;/B&gt;&lt;I&gt;inter&lt;/I&gt;&lt;B&gt;&#034;}&lt;/B&gt;&lt;/TT&gt; permet d'indiquer un code HTML (ici, &lt;i&gt;inter&lt;/i&gt;) ins&#233;r&#233; &lt;i&gt;entre&lt;/i&gt; les r&#233;sultats de la boucle. Par exemple, pour s&#233;parer une liste d'auteurs par une virgule, on indiquera :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;&lt;BOUCLE_auteurs(AUTEURS){id_article}{&#034;, &#034;}&gt;&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Les filtres de SPIP</title>
		<link>http://www.uzine.net/article901.html</link>
		<guid isPermaLink="true">http://www.uzine.net/article901.html</guid>
		<dc:date>2001-05-02T22:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>l'&#233;quipe de SPIP</dc:creator>


		<dc:subject>par num ...</dc:subject>

		<description>
&lt;p&gt;Nous avons vu dans la syntaxe des balises SPIP qu'il &#233;tait possible de modifier le comportement et l'affichage des balises en leur attribuant des filtres. &lt;br class='autobr' /&gt;
[ option avant (#BALISE|filtre1|filtre2|...|filtren) option apr&#232;s ] &lt;br class='autobr' /&gt;
Les filtres 1, 2, ..., n sont appliqu&#233;s successivement &#224; la #BALISE. &lt;br class='autobr' /&gt;
Les filtres de mise en page majuscules fait passer le texte en majuscules. Par rapport &#224; la fonction de PHP, majuscules s'applique &#233;galement aux lettres accentu&#233;es. justifier fait passer le texte en (...)&lt;/p&gt;


-
&lt;a href="http://www.uzine.net/rubrique143.html" rel="directory"&gt; Mise en page : manuel de r&#233;f&#233;rence&lt;/a&gt;

/ 
&lt;a href="http://www.uzine.net/mot179.html" rel="tag"&gt;par num ...&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Nous avons vu dans la &lt;a href='http://www.uzine.net/article899.html' class='spip_in'&gt;syntaxe des balises SPIP&lt;/a&gt; qu'il &#233;tait possible de modifier le comportement et l'affichage des balises en leur attribuant des filtres.&lt;/p&gt;
&lt;p&gt;&lt;TT&gt;&lt;B&gt;[&lt;/B&gt; option avant &lt;B&gt;(#BALISE&lt;/B&gt;|filtre1|filtre2|...|filtre&lt;I&gt;n&lt;/I&gt;&lt;B&gt;)&lt;/B&gt; option apr&#232;s &lt;B&gt;]&lt;/B&gt;&lt;/TT&gt;&lt;/p&gt;
&lt;p&gt;Les filtres 1, 2, ..., n sont appliqu&#233;s successivement &#224; la &lt;TT&gt;#BALISE&lt;/TT&gt;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Les filtres de mise en page&lt;/h3&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;majuscules&lt;/strong&gt; fait passer le texte en majuscules. Par rapport &#224; la fonction de PHP, &lt;i&gt;majuscules&lt;/i&gt; s'applique &#233;galement aux lettres accentu&#233;es.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;justifier&lt;/strong&gt; fait passer le texte en justification totale (&lt;TT&gt;&lt;P align=justify&gt;&lt;/TT&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;aligner_droite&lt;/strong&gt; fait passer le texte en justification &#224; droite (&lt;TT&gt;&lt;P align=right&gt;&lt;/TT&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;aligner_gauche&lt;/strong&gt; fait passer le texte en justification &#224; gauche (&lt;TT&gt;&lt;P align=left&gt;&lt;/TT&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;centrer&lt;/strong&gt; centre le texte (&lt;TT&gt;&lt;P align=center&gt;&lt;/TT&gt;).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Les filtres des dates&lt;/h3&gt;
&lt;p&gt;Les filtres suivants s'appliquent aux dates (&lt;TT&gt;&lt;abbr title=&#034;affdate)&#034;&gt;(#DATE&lt;/abbr&gt;&lt;/TT&gt; par exemple).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;affdate&lt;/strong&gt; affiche la date en fran&#231;ais, par exemple &#171; 13 janvier 2001 &#187;.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;jour&lt;/strong&gt; affiche le jour (en nombre).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;mois&lt;/strong&gt; affiche le mois (en nombre).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;annee&lt;/strong&gt; affiche l'ann&#233;e.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; [SPIP 1.0.2] &lt;strong&gt;heures&lt;/strong&gt; affiche les heures d'une date (les dates fournies par SPIP contiennent non seulement le jour, mais &#233;galement les horaires).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; [SPIP 1.0.2] &lt;strong&gt;minutes&lt;/strong&gt; affiche les minutes d'une date.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; [SPIP 1.0.2] &lt;strong&gt;secondes&lt;/strong&gt; affiche les secondes.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;nom_jour&lt;/strong&gt; affiche le nom du jour (lundi, mardi...).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;nom_mois&lt;/strong&gt; affiche le nom du mois (janvier, f&#233;vrier...).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;saison&lt;/strong&gt; affiche la saison (hiver, &#233;t&#233;...).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Filtres de logos&lt;/h3&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;fichier&lt;/strong&gt; &lt;font color=green&gt;[SPIP 1.4]&lt;/font&gt;. Affect&#233; &#224; un logo, ce filtre permet de r&#233;cup&#233;rer directement le nom de fichier correspondant au logo.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;||autres filtres&lt;/strong&gt; Contrairement aux versions pr&#233;c&#233;dentes, &lt;font color=green&gt;[SPIP 1.4]&lt;/font&gt; permet de passer des filtres &#171; maison &#187; sur les logos : la logique est un peu tordue, car il fallait respecter la compatibilit&#233; avec SPIP 1.3. L'analyse se d&#233;roule comme suit :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; si le premier &#171; filtre &#187; n'est pas un alignement, SPIP consid&#232;re qu'il s'agit d'un URL et fait un lien du logo vers cette adresse ;&lt;/li&gt;&lt;li&gt; si le premier filtre est un alignement, SPIP consid&#232;re que le deuxi&#232;me &#171; filtre &#187; est un URL ;&lt;/li&gt;&lt;li&gt; les filtres suivants sont de vrais filtres au sens habituel (y compris des filtres &#171; maison &#187; d&#233;clar&#233;s dans mes_fonctions.php3 ;&lt;/li&gt;&lt;li&gt; pour appliquer un filtre quelconque sans mettre d'URL, il faut mettre deux barres. Par exemple :&lt;br class='autobr' /&gt;
&lt;code class='spip_code' dir='ltr'&gt;&lt;?php $logo = '[(#LOGO_RUBRIQUE||texte_script)]'; ?&gt;&lt;/code&gt; permet de r&#233;cup&#233;rer le logo dans la variable php &lt;code class='spip_code' dir='ltr'&gt;$logo&lt;/code&gt;, pour traitement ult&#233;rieur (voir ci-dessous pour la signification de &lt;code class='spip_code' dir='ltr'&gt;|texte_script&lt;/code&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&#034;spip&#034;&gt;Filtres de texte&lt;/h3&gt;
&lt;p&gt;La plupart de ces filtres ont &#233;t&#233; introduits dans la version &lt;font color=green&gt;[SPIP 1.4]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;liens_ouvrants&lt;/strong&gt; transforme les liens SPIP qui donnent vers des sites ext&#233;rieurs en liens de type &#171; popup &#187;, qui ouvrent dans une nouvelle fenetre ; c'est l'&#233;quivalent du &lt;i&gt;target=blank&lt;/i&gt; du HTML. &lt;i&gt;N.B. : les d&#233;veloppeurs de SPIP estiment qu'il s'agit en g&#233;n&#233;ral d'une impolitesse, car les internautes savent tr&#232;s bien s'ils ont envie ou pas d'ouvrir une nouvelle fen&#234;tre - or ce syst&#232;me le leur impose. Mais la demande &#233;tait trop forte, et nous avons craqu&#233; ;-)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;supprimer_numero&lt;/strong&gt; sert &#224; &#233;liminer le num&#233;ro d'un titre, si par exemple on veut faire des tris d'articles &lt;code class='spip_code' dir='ltr'&gt;{par num titre}&lt;/code&gt; mais ne pas afficher les num&#233;ros (car ils ne servent qu'&#224; ordonner les articles).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;PtoBR&lt;/strong&gt; transforme les sauts de paragraphe en simples passages a la ligne, ce qui permet de &#171; resserrer &#187; une mise en page, par exemple &#224; l'int&#233;rieur d'un sommaire&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;taille_en_octets&lt;/strong&gt; permet de transformer un nombre d'octets (25678906) en une cha&#238;ne de caract&#232;res plus explicite (&#171; 24.4 Mo &#187;).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;supprimer_tags&lt;/strong&gt; est une suppression basique et brutale de tous les &lt;code class='spip_code' dir='ltr'&gt;&lt;...&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;textebrut&lt;/strong&gt; s'apparente au filtre &lt;code class='spip_code' dir='ltr'&gt;supprimer_tags&lt;/code&gt;, mais il agit de mani&#232;re un peu plus subtile, transformant notamment les paragraphes et &lt;code class='spip_code' dir='ltr'&gt;&lt;br&gt;&lt;/code&gt; en sauts de ligne, et les espaces ins&#233;cables en espaces simples. Utilisation, par exemple, pour faire un descriptif META &#224; partir du #DESCRIPTIF : &lt;code class='spip_code' dir='ltr'&gt;[&lt;meta name='description' content='(#DESCRIPTIF|textebrut)'&gt;]&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Filtres techniques&lt;/h3&gt;
&lt;p&gt;Ces filtres ont &#233;t&#233; introduits par &lt;font color=green&gt;[SPIP 1.4]&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;entites_html&lt;/strong&gt; transforme un texte en entit&#233;s HTML, que l'on peut donc implanter dans un formulaire, exemple : &lt;code class='spip_code' dir='ltr'&gt;[&lt;textarea&gt;(#DESCRIPTIF|entites_html)&lt;/textarea&gt;]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;texte_script&lt;/strong&gt; transforme n'importe quel champ en une cha&#238;ne utilisable en PHP ou Javascript en toute securit&#233;, exemple : &lt;code class='spip_code' dir='ltr'&gt;&lt;?php $x = '[(#TEXTE|texte_script)]'; ?&gt;&lt;/code&gt;. Attention : utilisez bien le caract&#232;re &lt;code class='spip_code' dir='ltr'&gt;'&lt;/code&gt; et non &lt;code class='spip_code' dir='ltr'&gt;&#034;&lt;/code&gt; : en effet, dans le second cas, si votre texte contient le symbole &lt;code class='spip_code' dir='ltr'&gt;$&lt;/code&gt;, le r&#233;sultat peut &#234;tre catastrophique (affichage partiel, affichage d'autre chose, plantage php, etc.).&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;attribut_html&lt;/strong&gt; rend une cha&#238;ne utilisable sans dommage comme attribut HTML ; par exemple, si l'on veut ajouter un texte de survol au lien normal vers un article, on utilisera&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code' dir='ltr'&gt;&lt;a href=&#034;#URL_ARTICLE&#034; [ title = &#034;(#DESCRIPTIF|supprimer_tags|attribut_html)&#034; ]&gt;#TITRE&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src='http://www.uzine.net/local/cache-vignettes/L8xH11/puce-32883.gif?1581558833' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;font color=purple&gt;[SPIP 1.6]&lt;/font&gt; introduit le filtre &lt;code class='spip_code' dir='ltr'&gt;|sinon&lt;/code&gt;, qui indique ce qu'il faut afficher si l'&#233;l&#233;ment &#171; filtr&#233; &#187; est vide : ainsi &lt;code class='spip_code' dir='ltr'&gt;[(#TEXTE|sinon{&#034;pas de texte&#034;})]&lt;/code&gt; affiche le texte ; si celui-ci est vide, affiche &lt;i&gt;&#171; pas de texte &#187;.&lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Ajouter ses propres fonctions&lt;/h3&gt;
&lt;p&gt;Les filtres de SPIP sont des fonctions PHP &#224; une seule variable. Vous pouvez utiliser directement les fonctions habituelles de PHP, mais &#233;galement cr&#233;er les v&#244;tres, sur le mod&#232;le :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;&lt;?php&lt;br /&gt; function mon_filtre($texte){&lt;br /&gt; $texte = (bidouillages en PHP) ...;&lt;br /&gt; return $texte;&lt;br /&gt; }&lt;br /&gt; ?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Afin de ne pas avoir &#224; modifier des fichiers de SPIP (qui risqueraient d'&#234;tre &#233;cras&#233;s lors d'une prochaine mise &#224; jour), vous pouvez installer vos fonctions personnelles dans un fichier &lt;TT&gt;mes_fonctions.php3&lt;/TT&gt; : si SPIP rep&#232;re un fichier ayant ce nom, il l'inclut automatiquement.&lt;/p&gt;
&lt;p&gt;Par exemple, A&lt;small&gt;RNO*&lt;/small&gt; a d&#233;velopp&#233; le filtre &lt;code class='spip_code' dir='ltr'&gt;enlettres&lt;/code&gt;, qui n'est pas inclus dans la distribution standard de SPIP. Ce filtre &#233;crit un nombre en toutes lettres (&lt;code class='spip_code' dir='ltr'&gt; [(#DATE|annee|enlettres)] = &#171; deux mille deux &#187;&lt;/code&gt;) ; ce filtre peut &#234;tre t&#233;l&#233;charg&#233; sur &lt;a href=&#034;http://www.uzine.net/spip_contrib/article.php3?id_article=17&#034; class='spip_url'&gt;http://www.uzine.net/spip_contrib/a...&lt;/a&gt; ; il suffit de l'ajouter dans votre fichier &lt;code class='spip_code' dir='ltr'&gt;mes_fonctions.php3&lt;/code&gt; pour l'utiliser.&lt;/p&gt;
&lt;p&gt;Depuis &lt;font color=ff6666&gt;[SPIP 1.5]&lt;/font&gt;, il est possible de passer des param&#232;tres dans les filtres. La syntaxe est&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;[(#BALISE|filtre{arg1, arg2}|...)]&lt;/textarea&gt;
&lt;p&gt;Le filtre doit &#234;tre d&#233;fini de la mani&#232;re suivante dans mes_fonctions.php3 :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;function filtre($texte, $arg1='valeur par defaut1', $arg2='valeur par d&#233;faut 2') { ....calculs.... return (une chaine de caract&#232;res); }&lt;/textarea&gt;
&lt;p&gt;On peut ainsi appeler n'importe quelle fonction php, ou s'appuyer sur des fonctions d&#233;finies dans SPIP ou dans &lt;code class='spip_code' dir='ltr'&gt;mes_fonctions.php3&lt;/code&gt;, pour peu qu'elles respectent l'ordre des arguments (le texte &#224; traiter doit &#234;tre imp&#233;rativement le premier argument). Par exemple, pour couper le texte &#224; une longueur donn&#233;e (50 caract&#232;res), on pourra utiliser &lt;code class='spip_code' dir='ltr'&gt;[(#TEXTE|couper{50})]&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
