<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CSS &#38; Webdesign &#187; Sidebar</title>
	<atom:link href="http://css.4design.tl/tag/sidebar/feed" rel="self" type="application/rss+xml" />
	<link>http://css.4design.tl</link>
	<description>Le blog de l&#039;intégrateur web</description>
	<lastBuildDate>Thu, 24 May 2012 16:31:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Les widgets dans WordPress 2.5 avec widgétisator ;)</title>
		<link>http://css.4design.tl/les-widgets-dans-wordpress-25-avec-widgetisator</link>
		<comments>http://css.4design.tl/les-widgets-dans-wordpress-25-avec-widgetisator#comments</comments>
		<pubDate>Thu, 20 Mar 2008 22:29:38 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sidebar]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator</guid>
		<description><![CDATA[La mise-à-jour vers WordPress 2.5 ne se limite pas seulement à des améliorations ergonomiques et cosmétiques au niveau de l&#8217;interface d&#8217;administration. Prenons les widgets : la page elle-même est profondément remaniée, et toute la partie destinée au choix du nombre de widgets (texte, RSS, catégorie, etc.) disparait, puisque avec cette version, le nombre de certains widgets n&#8217;est plus limité. Et comme vous êtes sympa, je vous donne les éléments nécessaires pour nommer et personnaliser vos zones widgétisables dans votre template WordPress. L&#8217;est passé où, le glissé-déposé ? Conséquence directe sur l&#8217;interface, il n&#8217;est plus possible d&#8217;utiliser le glissé-déposé des widgets [...]]]></description>
			<content:encoded><![CDATA[<p>La mise-à-jour vers WordPress 2.5 ne se limite pas seulement à des améliorations ergonomiques et cosmétiques au niveau de l&#8217;interface d&#8217;administration. Prenons les widgets : la page elle-même est profondément remaniée, et toute la partie destinée au choix du nombre de widgets (texte, RSS, catégorie, etc.) disparait, puisque avec cette version, le nombre de certains widgets n&#8217;est plus limité. Et comme vous êtes sympa, je vous donne les éléments nécessaires pour nommer et personnaliser vos zones widgétisables dans votre template WordPress.<span id="more-214"></span></p>

<h3>L&#8217;est passé où, le glissé-déposé ?</h3>

<p>Conséquence directe sur l&#8217;interface, il n&#8217;est plus possible d&#8217;utiliser le glissé-déposé des widgets vers les différentes &laquo;&nbsp;sidebars&nbsp;&raquo;. En effet, cette fonction n&#8217;était déjà pas très pratique lorsqu&#8217;on déclarait quatre zones widgétisables (improprement appelées &laquo;&nbsp;sidebars&nbsp;&raquo;), alors vous imaginez le dawa avec plus  ;)</p>

<p>A la place, nous avons une interface robuste avec à gauche, les différents widgets disponibles, et à droite, les zones widgétisables et les widgets associés, avec les options disponibles pour chacun d&#8217;eux.</p>

<p>A noter qu&#8217;il est préférable de bien nommer vos zones widgétisables pour vous y retrouver car le choix de ces dernières s&#8217;effectue désormais au dans un menu <em>select</em>.</p>

<h3>Modifier l&#8217;intitulé des zones widgétisables</h3>

<p>Dans un précédent article sur <a href="http://www.css4design.com/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war">les widgets dans WordPress</a>, je n&#8217;étais pas parvenu à modifier l&#8217;intitulé des zones widgétisables, cette fois, c&#8217;est réglé : à la place de <em>sidebar1</em>, <em>sidebar2</em>, etc. voici le code à mettre dans le fichier <em>functions.php</em> pour donner un nom explicite à chaque zone, avec en prime, la possibilité de spécifier pour chacune les balises HTML enveloppantes qui vont bien :</p>

<h4>Widgétisator</h4>

<p><pre>
&lt;?php
// <strong>A mettre dans le fichier functions.php de votre thème</strong>
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=&gt;'header',
'before_widget' =&gt; '&lt;p id=&quot;%1$s&quot; class=&quot;widget-header %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/p&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'sidebar',
'before_widget' =&gt; '&lt;li id=&quot;%1$s&quot; class=&quot;widget-sidebar %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/li&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'content',
'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget-content %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
register_sidebar(array('name'=&gt;'footer',
'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget-footer %2$s&quot;&gt;',
'after_widget' =&gt; '&lt;/div&gt;',
'before_title' =&gt; '&lt;h3 class=&quot;widgettitle&quot;&gt;',
'after_title' =&gt; '&lt;/h3&gt;',
));
?&gt;
</pre></p>

<p>L&#8217;idée est de déclarer individuellement chaque zone, de manière à controler :</p>

<ul>
    <li>le nom de la zone (<em>header</em>, <em>sidebar</em>, <em>content</em>, <em>footer</em>), </li>
    <li>la balise html servant à encadrer le code fournit par le widget avec une class CSS spécifique (<em>widget-header</em>, <em>widget-sidebar</em>, <em>widget-content</em>, <em>widget-footer</em>), </li>
    <li>la balise de titre avec sa classe CSS spécifique (<em>widgettitle</em>). </li>
</ul>

<p>Sinon, il reste toujours la possibilité de déclarer plusieurs zones d&#8217;un seul coup avec le code :</p>

<p><pre>
&lt;?php
if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' =&gt; '&lt;div id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;',
        'after_widget' =&gt; '&lt;/div&gt;',
        'before_title' =&gt; '&lt;h2 class=&quot;widgettitle&quot;&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
    );
    register_sidebars(4, $widgetWrap);
?&gt;
</pre></p>

<p>Dans les deux cas, pour terminer, il est nécessaire de définir votre zone widgétisable dans votre template à l&#8217;aide des lignes suivantes :</p>

<p><pre>
&lt;?php
// <strong>A mettre dans votre template là où vous voulez déclarer une WAR</strong>
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header') ) : ?&gt;</p>

<p>/*
Placez ici le code qui doit s'afficher si la zone
n'est pas remplie avec des widgets -- facultatif
*/</p>

<p>&lt;?php endif; ?&gt;
</pre></p>

<h3>En bref</h3>

<p>Vous l&#8217;aurez compris, je suis conquis par cette nouvelle version de WordPress, et vous n&#8217;avez pas fini d&#8217;en entendre parler ;) Pour avoir d&#8217;autres informations sur cette version, n&#8217;h&#233;sitez pas &#224; faire un tour sur <a href="http://www.wordpress-fr.net/dans-les-coulisses-de-wordpress-25-sneak-peek">WordPress francophone</a>, chez <a href="http://blog.nicolargo.com/2008/03/adapter-votre-theme-pour-wordpress-25-1.html">nicolargo</a> ou encore chez <a href="http://www.herewithme.fr/les-nouveauts-dveloppeurs-de-wordpress-25">Here With Me</a>.</p>

<p><em>Stay tuned!</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war' title='Tutoriel WordPress : la sidebar à la loupe, comprendre les widgets et déclarer une &quot;WAR&quot;'>Tutoriel WordPress : la sidebar à la loupe, comprendre les widgets et déclarer une &quot;WAR&quot;</a></li><li><a href='http://css.4design.tl/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#039;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#039;organise)</a></li><li><a href='http://css.4design.tl/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li><li><a href='http://css.4design.tl/quel-tarif-pour-un-theme-wordpress' title='Quel tarif pour un thème WordPress ?'>Quel tarif pour un thème WordPress ?</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=214&amp;md5=b9f47d90498f9781d2e7d12c2b1406dd" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/les-widgets-dans-wordpress-25-avec-widgetisator/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fles-widgets-dans-wordpress-25-avec-widgetisator&amp;language=fr_FR&amp;category=text&amp;title=Les+widgets+dans+WordPress+2.5+avec+widg%C3%A9tisator+%3B%29&amp;description=La+mise-%C3%A0-jour+vers+WordPress+2.5+ne+se+limite+pas+seulement+%C3%A0+des+am%C3%A9liorations+ergonomiques+et+cosm%C3%A9tiques+au+niveau+de+l%26%238217%3Binterface+d%26%238217%3Badministration.+Prenons+les+widgets+%3A+la+page+elle-m%C3%AAme+est+profond%C3%A9ment...&amp;tags=Blog%2CSidebar%2CTemplate%2CTh%C3%A8me%2CWidget%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Sandbox Designs Competition : 46 thèmes pour WordPress passés en revue</title>
		<link>http://css.4design.tl/sandbox-designs-competition-46-themes-pour-wordpress-passes-en-revue</link>
		<comments>http://css.4design.tl/sandbox-designs-competition-46-themes-pour-wordpress-passes-en-revue#comments</comments>
		<pubDate>Tue, 07 Aug 2007 16:20:06 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Design & Graphisme]]></category>
		<category><![CDATA[Colonnes]]></category>
		<category><![CDATA[Concours]]></category>
		<category><![CDATA[Couleur]]></category>
		<category><![CDATA[Ergonomie]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Graphisme]]></category>
		<category><![CDATA[Menu]]></category>
		<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[Sidebar]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.css4design.com/blog-reloaded/?p=110</guid>
		<description><![CDATA[Les résultats du Sandbox Designs Competition sont disponibles depuis quelques heures après plusieurs jours passés à peser le pour et le contre de chaque proposition. Chaque membre du jury était libre de laisser libre court à sa subjectivité et à son intime conviction pour se prononcer sur les choix éditoriaux ou la mise en valeur des différentes fonctionnalités qui structurent un blog. Ou encore sur les choix purement esthétiques comme les visuels employés ou les choix colorimétriques. J&#8217;ai accordé un poids important au confort de lecture en traquant impitoyablement les déficits en blancs tournants, interlignages et autres espacements. Pour autant, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sndbx.org/" title="The Sandbox Designs Competition for WordPress"><img src="http://www.sndbx.org/promo/sndbx_bttn-ylw.png" class="il" alt="The Sandbox Designs Competition for WordPress" /></a> <a href="http://www.sndbx.org/2007/08/07/and-the-winners-are/">Les résultats du Sandbox Designs Competition</a> sont disponibles depuis quelques heures après plusieurs jours passés à peser le pour et le contre de chaque proposition. Chaque <a href="http://www.sndbx.org/judging/about-the-judges/">membre du jury</a> était libre de laisser libre court à sa subjectivité et à son intime conviction pour se prononcer sur les choix éditoriaux ou la mise en valeur des différentes fonctionnalités qui structurent un blog. Ou encore sur les choix purement esthétiques comme les visuels employés ou les choix colorimétriques. J&#8217;ai accordé un poids important au confort de lecture en traquant impitoyablement les déficits en blancs tournants, interlignages et autres espacements. Pour autant, je n&#8217;ai pas laissé de répit aux problèmes de lisibilité dépendants de la palette de couleurs retenue : un blog, c&#8217;est avant tout beaucoup de texte à lire. En second lieu, j&#8217;ai pris en compte l&#8217;équilibre global du design. J&#8217;ai vérifié ensuite si la structure résistait à l&#8217;épreuve de la compatibilité inter-navigateurs. Pour celà, j&#8217;ai testé les pages sous Firefox 2, Internet Explorer 6 et Opéra 9, le tout pour Windows. Merci à <a href="http://www.plaintxt.org/">Scott</a> pour avoir mis en place ce concours qui fut un modèle d&#8217;organisation. Vivement l&#8217;année prochaine !<span id="more-117"></span></p>

<h3>C&#8217;est quoi au juste ce concours ?</h3>

<p>Il s&#8217;agissait de proposer un thème pour <a href="http://wordpress.org/">WordPress</a> en utilisant l&#8217;intendance fournie par <a href="http://www.plaintxt.org/themes/sandbox/">Sandbox</a>. Je vous renvoie sur l&#8217;un des billets que j&#8217;ai déjà écris sur <a href="http://www.css4design.com/index.php/2007/06/05/97-sandbox-un-theme-wordpress-pour-integrateurs-html-chic-qui-aiment-les-microformats">ce thème Sandbox</a>. <em>Grosso modo</em>, ce thème a deux particularités. D&#8217;une part, il offre l&#8217;intégration des <a href="http://www.microformateurs.org/">microformats</a> dans un écrin xhtml <a href="http://microformats.org/wiki/posh-fr">CHIC</a>, donc classe&#8230; D&#8217;autre part, il utilise le fichier <em>functions.php</em> pour générer des classes à gogo en fonction du contexte dans lequel s&#8217;affiche la page dont voici quelques exemples :
<pre> &lt;body class="wordpress y2007 m05 d31 h18 home loggedin"&gt; &lt;body class="wordpress y2007 m05 d31 h18 archive category category-action-citoyenne loggedin"&gt; &lt;div id="post-1" class="hentry p1 post publish author-admin category-uncategorized y2007 m05 d16 h09"&gt; &lt;li id="comment-550" class="comment c1 byuser comment-author-admin bypostauthor c-y2007 c-m05 c-d31 c-h20"&gt;</pre></p>

<p>Et quand on sait que <a href="http://www.plaintxt.org/themes/sandbox/">Sandbox</a> fera probablement partie un jour ou l&#8217;autre de la distribution <a href="http://wordpress.org/">WordPress</a>, vous conviendrez qu&#8217;il est urgent d&#8217;aller jeter un oeil chez l&#8217;ami Scott !</p>

<h3>46 designs &#8212; Mes impressions &laquo;&nbsp;à chaud&nbsp;&raquo;</h3>

<p>La suite de ce billet contient mes notes de lecture prises durant la phase de sélection des <a href="http://www.sndbx.org/results/designs/">designs</a>. Ces notes, destinées à guider mes choix pour désigner les trois meilleurs thèmes accompagnés de leur chalengers, sont à peines réécrites pour les besoins de cet article. A la relecture, je m&#8217;aperçois que je n&#8217;ai pas été particulièrement tendre : que voulez-vous, c&#8217;est pas de ma faute si j&#8217;ai pris mon rôle de <em>judge</em> au sérieux ;) En, même temps, je me dis que ça ne sert à rien d&#8217;embellir les résultats après coup pour éviter de froisser les susceptibilités. Car en fait, si les résultats parlent d&#8217;eux-mêmes, ils ne disent finalement pas grand chose sur les designs qui n&#8217;ont pas été retenus.</p>

<p>Ca va sans dire mais mieux en le disant, il s&#8217;agit essentiellement d&#8217;impressions personnelles et subjectives, même si ça et là, quelques justifications techniques ou ergononiques donnent l&#8217;impression du contraire ^_^. Lorsque je n&#8217;ai pas pu me prononcer franchement &laquo;&nbsp;pour&nbsp;&raquo; un design, j&#8217;ai joué la carte de l&#8217;honnêteté en précisant &laquo;&nbsp;N/A&nbsp;&raquo; pour &laquo;&nbsp;Non Applicable&nbsp;&raquo; au moment où j&#8217;ai rédigé ma note. En revanche, je me suis appliqué à justifier mes impressions &laquo;&nbsp;contre&nbsp;&raquo;.</p>

<p><em>Les 46 designs &raquo;</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css.4design.tl/liens-javascript-jquery' title='390 ressources Javascript &amp; jQuery'>390 ressources Javascript &amp; jQuery</a></li><li><a href='http://css.4design.tl/devenez-alpha-testeurs-pour-vanilla-un-theme-wordpress-base-sur-sandbox-et-yahoo-user-interface-css' title='Devenez Alpha testeurs pour Vanilla : un thème WordPress basé sur SandBox et Yahoo! User Interface CSS'>Devenez Alpha testeurs pour Vanilla : un thème WordPress basé sur SandBox et Yahoo! User Interface CSS</a></li><li><a href='http://css.4design.tl/ameliorations-cosmetiques-et-ergonomiques-sur-ce-blog' title='Améliorations cosmétiques et ergonomiques sur ce blog'>Améliorations cosmétiques et ergonomiques sur ce blog</a></li><li><a href='http://css.4design.tl/sont-taquins-chez-wordpress' title='Sont taquins chez WordPress ;)'>Sont taquins chez WordPress ;)</a></li><li><a href='http://css.4design.tl/1000-ressources-pour-wordpress-et-le-developpement-web' title='1000 ressources pour le développement web et WordPress'>1000 ressources pour le développement web et WordPress</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=117&amp;md5=279b57624179fd147d657bbfe912c9ce" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/sandbox-designs-competition-46-themes-pour-wordpress-passes-en-revue/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fsandbox-designs-competition-46-themes-pour-wordpress-passes-en-revue&amp;language=fr_FR&amp;category=text&amp;title=Sandbox+Designs+Competition+%3A+46+th%C3%A8mes+pour+WordPress+pass%C3%A9s+en+revue&amp;description=Les+r%C3%A9sultats+du+Sandbox+Designs+Competition+sont+disponibles+depuis+quelques+heures+apr%C3%A8s+plusieurs+jours+pass%C3%A9s+%C3%A0+peser+le+pour+et+le+contre+de+chaque+proposition.+Chaque+membre+du+jury+%C3%A9tait...&amp;tags=Colonnes%2CConcours%2CCouleur%2CErgonomie%2CFirefox%2CGraphisme%2CMenu%2CMicroformats%2CNavigateur%2CSandbox%2CSidebar%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Tutoriel WordPress : la sidebar à la loupe, comprendre les widgets et déclarer une &quot;WAR&quot;</title>
		<link>http://css.4design.tl/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war</link>
		<comments>http://css.4design.tl/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war#comments</comments>
		<pubDate>Tue, 29 May 2007 07:37:14 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sidebar]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.css4design.com/blog-reloaded/?p=94</guid>
		<description><![CDATA[A l&#8217;installation de WordPress 2.2, le thème par défaut propose une barre latérale contenant le champs de recherche, les catégories, les pages ou encore la blogoliste. Le tout, affichés via une liste non ordonnée contenant elle-même d&#8217;autres listes. C&#8217;est pratique en plus d&#8217;avoir du sens. Mais si je voulais séparer ces éléments pour respecter une charte graphique allant au-delà de la présentation habituelle, je devrais modifier le code HTML en plus de modifier la feuille de style CSS. Dans ce tutoriel, j&#8217;aborde la transformation de cette liste globale en plusieurs blocs transpositionnables, en enfilant des gants pour commencer, puis avec [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Communauté WordPress francophone" href="http://www.wordpress-fr.net/category/"><img class="il" src="/images/billet/widget-wordpress/logo-wordpress.png" alt="" /></a> A l&#8217;installation de <a href="http://www.wordpress-fr.net/telechargements/">WordPress 2.2</a>, le thème par défaut propose une barre latérale contenant le champs de recherche, les catégories, les pages ou encore la blogoliste. Le tout, affichés via une liste non ordonnée contenant elle-même d&#8217;autres listes. C&#8217;est pratique en plus d&#8217;avoir du sens. Mais si je voulais séparer ces éléments pour respecter une charte graphique allant au-delà de la présentation habituelle, je devrais modifier le code HTML en plus de modifier la feuille de style CSS. Dans ce tutoriel, j&#8217;aborde la transformation de cette liste globale en plusieurs blocs <em>transpositionnables</em>, en enfilant des gants pour commencer, puis avec les <em>Widgets</em> qui ont fait leur apparition. Je termine en ajoutant une deuxième zone <em>widgétisable</em> à un thème qui n&#8217;en comportait qu&#8217;une au départ. J&#8217;en ai profité pour rendre le code du Widget <em>Texte 1</em> plus sémantique en remplaçant une div par un p (c&#8217;est élégant, tiens&#8230;) ;)<span id="more-98"></span></p>

<p><strong>Note :</strong> bien qu&#8217;écrit lors de la sortie de la version 2.2, cet article est toujours d&#8217;actualité ;)</p>

<h3>Les mains dans le cambouis&#8230;</h3>

<p>L&#8217;affichage des fonctionnalités est réalisé de plusieurs manières. Il s&#8217;agit parfois d&#8217;inclure un fichier qui fournit tout le code HTML nécessaire ou d&#8217;utiliser une fonction précédée ou non de balises li. Tout au long de ce tutoriel, j&#8217;ai choisi d&#8217;expliciter le parti-pris du thème par défaut concernant le balisage HTML de la <em>sidebar</em> en particulier, sachant que la zone de contenu principal ne présente pas de difficultés particulières.</p>

<h4>L&#8217;affichage du champ de recherche</h4>

<p>Le champs de recherche est appelé via la commande PHP <em>include</em>. Pour l&#8217;insérer dans la liste non ordonnée, le concepteur du thème <em>default</em> a simplement ajouté des balises li puisque la balise parente ul est présente dès le début de <em>sidebar.php</em>.
<pre> &lt;li&gt;&lt;?php include (TEMPLATEPATH . '/searchform.php'); ?&gt; &lt;/li&gt;</pre>
Cette <a href="http://giminik.developpez.com/xhtml/li.html">balise li</a> est une des rares balises HTML de deuxième niveau avec <a href="http://giminik.developpez.com/xhtml/dd.html">dd</a> (mise à part le body évidemment) qui accepte tout type de balises en son sein. Il est même possible d&#8217;y placer du texte directement sans perdre en conformité. Ce comportement associé au fait qu&#8217;<strong>on peut justifier l&#8217;utilisation d&#8217;une liste à partir de deux ou trois élements faisant partie d&#8217;une même unité logico-sémantique</strong>, explique le succès des listes ul ou ol auprès des intégrateurs HTML.</p>

<p>ll est intéressant de noter l&#8217;usage de la <em>contante</em> <a href="http://codex.wordpress.org/Theme_Development#Referencing_Files_From_a_Template">TEMPLATEPATH</a> qui donne le chemin absolu vers le dossier du thème activé depuis l&#8217;interface d&#8217;administration. Il s&#8217;agit d&#8217;ailleurs de la méthode recommandée pour inclure des fichiers dans vos <em>templates</em>.</p>

<h4>L&#8217;affichage des Pages, de la Blogoliste et des Catégories</h4>

<p>Par défaut, ces fonctions génèrent des éléments de liste li qui sont habillées par la balise ul présente au début de <em>sidebar.php</em>. A noter que le titre h2 est précisé en tant qu&#8217;option :
<pre> &lt;?php wp_list_pages('title_li=&lt;h2&gt;Pages&lt;/h2&gt;'); ?&gt;</pre>
<pre> &lt;?php wp_list_bookmarks(); ?&gt;</pre>
<pre> &lt;?php wp_list_categories('show_count=1&amp;title_li=&lt;h2&gt;Catégories&lt;/h2&gt;'); ?&gt;</pre>
Pour info, voici le marquage HTML des <em>Catégories</em> de l&#8217;exemple ci-dessus :
<pre>&lt;li class="categories"&gt;
    &lt;h2&gt;Catégories&lt;/h2&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;contines&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;nouvelles&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;pensées&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/li&gt;</pre></p>

<h4>L&#8217;affichage des Archives</h4>

<p>Les <em>Archives</em> nécessitent plus d&#8217;attention car la fonction ne produit qu&#8217;une suite de li, qu&#8217;il faut bien évidemment encadrer par une balise parente ul. Mais ça ne suffit pas : comme elle ne possède pas l&#8217;option pour afficher le titre, il faut le rajouter dans le code HTML. Ce qui demande d&#8217;ajouter une balise li au-dessus afin de respecter la structure du HTML qui n&#8217;autorise pas l&#8217;élément ul à être directement suivi d&#8217;un élément h2 ^^
<pre>&lt;li&gt;
    &lt;h2&gt;Archives&lt;/h2&gt;
    &lt;ul&gt;
        &lt;?php wp_get_archives('type=monthly'); ?&gt;
    &lt;/ul&gt;
&lt;/li&gt;</pre>
Pour styler ces éléments de liste, il est essentiel de garder à l&#8217;esprit l&#8217;imbrication des ul li ul li ou ul ul li&#8230;</p>

<h4><em>Transportabiliser</em> ces éléments</h4>

<p>Si je voulais déplacer certains éléments de cette <em>sidebar</em> pour mettre le champs de recherche dans le <em>header</em> et transformer les <em>Catégories</em> en menu horizontal placé juste au-dessus des billets, je devrais placer chaque appel de fonction dans une balise div &laquo;&nbsp;transportable&nbsp;&raquo; ou &laquo;&nbsp;positionnable&nbsp;&raquo; si vous préférez. Pour celà, il suffirait de remplacer les balises li des deux exemples précédents par des div et le tour est joué.</p>

<h3>&#8230;ou avec les Widgets ?</h3>

<p>Je dois dire qu&#8217;au début, l&#8217;arrivée des Widgets ne m&#8217;a fait ni chaud ni froid : ils existaient déjà en tant que plugin. Par ailleurs, je préfère placer le code moi-même. Toutefois, dans une optique <em>blog d&#8217;entreprise</em>, ces modules sont une bénédiction pour donner aux clients qui veulent &laquo;&nbsp;prendre la main&nbsp;&raquo; sur leur outil de blog, la possibilité de le faire sans trop de casse.</p>

<p>Pour paraphraser une publicité bien connue : <strong>si c&#8217;est bon pour le confort de mon client, alors c&#8217;est bon pour mon confort !</strong> Je me suis donc penché sur la question : on peut vraiment se simplifier la vie &#8211; et le code &#8211; en utilisant les <em>Widgets</em>. Le principe est simple : le sous-menu <em>Widgets</em> dans le menu <em>Thèmes</em> de l&#8217;administration permet de faire glisser les <em>équivalents Widgets</em> des fonctionnalités abordées plus haut (plus quelques autres qui étaient disponibles auparavant sous forme de plugin, comme : <em>Commentaires récents</em>, <em>Articles récents</em> et le très pratique module <em>Texte</em>) sur l&#8217;emplacement réservé <em>Colonne latérale 1</em>.</p>

<h4>Comment ça marche ?</h4>

<p>Par défaut, les fonctionnalités de la barre latérale sont gérées &laquo;&nbsp;en dur&nbsp;&raquo; dans le fichier <em>sidebar.php</em> qui attend que l&#8217;on glisse un Widget dans l&#8217;emplacement prévu pour passer en mode <em>Dynamic Sidebar</em>. Ce qui explique la présence de <em>functions.php</em> dans le dossier <em>themes</em>. Ce fichier est automatiquement reconnu par le moteur de WordPress dès sa création (au cas où je voudrais <a href="http://automattic.com/code/widgets/themes/">widgétiser un thème</a> plus ancien) : il est destiné à contenir toutes mes fonctions PHP en plus des lignes suivantes  :
<pre>&lt;?php if (function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' =&gt; '&lt;li id="%1$s" class="widget %2$s"&gt;',
        'after_widget' =&gt; '&lt;/li&gt;',
        'before_title' =&gt; '&lt;h2 class="widgettitle"&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
    ));
?&gt;</pre>
<em>Grosso modo</em> : si la fonction <em>register_sidebar()</em> existe, tous les Widgets activés se verront chapeautés par un élément de liste li et le titre sera encadré par un h2 (l&#8217;élément ul est à ajouter dans le code, comme c&#8217;est le cas dans le thème par défaut).</p>

<p>Dans le fichier <em>sidebar.php</em>, je trouve, juste après l&#8217;ouverture de la balise ul, le code qui affiche ou non les fonctionnalités par défaut si le thème n&#8217;est pas <em>Widget-Ready</em> ou s&#8217;ils n&#8217;ont pas été activés. Autrement, ce sont les Widgets activés dans le panneau d&#8217;administration qui s&#8217;affichent.
<pre>&lt;div id="sidebar"&gt;
    &lt;ul&gt;
        &lt;?php   /* Widgetized sidebar, if you have the plugin installed. */
            if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?&gt;
                [ le code pour afficher votre sidebar si votre thème n'est pas
                widget ready ou si les widgets ne sont pas activés ]
            &lt;?php endif; ?&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre>
Pour remplacer les éléments de liste de premier niveau, je supprime les balises ul situées après l&#8217;ouverture de &lt;div id=&nbsp;&raquo;sidebar&nbsp;&raquo;&gt; et juste avant la dernière balise fermante &lt;/div&gt; dans <em>sidebar.php</em>, puis j&#8217;utilise l&#8217;élément div à la place du li dans le passage suivant du fichier <em>functions.php</em> <a href="#ex7">vu précédemment</a> :
<pre>'before_widget' =&gt; '&lt;div id="%1$s" class="widget %2$s"&gt;', 'after_widget' =&gt; '&lt;/div&gt;',</pre>
Désormais, chaque appel de Widget sera encadré par une jolie div avec le nom du module comme identifiant, accompagné de la classe générique pour les Widgets et d&#8217;une classe spécifique pour le module en question.</p>

<p>Pour info et pour comparer avec le <a href="#ex5">premier exemple</a>, voici le marquage HTML des Catégories:
<pre>&lt;div id="categories" class="widget widget_categories"&gt;
    &lt;h2 class="widgettitle"&gt;Catégories&lt;/h2&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="#"&gt;contines&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;nouvelles&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="#"&gt;pensées&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre>
Voici maintenant le marquage HTML affichant le contenu du Widget <em>Texte 1</em> :
<pre>&lt;div id="text-1" class="widget widget_text"&gt;
    &lt;h2 class="widgettitle"&gt;Introduction&lt;/h2&gt;
    &lt;div class="textwidget"&gt;
        Bla bla bla...
    &lt;/div&gt;
&lt;/div&gt;</pre>
Arrgh ! Mais que vois-je ? Et la sémantique, alors, elle est où ? Lorsqu&#8217;on ne saisie que du texte, il faut se contenter d&#8217;une pauvre div sans signification pour encadrer notre prose ? Pas très <a href="http://websemantique.org/PagePrincipale">sémantique</a> tout ça. Je vais réparer tout celà efficacement à défaut de le faire proprement&#8230; Je vais modifier le fichier <em>/wp-includes/widgets.php</em> à la ligne 502 pour remplaçer les éléments div de la fonction <em>wp_widget_text($args, $number = 1)</em> par des éléments p plus parlant !</p>

<p>Il existe certainement un moyen pour arriver au même résultat en ne modifiant que le fichier <em>functions.php</em> du dossier <em>themes</em>, ce qui serait bien plus propre. Mais bon, la modif est minime et le résultat en vaut la peine ;) Et puis, je garde une trace des modifications apportées à mon code (enfin, je crois ;) ).</p>

<p>Heureusement, il est possible de saisir du code HTML dans le widget <em>Texte</em> qui accepte toutes les balises, de sorte que si l&#8217;on saisit le texte entre deux balises p, le &laquo;&nbsp;problème&nbsp;&raquo; est résolu ;) Mais bon, quand ce texte tient sur un seul paragraphe (ce qui est souvent le cas dans les présentations de blogs ou d&#8217;auteurs) ou que l&#8217;administrateur du blog ne connait pas le HTML (ce qui arrive lorsqu&#8217;on livre un blog clés en main), ce petit détour vers <em>widget.php</em> peut présenter un intérêt.</p>

<h4>MàJ : La solution de burningHat pour modifier les widgets originaux proprement</h4>

<p>La modification du moteur de WordPress n&#8217;est jamais une bonne idée : les concepteurs ont fait moult effort pour qu&#8217;on l&#8217;évite. Encore faut-il s&#8217;y connaitre un peu. C&#8217;est le cas de <a href="http://blog.burninghat.net/">burningHat</a> qui s&#8217;est creusé la tête pour trouver une solution dans l&#8217;esprit WordPress : élégance et efficacité.</p>

<p>L&#8217;idée est de redéfinir les fonctions des <em>widgets</em> dans le fichiers <em>functions.php</em> qui est attaché au thème et non au moteur. Voici un extrait de l&#8217;article original : <a href="http://blog.burninghat.net/2007/06/09/wordpress-22-modifier-les-widgets-originaux/">WordPress 2.2 &#8211; Modifier les widgets originaux</a> que je vous invite à lire sans tarder :</p>

<blockquote>Nous allons utiliser cette méthode afin de faire en sorte que le widget “pages” exclu certaines des pages de notre blog de son listing.

Je voulais exclure les liens vers “Archives”, “Liens” et “Nuage de tags” afin de de les séparer dans une rubrique à part. Ces pages sont identifiées respectivement par les n°131, 132 et 133.

Le code dans une sidebar classique serait donc :
<pre> &lt;?php wp_list_pages('exclude=131,132,133&amp;title_li='); ?&gt;</pre>
Je vous renvoie à <a title="Codex WordPress - WP_List_Pages tag" href="http://codex.wordpress.org/Template_Tags/wp_list_pages">la page du codex</a> pour détails de la fonction “<em>wp_list_pages</em>“. Nous allons donc définir un widget pour notre thème qui renverra le même affichage. Pour cela ouvrons le fichier “<em>functions.php</em>” situé à la racine de notre thème et ajoutons une fonction “<em>widget_montheme_pages</em>” :
<pre>function widget_newburn_pages() {
  wp_list_pages('exclude=131,132,133&amp;title_li=&lt;h2&gt;Et encore...&lt;/h2&gt;');
}</pre>
Et pour que WordPress en tienne compte en lieu et place du widget “<em>Pages</em>” normal, ajoutons également la condition suivante :
<pre> if ( function_exists('register_sidebar_widget') ){   register_sidebar_widget('pages', 'widget_newburn_pages'); }</pre>
Cette dernière va simplement dire à WordPress que le widget “<em>pages</em>” à utiliser n’est pas celui d’origine mais celui que nous venons de définir avec la fonction “<em>widget_newburn_pages</em>“.</blockquote>

<h3>Widgets Area Ready ou comment gérer plusieurs &laquo;&nbsp;barres latérales&nbsp;&raquo; avec les Widgets</h3>

<p>Certains thèmes sont prévus pour fonctionner avec deux &laquo;&nbsp;barres latérales&nbsp;&raquo;, bien que ce terme est réducteur puisqu&#8217;il s&#8217;agit simplement d&#8217;une zone que l&#8217;on peut placer n&#8217;importe où avec les CSS du moment que la structure du code HTML le permet&#8230; C&#8217;est pourquoi je préfère parler de <em>Widgets Area Ready</em> ou <acronym title="Widgets Area Ready">WAR</acronym> pour les intimes :)</p>

<p>Pour mettre en place plusieurs <acronym title="Widgets Area Ready">WAR</acronym>, il faut apporter des modifications à <em>functions.php</em> :
<pre>&lt;?php if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' =&gt; '&lt;div id="%1$s" class="widget %2$s"&gt;',
        'after_widget' =&gt; '&lt;/div&gt;',
        'before_title' =&gt; '&lt;h2 class="widgettitle"&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
    );
    register_sidebars(2, $widgetWrap); ?&gt;</pre>
