<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.opinionz.be/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Opinionz mais en blog - Balise - DotClear</title>
  <link>http://www.opinionz.be/blog/</link>
  <atom:link href="http://www.opinionz.be/blog/feed/tag/DotClear/rss2" rel="self" type="application/rss+xml"/>
  <description>Opinionz est à la vie ce que le mérou est à la mer.</description>
  <language>fr</language>
  <pubDate>Mon, 06 Feb 2012 17:11:56 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Můstek, la version 2.0 de DotClear, est disponible en version finale !</title>
    <link>http://www.opinionz.be/blog/post/2008/08/03/960-Mstek-la-version-20-de-DotClear-est-disponible-en-version-finale</link>
    <guid isPermaLink="false">urn:md5:7f77b0b26fe7d0c7aa730bf7c90667d6</guid>
    <pubDate>Sun, 03 Aug 2008 11:46:00 +0200</pubDate>
    <dc:creator>Benjamin</dc:creator>
        <category>DotClear</category>
        <category>blog</category><category>DotClear</category><category>sortie</category>    
    <description>    &lt;p&gt;Il aura fallu 1040 jours depuis la première ligne de code jusqu'à la publication de la version finale, publication qui arrive 3 mois jour pour jour après la sortie de la Release Candidate. Bon ici le billet arrive encore un peu plus tard mais tout ça pour dire que Opinionz n'est pas tout a fait inerte, il est même à jour&amp;nbsp;! Si ça c'est pas du billet intéressant.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.opinionz.be/blog/post/2008/08/03/960-Mstek-la-version-20-de-DotClear-est-disponible-en-version-finale#comment-form</comments>
      <wfw:comment>http://www.opinionz.be/blog/post/2008/08/03/960-Mstek-la-version-20-de-DotClear-est-disponible-en-version-finale#comment-form</wfw:comment>
      <wfw:commentRss>http://www.opinionz.be/blog/feed/atom/comments/960</wfw:commentRss>
      </item>
    
  <item>
    <title>Enfin un bon antispam pour DotClear.</title>
    <link>http://www.opinionz.be/blog/post/2006/05/17/695-enfin-un-bon-antispam-pour-dotclear</link>
    <guid isPermaLink="false">urn:md5:d3288ab854b2736b7da121e7bdf1d406</guid>
    <pubDate>Wed, 17 May 2006 21:45:00 +0000</pubDate>
    <dc:creator>Benjamin</dc:creator>
        <category>DotClear</category>
        <category>antispam</category><category>blog</category><category>DotClear</category><category>hack</category><category>spam</category><category>trucs et astuces</category>    
    <description>&lt;p&gt;Avant, &lt;a href=&quot;http://www.dotclear.net/&quot;&gt;DotClear&lt;/a&gt; c'était bien. Méconnu des merdeux, c'était tranquille. Mais ça attire les foules... et les vilains. D'où une croissance exponentielle de la publicité viagra-esque sur les blogs. C'est la rançon de la gloire. Des bidouilles en tout genre ont donc vu le jour&amp;nbsp;: &lt;a href=&quot;http://fr.wikipedia.org/wiki/Captcha&quot;&gt;captcha&lt;/a&gt; (code caché dans une image), &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=8451&quot;&gt;captcha accessible&lt;/a&gt; (réponse à donner à une question), &lt;a href=&quot;http://www.kittenauth.com/&quot;&gt;capte-chat&lt;/a&gt; (cliquer sur tous les chats), &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=13328&quot;&gt;Spamplemousse&lt;/a&gt; (plugin utilisant une liste noire de mots-clés), &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=16270&quot;&gt;SpamClear&lt;/a&gt; (plugin utilsant un filtre bayésien), tout ça pour éviter à des pouilleux de foutre le dawa dans les commentaires. Soigner&amp;nbsp;? Oui. Mais guérir&amp;nbsp;?&lt;/p&gt;    &lt;h3&gt;Ça suffit&amp;nbsp;!&lt;/h3&gt;