Notez le &laquo;&nbsp;s&nbsp;&raquo; à register_sidebars(&#8230;) qui a son importance. Je me suis inspiré de ce qui existe dans le <a href="http://www.plaintxt.org/themes/sandbox/">thème sandbox</a> :</p>

<p>J&#8217;ajoute ensuite le numéro d&#8217;ordre dans la fonction <em>dynamic_sidebar()</em> : 1 puis 2 et ainsi de suite pour chaque déclaration de <acronym title="Widgets Area Ready">WAR</acronym> dans les fichiers où j&#8217;ai prévu d&#8217;afficher des Widgets :
<pre>&lt;div id="sidebar"&gt;
    &lt;ul&gt;
        &lt;?php   /* Widgetized sidebar, if you have the plugin installed. <em>/
            if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(1) ) : ?&gt;
                [ Les widgets glissés dans "Colonne latérale 1" s'afficheront ici  ]
            &lt;?php endif; ?&gt;
    &lt;/ul&gt; &lt;/div&gt; &lt;div id="header-bis"&gt;
    &lt;ul&gt;
        &lt;?php   /</em> Widgetized sidebar, if you have the plugin installed. */
            if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(2) ) : ?&gt;
                [ Les widgets glissés dans "Colonne latérale 2" s'afficheront là ]
            &lt;?php endif; ?&gt;
    &lt;/ul&gt;
&lt;/div&gt;</pre>
Si tout se passe bien, la page d&#8217;adminitration des <em>Widgets</em> devrait proposer &laquo;&nbsp;Colonnes latérales 1&#8243; et &laquo;&nbsp;Colonnes latérales 2&#8243; pour accueillir les modules.</p>

<h4>Pour aller plus loin</h4>

<p>Oups ! j&#8217;ai dit &laquo;&nbsp;Colonnes latérales&nbsp;&raquo; et non pas <acronym title="Widgets Area Ready">WAR</acronym> ! Et pour cause : l&#8217;emplacement est désigné de cette manière dans la page d&#8217;administration. Qu&#8217;à celà ne tienne, il est possible de modifier l&#8217;intitulé des emplacements en suivant les explications données par <a href="http://automattic.com/code/widgets/api/">automattic</a>.</p>

<p>Sauf qu&#8217;après quelques essais, l&#8217;intitulé est bien modifié mais le %d s&#8217;affiche à la place des chiffres. J&#8217;ai pourtant essayé deux méthodes :
<pre>&lt;?php if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' =&gt; '&lt;div id="%1$s" class="widget %2$s"&gt;',
        'after_widget' =&gt; '&lt;/div&gt;',
        'before_title' =&gt; '&lt;h2 class="widgettitle"&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
        'name'=&gt;'Foobar %d',
    );
    register_sidebars(2, $widgetWrap);
?&gt;</pre>
Puis :
<pre>&lt;?php if ( function_exists('register_sidebar') )
    $widgetWrap = array(
        'before_widget' =&gt; '&lt;div id="%1$s" class="widget %2$s"&gt;',
        'after_widget' =&gt; '&lt;/div&gt;',
        'before_title' =&gt; '&lt;h2 class="widgettitle"&gt;',
        'after_title' =&gt; '&lt;/h2&gt;',
    );
    register_sidebars(2, $widgetWrap, array('name'=&gt;'Foobar %d'));
?&gt;</pre>
Pour continuer dans les améliorations, je cherche comment obtenir un formatage différent selon la <acronym title="Widgets Area Ready">WAR</acronym> utilisée. Pour l&#8217;instant, j&#8217;ai l&#8217;impression que seul un modèle peut s&#8217;appliquer. Si vous avez une idée sur la question, n&#8217;hésitez pas à vous manifester :)</p>

<h3>En guise de conclusion express</h3>

<p>Comme la peinture de <a href="http://www.stupeflip.com/">Stupeflip</a>, <a href="http://wordpress.org/">WordPress</a> est un outil de blog aux possibilités stupéfiantes que je teste sur différents terrains de jeux que je dévoilerais en temps voulu&#8230;
<a href="http://www.dotclear.net/">Dotclear</a> n&#8217;est pas en reste puisque j&#8217;ai un billet en cours de finalisation dans les cartons concernant la version 2 bêta 6 (tiens, manquerais plus qu&#8217;une version stable sorte avant que je publie mon billet. Pas taper, pas taper ;) )</p>