&lt;p&gt;Certains blogs (comme &lt;a href=&quot;http://embruns.net/logbook/2006/05/16.html&quot;&gt;Embruns.net&lt;/a&gt;) hésitent à fermer leurs commentaires de façon définitive suite à des attaques massives de spammeurs. Des acharnés pensent déjà à &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=18180&quot;&gt;coupler Spamplemousse et SpamClear&lt;/a&gt; pour une protextion optimale de leur blog. A ce train là, on passera bientôt plus de temps à gérer les spams qu'à rédiger des billets. On va même jusqu'à songer à &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=18063&quot;&gt;changer l'architecture du formulaire&lt;/a&gt; pour tromper les vilains. Nom de Zeus&amp;nbsp;! Ça suffit&amp;nbsp;! Voici venir une (vraie) solution.&lt;/p&gt;


&lt;h3&gt;A la source&lt;/h3&gt;


&lt;p&gt;Pourquoi faire simple quand on peut faire compliqué&amp;nbsp;? Vaut-il mieux mettre des pièges à renards autour de son poulallier pour éviter à ces derniers d'entrer ou alors surveiller ce poulallier et gueuler par la fenêtre à chaque renard qui passe (ne regardez pas)&amp;nbsp;? Prendre le problème à la source, voilà donc qui est intéressant. Les robots spammeurs sont avant tout des robots et, par définition, un robot n'est pas humain. Super. Oui, parce que grâce à cette différence, on va pouvoir traquer le renard. On va détecter à l'envoi du formulaire si oui ou non il a bien été envoyé par la main de l'homme. Cette technique va nous permettre de filtrer efficacement les spams des commentaires légitimes.&lt;/p&gt;


&lt;h3&gt;Comment ça marche&amp;nbsp;?&lt;/h3&gt;


&lt;p&gt;Quand on valide un formulaire, la valeur du libellé de tous les champs nommés est envoyée au serveur. Pour les boutons submit, il y une petite subtilité&amp;nbsp;: seul la valeur du bouton cliqué est envoyée. L'idée est donc de placer plusieurs boutons submit dans le formulaire, en leur donnant le même nom. On pourra ainsi détecter via la valeur reçue comment le formulaire a été envoyé. On utilise donc un premier bouton auquel on donnera une valeur (un libellé) spamesque humainement compréhensible et on le cachera à la vue des utilisateurs (via CSS). Oui mais l'accessibilité&amp;nbsp;? Justement, vu qu'on aura donné un libellé évident de non-utilisation, même les gens pour qui il ne sera pas caché cliquerons sur l'autre.&lt;/p&gt;


&lt;h3&gt;Utilisation&lt;/h3&gt;


&lt;p&gt;Voilà un exemple pour mieux vous faire comprendre mes mots sans dessus dessous.&lt;/p&gt;

&lt;pre&gt;geshi html4strict
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;(ce bouton est un test antispam)&amp;quot; name=&amp;quot;submitbtn&amp;quot; disabled=&amp;quot;disabled&amp;quot; style=&amp;quot;display: none;&amp;quot; /&amp;gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;preview&amp;quot; name=&amp;quot;preview&amp;quot; value=&amp;quot;prévisualiser&amp;quot; /&amp;gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;submit&amp;quot; value=&amp;quot;envoyer&amp;quot; name=&amp;quot;submitbtn&amp;quot; /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Evitons les débats sur la méthode de masquage du bouton&amp;nbsp;: utilisez celle qu'il vous plaira.&lt;/p&gt;


&lt;h3&gt;En pratique&lt;/h3&gt;


&lt;p&gt;Il ne nous reste qu'à tester la valeur du bouton submit reçue. Si le robot s'est contenté d'envoyer des données à l'adresse du formulaire, le bouton n'aura pas de valeur. Si le robot utilse un script qui remplit les champs du formulaire, la valeur sera celle du premier bouton submit, le bouton factice. Si la valeur reçue est celle du deuxième bouton, on accepte et on passe au traitement habituel des commentaires. Pendant le temps que vous allez gagner à ne pas ajouter frénétiquement des mots à votre liste noire et à apprendre à un script à comprendre ce qui est spam et ce qui ne l'est pas, vous allez pouvoir reprendre un semblant de vie sociale et, qui sait, rencontrer des gens.&lt;/p&gt;


&lt;h3&gt;Des chiffres&lt;/h3&gt;


&lt;p&gt;Depuis que j'ai installé ce système sur ce blog (über frimu), sur environ 400 commentaires, 40% sont tombés dans le piège-à-con du bouton factice, 29% sont arrivés avec une valeur vide pour le bouton submit et 11% ont été stoppés net par une deuxième méthode que je détaillerai après. Je crois que c'est clair&amp;nbsp;: ça marche. Les commentaires indésirables, qui représentaient ici 80% des commentaires postés, n'ont même pas été pris en compte. Pas de filtre sur des mots-clés, pas d'analyse bayésienne. Pas de post-traitement tout court. Si ça c'est pas du temps gagné.&lt;/p&gt;


&lt;h3&gt;Solution non exclusive&lt;/h3&gt;


&lt;p&gt;Il est cependant évident que cette méthode (bien qu'efficace) n'est pas infaillible, en ce sens que des messages indésirables peuvent toujours arriver s'ils sont envoyés par des humains. C'est pourquoi l'utilisation de l'un ou l'autre plugin peut rester un atout. Mais fini les 23 pages par jour à analyser, 3 messages par semaine tout au plus. Il arrivera certainement un jour où cette technique ne sera plus assez efficace. On trouvera autre chose le moment venu mais en attendant, on profite.&lt;/p&gt;


&lt;h3&gt;Méthode alternative&lt;/h3&gt;


&lt;p&gt;En plus du test sur la valeur du submit, je vérifie le mode de connexion du posteur. J'ai en effet constaté que tous (ou presque ?) les commentaires valides arrivaient avec comme header de connexion (&lt;em&gt;$_SERVER['HTTP_CONNECTION']&lt;/em&gt;) &quot;Keep-alive&quot; mais surtout que beaucoup de spams eux avaient comme header &quot;Keep-alive, TE, close&quot;. J'ai donc ajouté, en plus du test sur le bouton d'envoi, un test sur la valeur de cette variable. Libre à vous de l'utiliser ou non mais pour ma part, je trouve ça très efficace.&lt;/p&gt;


&lt;h3&gt;Conclusion&lt;/h3&gt;


&lt;p&gt;Ce billet a pour unique but de présenter une technique antispam efficace pour DotClear. Cette solution fonctionne à merveille ici mais ne vient avec aucune garantie. Il n'y a pas bien grand risque sinon d'être débarassé de centaines de commentaires indésirables. Je n'en ferai pas un plugin dans la mesure où il en existe déjà deux, ce qui est déjà bien suffisant. Libre aux développeurs de ces plugins d'intégrer ou non cette modification pour accroître l'efficacité de leur plugin.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.opinionz.be/blog/post/2006/05/17/695-enfin-un-bon-antispam-pour-dotclear#comment-form</comments>
      <wfw:comment>http://www.opinionz.be/blog/post/2006/05/17/695-enfin-un-bon-antispam-pour-dotclear#comment-form</wfw:comment>
      <wfw:commentRss>http://www.opinionz.be/blog/feed/atom/comments/687</wfw:commentRss>
      </item>
    
  <item>
    <title>DotClear : des réponses à vos questions sur le forum, enfin.</title>
    <link>http://www.opinionz.be/blog/post/2006/05/08/679-dotclear-des-reponses-a-vos-questions-sur-le-forum-enfin</link>
    <guid isPermaLink="false">urn:md5:4561d9f0d840735d77d94c18a6f521df</guid>
    <pubDate>Mon, 08 May 2006 15:05:00 +0000</pubDate>
    <dc:creator>Benjamin</dc:creator>
        <category>DotClear</category>
        <category>DotClear</category><category>plugins</category>    
    <description>    &lt;p&gt;Je viens de passer sur le &lt;a href=&quot;http://www.opinionz.be/forum&quot;&gt;forum d'Opinionz&lt;/a&gt; et j'ai (enfin) répondu à tous vos messages concenant DotClear. Je vais tenter de donner suite au plus vite à tout ça et je vais mettre (enfin) en ligne les nouvelles versions des plugins d'ici peu. J'espère que la venue de DotClear 2 ne rendra pas tous ces plugins inutiles(-isables). Et comme je vais remettre les mains dans le cambouis, n'hésitez pas (c'est le moment) à me faire part de TOUS les changements/corrections/bugs/désirs/idées pour ces plugins. A bientôt donc.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.opinionz.be/blog/post/2006/05/08/679-dotclear-des-reponses-a-vos-questions-sur-le-forum-enfin#comment-form</comments>
      <wfw:comment>http://www.opinionz.be/blog/post/2006/05/08/679-dotclear-des-reponses-a-vos-questions-sur-le-forum-enfin#comment-form</wfw:comment>
      <wfw:commentRss>http://www.opinionz.be/blog/feed/atom/comments/671</wfw:commentRss>
      </item>
    
  <item>
    <title>Modifier la présentation du blogroll avec des listes imbriquées</title>
    <link>http://www.opinionz.be/blog/post/2005/12/09/530-modifier-la-presentation-du-blogroll-avec-des-listes-imbriquees</link>
    <guid isPermaLink="false">urn:md5:fa35a76ae9fe87827a0b0f240ff2068f</guid>
    <pubDate>Fri, 09 Dec 2005 02:11:00 +0000</pubDate>
    <dc:creator>Benjamin</dc:creator>
        <category>DotClear</category>
        <category>DotClear</category><category>hack</category>    
    <description>&lt;p&gt;&lt;a href=&quot;http://www.kozlika.org/&quot;&gt;Kozlika&lt;/a&gt; a posé une &lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?pid=64420#p64420&quot;&gt;question intéressante&lt;/a&gt; sur le &lt;a href=&quot;http://www.dotclear.net/&quot;&gt;forum DotClear&lt;/a&gt; et je n'ai donc pas pu résister à la résoudre (&lt;a href=&quot;http://asia-boyz.skyblog.com/pics/177338527.gif&quot;&gt;super chinois&lt;/a&gt; ?). L'idée était donc de modifier l'affichage du blogroll pour permettre l'utilisation de listes imbriquées. Voilà qui est fait, c'est donc possible moyennant les menus changements que nous allons évoquer.&lt;/p&gt;    &lt;h3&gt;Le problème&lt;/h3&gt;


&lt;p&gt;La présentation par défaut du blogroll correspond donc à ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi html4strict
&amp;lt;h3&amp;gt;Première catégorie&amp;lt;/h3&amp;gt;
     &amp;lt;ul&amp;gt;
         &amp;lt;li&amp;gt;Lien 1&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;Lien 2&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;etc.&amp;gt;
     &amp;lt;/ul&amp;gt;
&amp;lt;h3&amp;gt;Deuxième catégorie&amp;lt;/h3&amp;gt;
     &amp;lt;ul&amp;gt;
         &amp;lt;li&amp;gt;Lien 1&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;Lien 2&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;etc.&amp;gt;
     &amp;lt;/ul&amp;gt;
etc.
&lt;/pre&gt;


&lt;p&gt;Et l'idée était de l'afficher comme ça&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi html4strict
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;Première catégorie
     &amp;lt;ul&amp;gt;
         &amp;lt;li&amp;gt;Lien 1&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;Lien 2&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;etc.&amp;gt;
     &amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;Deuxième catégorie
     &amp;lt;ul&amp;gt;
         &amp;lt;li&amp;gt;Lien 1&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;Lien 2&amp;lt;/li&amp;gt;
         &amp;lt;li&amp;gt;etc.&amp;gt;
     &amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;La solution&lt;/h3&gt;


&lt;p&gt;Aperçu de la fonction avec ses petites modifications&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi php
function linkList($category='&amp;lt;h3&amp;gt;%s&amp;lt;/h3&amp;gt;',$block='&amp;lt;ul&amp;gt;%s&amp;lt;/ul&amp;gt;',$item='&amp;lt;li&amp;gt;%s&amp;lt;/li&amp;gt;')
{
	global $con, $blog;

	if (($rs_link = $con-&amp;gt;select(
		' SELECT label, href, title, lang, rel FROM ' . $blog-&amp;gt;t_link
		. '  ORDER BY position')) !== false) {
		$res = '';
		
		while (!$rs_link-&amp;gt;EOF()) {
			$label = $rs_link-&amp;gt;f('label');
			$href  = $rs_link-&amp;gt;f('href');
			$title = $rs_link-&amp;gt;f('title');
			$lang  = $rs_link-&amp;gt;f('lang');
			$rel = $rs_link-&amp;gt;f('rel');
			
			if (! $label &amp;amp;&amp;amp; ! $href) {
				if ('' != $res) {
					#printf($block,$res);
					/* début ajout */
					$res2 = sprintf($block,$res);
					/* fin ajout */
				}
				#printf($category, $title);
				/* début ajout */
				if (!empty($res)) {
					$res3 .= sprintf($category,$cattitle,$res2);
				}
				$cattitle = $title;
				/* fin ajout */
				$res = '';
			} else {
				
				$link =
				'&amp;lt;a href=&amp;quot;'.htmlspecialchars($href).'&amp;quot;'.
				((!$lang) ? '' : ' hreflang=&amp;quot;'.htmlspecialchars($lang).'&amp;quot;').
				((!$title) ? '' : ' title=&amp;quot;'.htmlspecialchars($title).'&amp;quot;').
				((!$rel) ? '' : ' rel=&amp;quot;'.htmlspecialchars($rel).'&amp;quot;').
				'&amp;gt;'.
				htmlspecialchars($label).
				'&amp;lt;/a&amp;gt;';
				
				$res .= sprintf($item,$link);
			}
			$rs_link-&amp;gt;moveNext();
		}
		/* début ajout */
		$res2 = sprintf($block,$res);
		$res3 .= sprintf($category,$cattitle,$res2);
		/* fin ajout */
		if ('' != $res) {
			#printf($block,$res);
			/* début ajout */
			printf($block,$res3);
			/* fin ajout */
		}
	}
}
&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Utilisation&lt;/h3&gt;


&lt;p&gt;On peut donc désormais utiliser la syntaxe suivante dans notre blog&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi php
&amp;lt;?php dcBlogroll::linkList('&amp;lt;li&amp;gt;%1$s %2$s&amp;lt;/li&amp;gt;'); ?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;
Si ça c'est pas la fête &lt;img src=&quot;/blog/themes/opinionz/smilies/big/note.gif&quot; alt=&quot;:note:&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.opinionz.be/blog/post/2005/12/09/530-modifier-la-presentation-du-blogroll-avec-des-listes-imbriquees#comment-form</comments>
      <wfw:comment>http://www.opinionz.be/blog/post/2005/12/09/530-modifier-la-presentation-du-blogroll-avec-des-listes-imbriquees#comment-form</wfw:comment>
      <wfw:commentRss>http://www.opinionz.be/blog/feed/atom/comments/527</wfw:commentRss>
      </item>
    
  <item>
    <title>DotClear : le plugin Billets Connexes complète le plugin Tags</title>
    <link>http://www.opinionz.be/blog/post/2005/12/08/527-dotclear-le-plugin-billets-connexes-complete-le-plugin-tags</link>
    <guid isPermaLink="false">urn:md5:c1faadc9a1b6c27a994fc294169021f6</guid>
    <pubDate>Thu, 08 Dec 2005 00:45:00 +0000</pubDate>
    <dc:creator>Benjamin</dc:creator>
        <category>DotClear</category>
        <category>DotClear</category><category>plugin</category><category>tags</category>    
    <description>&lt;p&gt;Non pas que j'oublie le plugin &lt;a href=&quot;http://www.opinionz.be/blog/2005/03/01/279-dotclear-plugin-nombre-de-lectures-disponible&quot;&gt;Nombre de Lectures&lt;/a&gt;, mais je l'ai mis sur pause pour un temps quand une idée fulgurante m'a traversé l'esprit. Bon d'accord, l'idée n'était pas neuve mais je n'avais jusqu'alors pas la possibilité de la réaliser. Jusqu'au jour où je tombe sur le plugin &lt;a href=&quot;http://tw.apinc.org/weblog/2005/08/13#twtags-021-pour-dotclear&quot;&gt;Tags&lt;/a&gt; (se basant lui-même sur le plugin &lt;a href=&quot;http://tw.apinc.org/weblog/2005/07/09#dotclear-metadonnees&quot;&gt;Métadonnées de billet&lt;/a&gt;) qui permet d'assigner des mots-clés à chacun des billets.&lt;/p&gt;    &lt;h3&gt;Présentation&lt;/h3&gt;


&lt;p&gt;Cette idée qui me trotte dans la tête vient donc de voir le jour&amp;nbsp;: il est désormais possible d'afficher une liste de billets connexes à un billet source. Super&amp;nbsp;! Oui en effet. Le principe est simple&amp;nbsp;: on récupère les mots-clés du billet source et on les compare à ceux de la base de données à la recherche d'autres billets. Facile, sympa, sexy.&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;C'est la classe&lt;/h3&gt;


&lt;p&gt;Oui on peut le dire, c'est de la POO. Mais là n'est pas la question. Point suivant.&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;En pratique&lt;/h3&gt;


&lt;p&gt;Le plugin est utilisable dans le fichier &lt;strong&gt;post&lt;/strong&gt; de votre template, mais aussi dans la sidebar ou dans les pages utilisant le plugin &lt;strong&gt;Related&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Voici trois exemples d'utilisation de la classe&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi php
&amp;lt;?php
/**
pertinence de 2 mots-clés, pas de limite, id auto et clé de tri définie
*/
$bc = new dcBilletsConnexes(2,0,0,'´post_dt´ ASC');
/**
tous les paramètres par défaut
*/
$bc-&amp;gt;show();
?&amp;gt;

&amp;lt;?php
/**
pertinence de 1 mot-clé, 5 résultats maximum, id auto et classement par défaut
*/
$bc = new dcBilletsConnexes(1,5);
/**
personnalisation du bloc et du titre, formatage par défaut des éléments de la liste
et séparation des mots-clés avec '/'
*/
$bc-&amp;gt;show('&amp;lt;div&amp;gt;%1$s&amp;lt;ul&amp;gt;%2$s&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;',
	'&amp;lt;h3&amp;gt;Billet(s) connexe(s)&amp;lt;/h3&amp;gt;','*',', ');
?&amp;gt;

&amp;lt;?php
/**
pertinence de 3 mots-clés, pas de limite de résultat, id du billet source spécifié,
classement par défaut
*/
$bc = new dcBilletsConnexes(3,0,53);
/**
bloc et titre par défaut, formatage personnalisé des éléments de la liste
et séparation des mots-clés par défaut
*/
$bc-&amp;gt;show('*','*','&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;%2$s&amp;quot; title=&amp;quot;Mot(s)-clé(s) : %3$s&amp;quot;&amp;gt;%1$s&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;');
?&amp;gt;

&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Explication&lt;/h3&gt;


&lt;p&gt;&lt;strong&gt;Instanciation&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Lors de l'instanciation de la classe, il est possible de définir 4 paramètres&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;niveau&amp;nbsp;: nombre qui définit le nombre de mots-clés minimum à avoir en commun avec le billet source&lt;/li&gt;
&lt;li&gt;limite&amp;nbsp;: nombre de résultats maximum à afficher, utile si vous avez 7000 billets connexes&lt;/li&gt;
&lt;li&gt;id&amp;nbsp;: le système est malin, il récupère l'id du billet source tout seul, mais il est aussi possible de lui donner&lt;/li&gt;
&lt;li&gt;ordre&amp;nbsp;: clé de tri des résultats (pour classer les billets par date, par nom et toutes ces choses)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces paramètres sont tous optionnels et gardent alors leurs valeurs par défaut qui sont respectivement&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 (un seul mot-clé à avoir en commun, augmenter pour affiner les résultats)&lt;/li&gt;
&lt;li&gt;0 (mettre zéro pour aucune limite, sinon mettre ce que bon vous semble)&lt;/li&gt;
&lt;li&gt;0 (par défaut, à zéro donc, l'id est récupéré de façon automatique)&lt;/li&gt;
&lt;li&gt;'`post_dt` DESC' (le classement par défaut est par date, du plus récent ou plus vieux)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Affichage des résultats&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;La méthode &lt;strong&gt;show&lt;/strong&gt; accepte elle-aussi 4 paramètres&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bloc&amp;nbsp;: chaîne de formatage du bloc à afficher sur le blog&lt;/li&gt;
&lt;li&gt;titre&amp;nbsp;: titre du bloc (avec gestion intelligente du pluriel)&lt;/li&gt;
&lt;li&gt;item&amp;nbsp;: chaîne de formatage des éléments de la liste&lt;/li&gt;
&lt;li&gt;séparateur&amp;nbsp;: définit le séparateur des tags pour l'affichage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces paramètres sont aussi tous optionnels, vous pouvez voir les valeurs par défaut dans l'exemple vu plus haut.&lt;/p&gt;


&lt;p&gt;La chaîne bloc reçoit deux valeurs&amp;nbsp;: le titre du bloc et les éléments de la liste&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi html4strict
&amp;lt;div class=&amp;quot;billets-connexes&amp;quot;&amp;gt;%1$s&amp;lt;ul&amp;gt;%2$s&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;


&lt;p&gt;La chaîne des éléments de la liste reçoit quant à elle le titre du billet, son url et les mots-clés récupérés&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi html4strict
&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;%2$s&amp;quot; title=&amp;quot;Mot(s)-clé(s) : %3$s&amp;quot;&amp;gt;%1$s&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Gestion des pluriels&lt;/h3&gt;


&lt;p&gt;Le titre du bloc et la balise &lt;em&gt;title&lt;/em&gt; des liens dans les résultats gèrent leur pluriel de façon intelligente. En effet, si vous utilisez &quot;Billet(s) Connexe(s)&quot; ou 'Mot(s)-clé(s)&quot;, la classe affichera automatiquement le sigulier ou le pluriel suivant le nombre de résultats. Stupéfiant&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Pour les pluriels complexes, ça marche aussi&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;em&gt;&quot;Voici (une|des) beau(x) soulier(s) pour l'oncle Henri !&quot;&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Personnalisation&lt;/h3&gt;


&lt;p&gt;Si l'envie vous prend de vouloir récupérer les résultats sans affichage, la méthode &lt;strong&gt;getinfo&lt;/strong&gt; est là pour vous.&lt;/p&gt;


&lt;p&gt;Ainsi, avec le code suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi php
&amp;lt;?php
$bc = new dcBilletsConnexes(2);
$billets = $bc-&amp;gt;getinfo();
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;On récupère les données sous la forme d'un tableau associatif et on peut alors traiter les infos comme on veut.&lt;/p&gt;


&lt;p&gt;L'id des billets est utilisé comme index, le titre, l'url et les tags sont donc utilisables comme ceci&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;geshi php
&amp;lt;?php
/**
suite du code vu juste avant donc
*/
foreach ($billets as $id =&amp;gt; $billet)
{
	echo '&amp;lt;p&amp;gt;&amp;lt;a href=&amp;quot;'.$billet['url'].'&amp;quot; title=&amp;quot;'.$billet['tags'].'&amp;quot;&amp;gt;'.$billet['titre'].'&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;';
}
?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pour l'installateur et l'archive, direction le &lt;a href=&quot;http://www.opinionz.be/blog/public/share/billets-connexes/&quot;&gt;grenier&lt;/a&gt; &lt;img src=&quot;/blog/themes/opinionz/smilies/big/note.gif&quot; alt=&quot;:note:&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://www.opinionz.be/blog/post/2005/12/08/527-dotclear-le-plugin-billets-connexes-complete-le-plugin-tags#comment-form</comments>
      <wfw:comment>http://www.opinionz.be/blog/post/2005/12/08/527-dotclear-le-plugin-billets-connexes-complete-le-plugin-tags#comment-form</wfw:comment>
      <wfw:commentRss>http://www.opinionz.be/blog/feed/atom/comments/519</wfw:commentRss>
      </item>
    
</channel>
</rss>