<p><em>Stay tuned and mind the gap!</em></p>

<h3 class='related_post_title'>Articles sur le même sujet</h3>

<ul class='related_post'><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/les-widgets-dans-wordpress-25-avec-widgetisator' title='Les widgets dans WordPress 2.5 avec widgétisator ;)'>Les widgets dans WordPress 2.5 avec widgétisator ;)</a></li><li><a href='http://css.4design.tl/ecrire-sur-son-blog-wordpress-avec-live-writer' title='Ecrire sur son blog WordPress avec Live Writer'>Ecrire sur son blog WordPress avec Live Writer</a></li><li><a href='http://css.4design.tl/optimiser-et-styler-les-categories-wordpress-avec-les-css' title='Optimiser et styler les catégories WordPress avec les CSS'>Optimiser et styler les catégories WordPress avec les CSS</a></li><li><a href='http://css.4design.tl/avec-spongestats-3-0-mes-stats-ont-la-patate' title='Avec Spongestats 3.0, mes stats ont la patate !'>Avec Spongestats 3.0, mes stats ont la patate !</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=98&amp;md5=b8f127de6fcd277b4bebcb3f21ef616d" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war/feed</wfw:commentRss>
		<slash:comments>56</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Ftutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war&amp;language=fr_FR&amp;category=text&amp;title=Tutoriel+WordPress+%3A+la+sidebar+%C3%A0+la+loupe%2C+comprendre+les+widgets+et+d%C3%A9clarer+une+%26quot%3BWAR%26quot%3B&amp;description=A+l%26%238217%3Binstallation+de+WordPress+2.2%2C+le+th%C3%A8me+par+d%C3%A9faut+propose+une+barre+lat%C3%A9rale+contenant+le+champs+de+recherche%2C+les+cat%C3%A9gories%2C+les+pages+ou+encore+la+blogoliste.+Le+tout%2C+affich%C3%A9s+via...&amp;tags=Blog%2CSidebar%2CTutoriels%2CWidget%2CWordPress%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic

Served from: css.4design.tl @ 2012-05-25 04:30:13 -->
