<?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>Iptima &#187; WordPress</title>
	<atom:link href="http://www.iptima.com/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iptima.com</link>
	<description>... Miscellanées multimedia ®</description>
	<lastBuildDate>Sun, 02 Oct 2011 17:52:06 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Centrer parfaitement une galerie d&#8217;images</title>
		<link>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/</link>
		<comments>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 11:39:59 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[feuilles de style]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Galerie]]></category>
		<category><![CDATA[get_option]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mark Newhouse]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=284</guid>
		<description><![CDATA[Nous nous sommes longtemps interrogé sur la manière de centrer parfaitement la dernière ligne d&#8217;une galerie, quel que soit le nombre d&#8217;images. En effet, sur la plupart des sites n&#8217;utilisant pas des effets dynamiques comme JavaScript ou Flash, les images &#8230; <a href="http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nous nous sommes longtemps interrogé sur la manière de centrer parfaitement  la dernière ligne d&#8217;une galerie, quel que soit le nombre d&#8217;images. En effet, sur la plupart des sites n&#8217;utilisant pas des effets dynamiques comme JavaScript ou <a hreflang="en" href="http://www.adobe.com/products/flashplayer/" target="_blank" title ="aller sur le site de Flash Player (s'ouvre dans une nouvelle fenêtre)">Flash</a>, les images restantes d&#8217;une dernière ligne incomplète sont inexorablement alignées à gauche : les exemples sont nombreux.</p>
<p><span id="more-284"></span></p>
<p>Voici un problème relativement simple à formuler, mais dont la solution ne saute pas aux yeux. Après avoir parcouru en vain les arcanes du <em>Web</em> francophone puis anglophone, nous avons développé notre propre technique, que nous présentons ici.</p>
<p><em>Nota</em>. Dans notre présentation, par commodité, <em>O</em> désignera une image, tandis que <em>X</em> désignera une espace. (C&#8217;est notre modeste contribution à  l&#8217;<em><abbr title="American Standard Code for Information Interchange">Ascii</abbr> Art</em> !) Nous partirons aussi du postulat qu&#8217;une galerie correspond à des images de petites tailles alignées les unes avec les autres sur une page, dont leur largeur (et, idéalement, leur hauteur !) est équivalente.</p>
<p>Ainsi, pour cinq images, l&#8217;affichage sur une colonne s&#8217;effectue ainsi&#8230;</p>
<p class="center"><code>OXOXOXOXO</code></p>
<p>Pour les images restantes, le navigateur renvoie <em>logiquement</em>, sauf instruction contraire, les images restantes les unes à la suite des autres&#8230;</p>
<p>S&#8217;il reste quatre images&#8230;</p>
<p class="center"><code>OXOXOXOXX</code></p>
<p>S&#8217;il reste trois images&#8230;</p>
<p class="center"><code>OXOXOXXXX</code></p>
<p>S&#8217;il reste deux images&#8230;</p>
<p class="center"><code>OXOXXXXXX</code></p>
<p>S&#8217;il reste une image&#8230;</p>
<p class="center"><code>OXXXXXXXX</code></p>
<p>Or, ce résultat ne nous semble pas satisfaisant sur le plan visuel, car nous avons une fâcheuse tendance à cultiver la symétrie (&#8230; qui peut expliquer certains choix esthétiques&#8230; étonnants !).</p>
<p>Nous voulons obtenir l&#8217;affichage suivant&#8230;</p>
<p>S&#8217;il reste quatre images&#8230;</p>
<p class="center"><code>XOXOXOXOX</code></p>
<p>S&#8217;il reste trois images&#8230;</p>
<p class="center"><code>XXOXOXOXX</code></p>
<p>S&#8217;il reste deux images&#8230;</p>
<p class="center"><code>XXXOXOXXX</code></p>
<p>S&#8217;il reste une image&#8230;</p>
<p class="center"><code>XXXXOXXXX</code></p>
<p>Ainsi l&#8217;affichage nous semblera harmonieux, puisque les espaces seront équilibrés. Il ressemblera à :</p>
<p class="center"><code>OXOXOXOXO<br />
XOXOXOXOX<br />
XXOXOXOXX<br />
XXXOXOXXX<br />
XXXXOXXXX</code></p>
<p>Autrement posé, il s&#8217;agit de styler différemment les lignes complètes et la ligne incomplète, <em>orpheline</em>.</p>
<p>Aussi allons-nous <em>motoriser</em> les images. Nous utilisons <abbr title="pre-hypertext processing">Php</abbr>, mais le raisonnement peut être transposé à d&#8217;autres langages de programmation.</p>
<h2>Programmons les images</h2>
<p>Retournons à l&#8217;école pour un raisonnement arithmétique simple&#8230; Le nombre d&#8217;images à afficher (inconnu à l&#8217;avance &#8211; sinon, l&#8217;effort serait inutile !) est-il divisible par <em>3</em>, dans l&#8217;ensemble des nombres entiers <strong>Z</strong> ? Dans l&#8217;<strong>affirmative</strong>, des lignes <em>pleines</em> s&#8217;afficheront. Dans la <strong>négative</strong>, quel sera le reste de la division ? <em>2</em> ou <em>1</em>.</p>
<p>Ainsi&#8230;</p>
<ul>
<li>&#8230; pour 58 images, 58/3 = 19 images, reste 1 image ;</li>
<li>&#8230; pour 104 images, 104/3 = 34 images, restent 2 images.</li>
</ul>
<p>(Pour une ligne de cinq images, le même raisonnement conduirait à avoir cinq cas possibles.)</p>
<p>Voici un exemple de code&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;images = array('paris.jpg', 'marseille.jpg', 'lyon.jpg', 'lille.jpg', 'strasbourg.jpg');<br />
&#36;result = count(&#36;images);<br />
&#36;target = 3;<br />
/* La &#34;cible&#34; (c'est-à-dire une ligne &#34;pleine&#34;) est de trois images */<br />
&#36;orphans = fmod(&#36;result, &#36;target); // &#34;orphans&#34; comme &#34;orphelines&#34;<br />
/* 'fmod' retourne le reste d'une division */<br />
&#36;total = (&#36;result - &#36;orphans); // &#34;total&#34; pour une ligne pleine<br />
foreach(&#36;images as &#36;key =&#62; &#36;image)<br />
/* Nous utilisons la deuxième forme d'une boucle 'foreach' qui permet d'utiliser la valeur &#36;key utile dans les calculs. */<br />
{<br />
&#160;&#160;if ((&#36;key + 1) &#60;= &#36;total) // Pour trois images<br />
/* La valeur + 1 permet d'éviter que le résultat soit égal à zéro à la fin de la boucle. Nous aurions pu assigner la valeur au début des instructions... pour ne pas avoir à la ré-écrire ensuite dans les deux conditions suivantes ! Tant que le total n'est pas dépassé, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;'; // On créée la liste de définition &#34;gallery_c&#34; (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;else<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 2)) // Pour deux images<br />
/* La première condition permet de vérifier que le total est dépassé. S'il ne reste plus de lignes pleines et que le nombre d'images restantes est de deux, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;'; // On créée la liste de définition &#34;gallery_b&#34;, (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 1)) // Pour une image<br />
/* La première condition permet de vérifier que le total est dépassé. S'il ne reste plus de lignes pleines et que le nombre d'image restante est de une, l'instruction s'applique. */<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;'; // On créée la  liste de définition &#34;gallery_a&#34; (voir ci-dessous)<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo &#36;image;<br />
/* La boucle 'foreach' affiche ensuite chaque image tour à tour. */<br />
&#160;&#160;echo '&#60;/dl&#62;'; // On ferme la liste de définitions<br />
}<br />
?&#62;</code></p>
<p>Ou sans les commentaires&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;images = array('paris.jpg', 'marseille.jpg', 'lyon.jpg', 'lille.jpg', 'strasbourg.jpg');<br />
&#36;result = count(&#36;images);<br />
&#36;target = 3;<br />
&#36;orphans = fmod(&#36;result, &#36;target);<br />
&#36;total = (&#36;result - &#36;orphans);<br />
foreach(&#36;images as &#36;key =&#62; &#36;image)<br />
{<br />
&#160;&#160;if ((&#36;key + 1) &#60;= &#36;total)<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;else<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;total) &#38;&#38; (&#36;orphans == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo &#36;image;<br />
&#160;&#160;echo '&#60;/dl&#62;';<br />
}<br />
?&#62;</code></p>
<p>Les images ont été placées dans un tableau à titre didactique. Naturellement, en production, il faudra recourir à une méthode plus simple.</p>
<p>C&#8217;est pourquoi, nous présentons le code utilisé avec <em>WordPress</em>, mais qui peut être utilisé dans n&#8217;importe quel environnement&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;gallery_bottom = get_post_meta(&#36;post-&#62;ID, 'gallery_bottom', false);<br />
/* Avec WordPress, 'get_post_meta' permet de récupérer le(s) enregistrements correspondant dans une table MySql. Ensuite, on retrouve l'interaction habituelle entre Php et MySql. Les enregistrements des images sont enregistrées dans une table sous la forme : source, titre, légende (optionnel), Copyright (optionnel)...<br />
http://www.monsite.com/uploads/france.jpg,france,photo de la France,© Wikimedia Commons<br />
http://www.monsite.com/uploads/suisse.jpg,suisse,photo de la Suisse,© Wikimedia Commons<br />
http://www.monsite.com/uploads/portugal.jpg,portugal,photo du Portugal,© Wikimedia Commons<br />
http://www.monsite.com/uploads/danemark.jpg,danemark,photo du Danemark,© Wikimedia Commons<br />
 */<br />
if (&#36;gallery_bottom)<br />
{<br />
&#160;&#160;&#36;resulttgb = count(&#36;gallery_bottom); // &#34;tgb&#34; comme &#34;Temporary Gallery Bottom&#34; pour individualiser le processus<br />
&#160;&#160;&#36;targettgb = 3;<br />
&#160;&#160;&#36;orphanstgb = fmod(&#36;resulttgb, &#36;targettgb);<br />
&#160;&#160;&#36;totaltgb = (&#36;resulttgb - &#36;orphanstgb);<br />
&#160;&#160;foreach(&#36;gallery_bottom as &#36;key =&#62; &#36;tgb)<br />
&#160;&#160;{<br />
&#160;&#160;&#160;&#160;list(&#36;fulltgb, &#36;alttgb, &#36;txtatgb, &#36;txtbtgb) = explode(&#34;,&#34;, &#36;tgb);<br />
&#160;&#160;&#160;&#160;/* On coupe la chaîne en segments pour récupérer chaque élément. */<br />
&#160;&#160;&#160;&#160;&#36;extfull = array(&#34;.jpg&#34;, &#34;.jpeg&#34;, &#34;.png&#34;, &#34;.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;extthumb = array(&#34;-100x100.jpg&#34;, &#34;-100x100.jpeg&#34;, &#34;-100x100.png&#34;, &#34;-100x100.gif&#34;);<br />
&#160;&#160;&#160;&#160;/* Chaque élément est remplacé dans l'ordre des deux tableaux. On convertit le nom de l'image pour afficher le nom de sa vignette, et éviter une double saisie de l'utilisateur. Naturellement, les images &#34;-100x100.jpg&#34; sont déjà stockées ! Ainsi, 'france.jpg' devient 'france-100x100.jpg'. */<br />
&#160;&#160;&#160;&#160;&#36;srctgb = str_ireplace(&#36;extfull, &#36;extthumb, &#36;fulltgb);<br />
&#160;&#160;&#160;&#160;/* 'str_ireplace' n'est pas sensible à la casse, et permet, par exemple, de transformer &#34;.GIF&#34; en &#34;.gif&#34;. */<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;if ((&#36;key + 1) &#60;= &#36;totaltgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;else<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dt&#62;&#60;a href=&#34;'.&#36;fulltgb.'&#34; title=&#34;'.&#36;alttgb.'&#34;&#62;&#60;img src=&#34;'.&#36;srctgb.'&#34; alt=&#34;'.&#36;alttgb.'&#34; title=&#34;'.&#36;alttgb.'&#34; /&#62;&#60;/a&#62;&#60;/dt&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;/* On concatène chaque élément récupéré tout à l'heure avec 'explode' dans une chaîne Html pour provoquer l'affichage de la vignette et du lien vers l'image. Par commodité, on utilise la même valeur pour les champs 'alt' et 'title'.*/<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtatgb) // Puisque le champ est optionnel<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtatgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtbtgb) // Puisque le champ est optionnel<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtbtgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;/dl&#62;';<br />
&#160;&#160;&#160;&#160;}<br />
&#160;&#160;}<br />
&#160;&#160;echo '&#60;div class=&#34;spacer&#34;&#62;&#60;/div&#62;'; // Pour éviter le flottement d'un élément adjacent avec la propriété Css 'clear: both;' chère à Mark Newhouse<br />
}<br />
?&#62;</code></p>
<p>Ou sans les commentaires&#8230;</p>
<p class="left"><code>&#60;?php<br />
&#36;gallery_bottom = get_post_meta(&#36;post-&#62;ID, 'gallery_bottom', false);<br />
if (&#36;gallery_bottom)<br />
{<br />
&#160;&#160;&#36;resulttgb = count(&#36;gallery_bottom);<br />
&#160;&#160;&#36;targettgb = 3;<br />
&#160;&#160;&#36;orphanstgb = fmod(&#36;resulttgb, &#36;targettgb);<br />
&#160;&#160;&#36;totaltgb = (&#36;resulttgb - &#36;orphanstgb);<br />
&#160;&#160;foreach(&#36;gallery_bottom as &#36;key =&#62; &#36;tgb)<br />
&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#9;list(&#36;fulltgb, &#36;alttgb, &#36;txtatgb, &#36;txtbtgb) = explode(&#34;,&#34;, &#36;tgb);<br />
&#160;&#160;&#160;&#160;&#36;extfull = array(&#34;.jpg&#34;, &#34;.jpeg&#34;, &#34;.png&#34;, &#34;.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;extthumb = array(&#34;-100x100.jpg&#34;, &#34;-100x100.jpeg&#34;, &#160;&#160;&#160;&#160;&#34;-100x100.png&#34;, &#34;-100x100.gif&#34;);<br />
&#160;&#160;&#160;&#160;&#36;srctgb = str_ireplace(&#36;extfull, &#36;extthumb, &#36;fulltgb);<br />
&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;if ((&#36;key + 1) &#60;= &#36;totaltgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_c&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;else<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 2))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_b&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (((&#36;key + 1) &#62; &#36;totaltgb) &#38;&#38; (&#36;orphanstgb == 1))<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dl class=&#34;gallery_a&#34;&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dt&#62;&#60;a href=&#34;'.&#36;fulltgb.'&#34; title=&#34;'.&#36;alttgb.'&#34;&#62;&#60;img src=&#34;'.&#36;srctgb.'&#34; alt=&#34;'.&#36;alttgb.'&#34; title=&#34;'.&#36;alttgb.'&#34; /&#62;&#60;/a&#62;&#60;/dt&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtatgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtatgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;if (&#36;txtbtgb)<br />
&#160;&#160;&#160;&#160;&#160;&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;dd&#62;'.&#36;txtbtgb.'&#60;/dd&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo '&#60;/dl&#62;';<br />
&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;}<br />
&#160;echo '&#60;div class=&#34;spacer&#34;&#62;&#60;/div&#62;';<br />
}<br />
?&#62;</code></p>
<p><em>Nota.</em> Depuis que <em>WordPress</em> intègre la gestion des vignettes, nous n&#8217;utilisons plus les champs personnalisés !</p>
<h2>Stylons les images</h2>
<p>Nous avons utilisé les listes de définition pour afficher les images. La structure de ces listes est commode, grâce à l&#8217;attribut &#60;dd&#62;, optionnel, qui permet ou non d&#8217;ajouter une légende, en restant compatible <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> Strict. Un exemple d&#8217;utilisation est donné dans l&#8217;excellent article <a href="http://www.pompage.net/pompe/listesdefinitions/" target="_blank" title="lire l'article Les listes de définitions : mal utilisées ou mal comprises ? (s'ouvre dans une nouvelle fenêtre)"><em>Les listes de définitions : mal utilisées ou mal comprises ?</em></a></p>
<p>Si une ligne est complète, c&#8217;est-à-dire comporte trois images, l&#8217;attribut <em>gallery_c</em> est utilisé pour les images. Si une ligne est incomplète et comporte deux images, l&#8217;attribut <em>gallery_b</em> est utilisé pour les images. Si une ligne est incomplète et comporte une image, l&#8217;attribut <em>gallery_c</em> est utilisé pour l&#8217;image.</p>
<p class="left"><code>dl.gallery_a, dl.gallery_b {<br />
&#160;&#160;float: left /* Inutile de provoquer le flottement de la dernière galerie, puisqu'il n'y a qu'une image ! */<br />
}<br />
dl.gallery_a dt, dl.gallery_b dt, dl.gallery_c dt, dl.gallery_a dd, dl.gallery_b dd, dl.gallery_c dd {<br />
&#160;&#160;text-align: center<br />
}<br />
dl.gallery_a dd, dl.gallery_b dd, dl.gallery_c dd {<br />
&#160;&#160;font-weight: bold<br />
}<br />
dl.gallery_a {<br />
&#160;&#160;width: 33.33% /* Nous fûmes longtemps persuadé que la version 5.5 d'Internet Explorer interprétait mal les décimales, à tort ! */<br />
}<br />
dl.gallery_b {<br />
&#160;&#160;width: 50%<br />
}<br />
dl.gallery_c {<br />
&#160;&#160;display: block;<br />
&#160;&#160;margin-left: auto;<br />
&#160;&#160;margin-right: auto;<br />
&#160;&#160;width: 100%<br />
}<br />
</code></p>
<p>Avec les largeurs fixes, il devient plus délicat d&#8217;aligner correctement les images, et le code est nettement moins élégant.</p>
<p>Ainsi, soit une feuille de style qui comporte les propriétés suivantes, sachant que la largeur du conteneur est de 625 pixels et celle d&#8217;une image est de 129 pixels avec ses bordures et ses marges&#8230;</p>
<p class="left"><code>dl.gallery_a, dl.gallery_b, dl.gallery_c {<br />
&#160;&#160;float: left<br />
}<br />
dl.gallery_a {<br />
&#160;&#160;margin: 15px 248px /* 248 pixels + 129 pixels + 248 pixels = 625 pixels */<br />
}<br />
dl.gallery_b {<br />
&#160;&#160;margin: 15px 91px /* 91 pixels + 129 pixels + 91 pixels + 91 pixels + 129 pixels + 91 pixels = 622 pixels - on doit se contenter de cette approximation - 91 pixels + 91 pixels, puisque les marges se juxtaposent */<br />
}<br />
dl.gallery_c {<br />
&#160;&#160;margin: 15px 39px; /* 39 pixels + 129 pixels + 39 pixels + 39 pixels + 129 pixels + 39 pixels + 39 pixels + 129 pixels + 39 pixels = 621 pixels - on doit se contenter de cette approximation - 39 pixels + 39 pixels, puisque les marges se juxtaposent */<br />
}<br />
</code></p>
<p><em>Nota</em>. Pour déterminer facilement, la largeur des espaces entre les images, il suffit d&#8217;appliquer le calcul :</p>
<p class="center"><code>(((largeur du conteneur ou de la page - (nombre d'images x largeur de chaque image))/((nombre d'images + 1) x 2)))</code></p>
<p>Par exemple, la largeur d&#8217;un conteneur est de 618 pixels (cette valeur simple est arbitraire !). Nous voulons y placer trois images de 150 pixels.</p>
<ul>
<li>Largeur du conteneur ou de la page : 618 pixels.</li>
<li>Nombre d&#8217;images : 3.</li>
<li>Largeur de chaque image : 150 pixels.</li>
<li>150 pixels x 3 images = 450 pixels.</li>
<li>Nombre d&#8217;espaces nécessaires : 3 images + 1.</li>
<li>Soient <em>(((618 &#8211; (3 x 150))/((3 + 1) x 2))) = <strong>21</strong></em>.</li>
<li>Soient (((618 pixels &#8211; (3 images x 150 pixels))/((3 espaces + 1) x 2))) = <strong>21 pixels</strong>.</li>
</ul>
<p>Nous avons utilisé des listes de définitions pour centrer nos images, mais notre solution peut s&#8217;adapter à d&#8217;autres types de balises et de contenu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2010/02/18/centrer-une-galerie-dimages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Page d&#8217;accueil statique de WordPress, comment renvoyer vers les articles ?</title>
		<link>http://www.iptima.com/2008/10/29/page-daccueil-statique-de-wordpress-comment-renvoyer-vers-les-articles/</link>
		<comments>http://www.iptima.com/2008/10/29/page-daccueil-statique-de-wordpress-comment-renvoyer-vers-les-articles/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 10:50:26 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[interface d'administration]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=272</guid>
		<description><![CDATA[La caractéristique est rarement utilisée mais il est possible de remplacer la page d&#8217;accueil de WordPress, qui affiche traditionnellement les derniers articles, par une page statique dans les options de lecture. En voulant utiliser cet affichage, nous avons été perplexe &#8230; <a href="http://www.iptima.com/2008/10/29/page-daccueil-statique-de-wordpress-comment-renvoyer-vers-les-articles/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La caractéristique est rarement utilisée mais il est possible de remplacer la page d&#8217;accueil de <em>WordPress</em>, qui affiche traditionnellement les derniers articles, par une page statique dans les options de lecture. En voulant utiliser cet affichage, nous avons été perplexe : comment renvoyer vers les articles ? Certes, le menu déroulant permet de préciser une page, mais encore faut-il qu&#8217;elle existe ! Sur ce point, cette procédure ne nous semble guère intuitive&#8230; Après avoir parcouru en vain plusieurs minutes durant les pages (toujours instructives !) du <em>Codex</em> anglophone, la solution a surgi dans notre esprit embrumé&#8230; Créer une page <em>vide</em> à intituler <em>Articles</em>, qu&#8217;il suffit ensuite de sélectionner dans le menu déroulant de <em>Page des articles</em> ! Enfin, précision sans doute superfétatoire,  il faut évidemment afficher le lien sur la page d&#8217;accueil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/10/29/page-daccueil-statique-de-wordpress-comment-renvoyer-vers-les-articles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Désactiver le suivi des versions de WordPress</title>
		<link>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/</link>
		<comments>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 10:30:57 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Notes de lecture]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[administration de WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=271</guid>
		<description><![CDATA[Korben explique sur son weblogue comment désactiver le suivi des versions de WordPress en modifiant le fichier wp-config.php, après purge préalable de la base de données. Thomas revient sur ce propos en donnant la procédure détaillée pour nettoyer en profondeur &#8230; <a href="http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Korben explique sur son <a href="http://www.korben.info/comment-desactiver-le-suivi-des-versions-sous-wordpress-26.html" target="_blank" title="lire l'article de Korben sur la désactivation des suivi de versions de WordPress(s'ouvre dans une nouvelle fenêtre)">weblogue</a> comment désactiver le suivi des versions de <em>WordPress</em> en modifiant le fichier <em>wp-config.php</em>, après purge préalable de la base de données. Thomas revient sur ce propos en donnant la <a href="http://blog.newbie-project.net/2008/10/30/astuce-wp-donnez-un-bon-coup-de-balai-a-votre-bdd.html" target="_blank" title="lire l'article de Thomas sur la nettoyage en profondeur des tables de WordPress(s'ouvre dans une nouvelle fenêtre)">procédure</a> détaillée pour nettoyer en profondeur les tables. Il est certain que cette fonctionnalité de <em>WordPress</em> est inutile lorsqu&#8217;on est seul rédacteur et alourdit inutilement le contenu de la table <em>wp_posts</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/10/29/desactiver-le-suivi-des-versions-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gérer correctement les images avec WordPress 2.5</title>
		<link>http://www.iptima.com/2008/08/25/gerer-correctement-les-images-avec-wordpress-25/</link>
		<comments>http://www.iptima.com/2008/08/25/gerer-correctement-les-images-avec-wordpress-25/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 10:14:14 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[Cleaner WordPress Gallery]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[Image Manager]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[Ligthbox]]></category>
		<category><![CDATA[NextGen Gallery]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[Slimbox]]></category>
		<category><![CDATA[Xhtml Strict]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=178</guid>
		<description><![CDATA[WordPress propose depuis le version 2.5 d&#8217;ajouter aisément des media à ses articles, en particulier des images. L&#8217;interface d&#8217;édition est prometteuse, mais force est de reconnaître que les résultats sont décevants après publication. Lors de nos débuts avec WordPress, nous &#8230; <a href="http://www.iptima.com/2008/08/25/gerer-correctement-les-images-avec-wordpress-25/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>WordPress</em> propose depuis le version 2.5 d&#8217;ajouter <em>aisément</em> des <em>media</em> à ses articles, en particulier des images. L&#8217;interface d&#8217;édition est prometteuse, mais force est de reconnaître que les résultats sont décevants après publication.</p>
<p><span id="more-178"></span></p>
<p>Lors de nos débuts avec <em>WordPress</em>, nous avions essayé divers plugicels, comme <em>Image Manager</em> ou <em>Nextgen Gallery</em>, mais ces solutions semblaient lourdes à mettre en œuvre au quotidien. Aussi avions-nous décidé de nous passer d&#8217;images dans nos articles, d&#8217;autant que la production de photographies est coûteuse&#8230; à moins de les voler !</p>
<p>Or, voilà quelques jours, nous avons décidé de réaliser pour un photographe amateur un <em>Photoblog</em> sous <em>WordPress</em>. Comme nous détestons la facilité (!), nous avons décidé de ne pas recourir à une solution <em>prête à l&#8217;emploi</em>&#8230; Nous ne mesurions pas l&#8217;ampleur de la tâche !</p>
<p>Nous ne nous appesantirons pas ici sur la mise au point, somme toute complexe, du thème. En revanche, nous détaillerons comment gérer spécifiquement les images dans un thème. Le processus passe par :</p>
<ul>
<li>la modification de la feuille de style,</li>
<li>l&#8217;ajout de fichiers spécifiques au thème,</li>
<li>l&#8217;ajout d&#8217;une extension pour gérer correctement, sur le plan de l&#8217;affichage comme de la sémantique, les galeries,</li>
<li>la syntaxe permettant de gérer les images.</li>
</ul>
<h2>Modification de la feuille de style</h2>
<p>Le code permettant de gérer l&#8217;affichage des images dans un thème est largement diffusé. Pour mémoire, la syntaxe <em>standard</em> (mais dont la syntaxe <abbr title="Cascading Style Sheets">Css</abbr> est invalide !) à incorporer dans la feuille de style est :</p>
<p><code>/*-------------Images-----------------*/<br />
p img {<br />
&#160;&#160;padding: 0;<br />
&#160;&#160;max-width: 100%<br />
}<br />
img.centered {<br />
&#160;&#160;display: block;<br />
&#160;&#160;margin-left: auto;<br />
&#160;&#160;margin-right: auto<br />
}<br />
img.alignright {<br />
&#160;&#160;padding: 4px;<br />
&#160;&#160;margin: 0 0 2px 7px;<br />
&#160;&#160;display: inline<br />
}<br />
img.alignleft {<br />
&#160;&#160;padding: 4px;<br />
&#160;&#160;margin: 0 7px 2px 0;<br />
&#160;&#160;display: inline<br />
}<br />
.alignright {<br />
&#160;&#160;float: right<br />
}<br />
.alignleft {<br />
&#160;&#160;float: left<br />
}<br />
/* Begin Images */<br />
p img {<br />
&#160;&#160;padding: 0;<br />
&#160;&#160;max-width: 100%<br />
}<br />
img.centered {<br />
&#160;&#160;display: block;<br />
&#160;&#160;margin-left: auto;<br />
&#160;&#160;margin-right: auto<br />
}<br />
img.alignright {<br />
&#160;&#160;padding: 4px;<br />
&#160;&#160;margin: 0 0 2px 7px;<br />
&#160;&#160;display: inline<br />
}<br />
img.alignleft {<br />
&#160;&#160;padding: 4px;<br />
&#160;&#160;margin: 0 7px 2px 0;<br />
&#160;&#160;display: inline<br />
}<br />
.alignright {<br />
&#160;&#160;float: right<br />
}<br />
.alignleft {<br />
&#160;&#160;float: left<br />
}<br />
/* End Images */<br />
/* Captions */<br />
.aligncenter, div.aligncenter {<br />
&#160;&#160;display: block;<br />
&#160;&#160;margin-left: auto;<br />
&#160;&#160;margin-right: auto<br />
}<br />
.wp-caption {<br />
&#160;&#160;border: 1px solid #ddd;<br />
&#160;&#160;text-align: center;<br />
&#160;&#160;background-color: #f3f3f3;<br />
&#160;&#160;color: #000;/**/<br />
&#160;&#160;padding-top: 4px;<br />
&#160;&#160;margin: 10px;<br />
&#160;&#160;-moz-border-radius: 3px;<br />
&#160;&#160;-khtml-border-radius: 3px;<br />
&#160;&#160;-webkit-border-radius: 3px;<br />
&#160;&#160;border-radius: 3px<br />
}<br />
.wp-caption img {<br />
&#160;&#160;margin: 0;<br />
&#160;&#160;padding: 0;<br />
&#160;&#160;border: 0 none<br />
}<br />
.wp-caption p.wp-caption-text {<br />
&#160;&#160;font-size: 11px;<br />
&#160;&#160;line-height: 17px;<br />
&#160;&#160;padding: 0 4px 5px;<br />
&#160;&#160;margin: 0<br />
/* End captions */<br />
</code></p>
<p>En dépit de ce formatage, nous nous retrouvions avec un bogue : lorsque l&#8217;image d&#8217;un article était située après le texte, avec un alignement à gauche ou à droite, elle chevauchait les <em>méta données</em> gérées par la classe <em>postemetada</em> ainsi que l&#8217;article suivant. <em>Eurêka</em> ! Il suffisait d&#8217;appliquer un <em>spacer</em>, doté de la propriété <em>clear</em>, pour empêcher l&#8217;image d&#8217;être adjacente. En d&#8217;autres termes, il fallait écrire :</p>
<p class="left"><code>.postmetadata {<br />
&#160;&#160;clear: both<br />
</code></p>
<h2>Ajout de fichiers spécifiques</h2>
<p>Trois fichiers permettent de gérer les images dans un thème :</p>
<ul>
<li><em>image.php</em>.</li>
<li><em>attachment.php</em>,</li>
<li><em>index.php</em>.</li>
</ul>
<p>Dans la <a hreflang="en" href="http://codex.wordpress.org/Template_Hierarchy" target="_blank" title="consulter la page du Codex (s'ouvre dans une nouvelle fenêtre)">hiérarchie des modèles</a>, <em>WordPress</em> va d&#8217;abord utiliser <em>image.php</em>, puis <em>attachment.php</em> et enfin <em>index.php</em>.</p>
<p>Faute d&#8217;avoir trouvé la documentation nécessaire, y compris en anglais, nous sommes parti de la dernière version de <em>Kubrick</em> pour ajouter et personnaliser les deux fichiers en fonction des caractéristiques de notre thème. : cette opération est plus fastidieuse que complexe et nous ne la détaillerons pas.</p>
<p>Emmanuel Gorgeon a écrit un <a href="http://www.emmanuelgeorjon.com/wordpress-attachments-107/" target="_blank" title="lire l'article WordPress et les pièces jointes (s'ouvre dans une nouvelle fenêtre)">article</a> théorique fort intéressant sur la gestion des pièces jointes par <em>WordPress</em>.</p>
<p>Dans le fichier <em>functions.php</em> du thème, on peut limiter la taille des images à téléverser avec cette syntaxe :</p>
<p class="left"><code>&#60;?php<br />
// Uploads<br />
&#36GLOBALS['content_width'] = 640;<br />
?&#62;</code></p>
<h2>Ajouts d&#8217;une extension pour gérer une galerie</h2>
<p>Nous nous sommes ensuite intéressé à l&#8217;ajout d&#8217;une galerie d&#8217;images dans un article&#8230; Nous avons été surpris : <em>WordPress</em> se présente comme un <abbr title="Système de Gestion de Contenu (Content Management System - Cms - en anglais)">Sgc</abbr> nativement respectueux des standards, mais l&#8217;affichage d&#8217;une galerie rend la page non valide <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> Strict ! </p>
<p>Cependant, nous avons déniché une extension écrite par le célèbre Justin Tadlock, <a hreflang="en" href="http://justintadlock.com/archives/2008/04/13/cleaner-wordpress-gallery-Plugin" target="_blank" title="aller sur le site du Plugin Cleaner WordPress Gallery (s'ouvre dans un nouvelle fenêtre)">Cleaner WordPress Gallery Plugin</a>. Ce plugiciel, d&#8217;une taille colossale de 3 Kilo-octets (!),  permet d&#8217;afficher une galerie <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> Strict et d&#8217;ajouter un effet <em>Lightbox</em> (ou <em>Slimbox</em>) à ces images.</p>
<p>Il est surprenant que cette fonctionnalité ne soit pas incluse dans <em>WordPress</em> par défaut.</p>
<h2>Syntaxe pour gérer les images</h2>
<p>Il existe une syntaxe spécifique pour gérer les images, sous forme de code abrégée (<em>shortcode</em> pour les anglicistes !), comme l&#8217;enseigne le <a hreflang="en" href="http://codex.wordpress.org/Using_the_gallery_shortcode" target="_blank" title="consulter la page du Codex (s'ouvre dans un nouvelle fenêtre)">Codex</a>. Les exemples présentés sont nombreux et devraient convenir aux novices comme aux chevronnés.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/25/gerer-correctement-les-images-avec-wordpress-25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>000webhost, un hébergeur performant et gratuit</title>
		<link>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/</link>
		<comments>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 17:14:27 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[000webhost]]></category>
		<category><![CDATA[b2evolution]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[File Transfert Protocol]]></category>
		<category><![CDATA[Ftp]]></category>
		<category><![CDATA[hébergeur]]></category>
		<category><![CDATA[Hosting24]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Nucleus]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sgc]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>
		<category><![CDATA[Système de Gestion de Contenu]]></category>
		<category><![CDATA[Typo3]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=228</guid>
		<description><![CDATA[&#60;addendum&#62; 15/09/2009. Nous laissons cet article en l&#8217;état cet article, pour mémoire : à l&#8217;usage, les services de 000webhost constituent une anarque, et fonctionnent plutôt mal, mais ils sont idéals pour héberger des sites expérimentaux ou poubelles. En cas de &#8230; <a href="http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>&#60;addendum&#62;</strong></p>
<p><em>15/09/2009.</em></p>
<p>Nous laissons cet article en l&#8217;état cet article, pour mémoire : à l&#8217;usage, les services de <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a> constituent une </em>anarque</em>, et fonctionnent plutôt mal, mais ils sont idéals pour héberger des sites expérimentaux ou <em>poubelles</em>. En cas de problème, les services payants de <a href="http://www.hosting24.com/" target="_blank" title="aller sur le site d'Hosting24 (s'ouvre dans une nouvelle fenêtre)">Hosting24</a> sont proposés, mais il ne valent guère mieux. Autant être prévenu ! </p>
<p><strong>&#60;/addendum&#62;</strong></p>
<p>Avec <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a>, nous pensons avoir trouvé l&#8217;hébergeur idéal :<br />
<span id="more-228"></span></p>
<ul>
<li>350 Mega-octets d&#8217;espace disque,</li>
<li>100 Giga-octets de bande passante,</li>
<li><abbr title="pre-hypertext processing">Php</abbr> et MySql en version 5,</li>
<li>activation immédiate du compte, y compris de l&#8217;accès <abbr title="File Transfert Protocol">Ftp</abbr> et de la base MySql,</li>
<li>hébergement en nom de domaine, ou en sous domaine avec une adresse comme <em>http://chezmoi.site40.net</em>,</li>
<li>installation en un clic des plates-formes de weblogue (<em>WordPress</em>, <em>Nucleus</em>, <em>b2evolution</em>&#8230;), de <abbr title="Système de Gestion de Contenu (Content Management System - Cms - en anglais)">Sgc</abbr> (<em>Drupal</em>, <em>Joomla</em>, <em>Typo3</em>&#8230;) <em>et cetera</em> pour les moins chevronnés,</li>
<li>haute disponibilité,</li>
<li>sans publicité,</li>
<li>serveur de mel,</li>
<li>gratuit.</li>
</ul>
<p>Autrement dit, ce service propose l&#8217;ensemble des fonctionnalités d&#8217;un hébergeur classique, mais il est gratuit. Le modèle économique repose sur les dons et, essentiellement, sur les souscriptions payantes à des services supplémentaires.  </p>
<p>Les serveurs sont situés aux États-Unis d&#8217;Amérique, mais les temps de réponse sont comparables à ceux d&#8217;un hébergeur situé (au hasard&#8230;) en Allemagne !</p>
<p>L&#8217;assistance technique est limitée à un forum de discussion, mais semble aussi réactive que les <em>hotliners</em> des hébergements classiques à l&#8217;entendement parfois limité.</p>
<p>Cette offre est idéale pour débutants, par exemple sous <em>WordPress</em> : plutôt qu&#8217;installer une version du weblogue en <em>local</em> au risque de ne pas savoir exporter la base de données avec la mise en production, il est plus utile d&#8217;utiliser un serveur dès ses premiers pas. </p>
<p>Sont parfois à déplorer certaines <em>sautes</em> du serveur, qui durent le plus souvent quelques secondes. Cet écueil n&#8217;est guère gênant pour les sites amateurs.</p>
<p>Désormais, nous ne connaissons plus d&#8217;erreur <em>500</em> sur nos sites ni de problème d&#8217;allocation de mémoire <abbr title="pre-hypertext processing">Php</abbr>. Notre vie de concepteur de sites a changé grâce à <a href="http://www.000webhost.com/69994.html" target="_blank" title="aller sur le site de 000webhost (s'ouvre dans une nouvelle fenêtre)">000webhost</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/24/memo-000webhost-un-hebergeur-performant-et-gratuit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>La fonction « get_settings » de WordPress est dépréciée !</title>
		<link>http://www.iptima.com/2008/08/23/la-fonction-%c2%ab-get_settings-%c2%bb-de-wordpress-est-depreciee/</link>
		<comments>http://www.iptima.com/2008/08/23/la-fonction-%c2%ab-get_settings-%c2%bb-de-wordpress-est-depreciee/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 18:00:03 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[get_option]]></category>
		<category><![CDATA[get_settings]]></category>
		<category><![CDATA[thèmes]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=221</guid>
		<description><![CDATA[Concepteur de thèmes, attention ! la fonction get_settings est dépréciée. Il convient à présent d&#8217;utiliser à la place la fonction get_option, comme l&#8217;indique le Codex. Il vaut mieux tenir à jour ses thèmes pour se simplifier le travail de maintenance.]]></description>
			<content:encoded><![CDATA[<p>Concepteur de thèmes, attention ! la fonction <em>get_settings</em> est dépréciée. Il convient à présent d&#8217;utiliser à la place la fonction <em>get_option</em>, comme l&#8217;indique le <a hreflang="en" href="http://codex.wordpress.org/Function_Reference/get_settings" target="_blank" title="consulter la page du Codex (s'ouvre dans un nouvelle fenêtre)">Codex</a>. Il vaut mieux tenir à jour ses thèmes pour se simplifier le travail de maintenance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/23/la-fonction-%c2%ab-get_settings-%c2%bb-de-wordpress-est-depreciee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accéder aux options de WordPress depuis l&#8217;interface d&#8217;administration</title>
		<link>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/</link>
		<comments>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 17:34:56 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[administration de WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=213</guid>
		<description><![CDATA[Pour accéder aux options de WordPress, il suffit de taper l&#8217;adresse http://www.site.com/wp-admin/options.php. L&#8217;équivalent de la table wp_options s&#8217;affiche, et elle permet de modifier d&#8217;un clic de souris les caractéristiques de son weblogue. Curieusement, ce lien n&#8217;est pas disponible en clair &#8230; <a href="http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pour accéder aux options de WordPress, il suffit de taper l&#8217;adresse <em>http://www.site.com/wp-admin/options.php</em>. L&#8217;équivalent de la table <em>wp_options</em> s&#8217;affiche, et elle permet de modifier d&#8217;un clic de souris les caractéristiques de son weblogue. Curieusement, ce lien n&#8217;est pas disponible <em>en clair</em> depuis l&#8217;interface d&#8217;administration de <em>WordPress</em> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/23/acceder-aux-options-de-wordpress-depuis-linterface-dadministration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Activer le correcteur orthographique de WordPress en français par défaut</title>
		<link>http://www.iptima.com/2008/08/22/activer-le-correcteur-orthographique-de-wordpress-en-francais-par-defaut/</link>
		<comments>http://www.iptima.com/2008/08/22/activer-le-correcteur-orthographique-de-wordpress-en-francais-par-defaut/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 15:42:13 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[commentaires]]></category>
		<category><![CDATA[correcteur d'orthographe]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[File Transfert Protocol]]></category>
		<category><![CDATA[francisation]]></category>
		<category><![CDATA[Ftp]]></category>
		<category><![CDATA[internationalisation]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MCe Comments]]></category>
		<category><![CDATA[plugiciels]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[TinyMce]]></category>
		<category><![CDATA[Transfert Protocol]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=186</guid>
		<description><![CDATA[Pendant longtemps, nous avons utilisé WordPress, sans utiliser son correcteur orthographique. Cependant, nous avons prévu d&#8217;ouvrir un site, qui permettrait aux lecteurs d&#8217;écrire leurs propres articles. Dès lors, nous devions fournir une interface précise et conviviale. De même, voulons-nous utiliser &#8230; <a href="http://www.iptima.com/2008/08/22/activer-le-correcteur-orthographique-de-wordpress-en-francais-par-defaut/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pendant longtemps, nous avons utilisé <em>WordPress</em>, sans utiliser son correcteur orthographique. Cependant, nous avons prévu d&#8217;ouvrir un site, qui permettrait aux lecteurs d&#8217;écrire leurs propres articles. Dès lors, nous devions fournir une interface précise et conviviale.</p>
<p>De même, voulons-nous utiliser l&#8217;extension l&#8217;extension <strong>MCE Comments</strong>, qui propose une interface enrichie pour les commentaires des visiteurs. Internationalisation oblige, le correcteur d&#8217;orthographe activé par défaut pour la langue de Shakespeare.</p>
<p><span id="more-186"></span></p>
<p>Or, comme l&#8217;indique un <a href="http://www.wordpress-fr.net/support/sujet-15139-resolu-bravo-correcteurs-orthographe-francais" target="_blank" title="consulter la question du support francophone de WordPress (s'ouvre dans cette fenêtre)">débat</a> non résolu récent sur le support francophone de <em>WordPress</em>, le correcteur d&#8217;orthographe de <em>WordPress</em> corrige par défaut la langue anglaise : comment y remédier ?</p>
<p>La solution que nous allons présenté ici fonctionne avec la version 2.6.1 de <em>WordPress</em>. Nous ne sommes pas partisan des modifications en <em>dur</em> des fichiers de <em>WordPress</em>, mais parfois <em>nécessité fait loi</em> !</p>
<p>Les fichiers à modifier sont :</p>
<ul>
<li><em>../wp-includes/js/tinymce/tiny-mce-config.php</em>,</li>
<li><em>../wp-includes/js/tinymce/Plugins/spellchecker/editor-Plugin.js</em>.</li>
</ul>
<h2>Modifications à apporter dans <em>tiny_mce_config.php</em></h2>
<p>Dans <em>tiny_mce_config.php</em>, il convient de remplacer ligne no 67&#8230;</p>
<p class="left"><code>&#36;mce_spellchecker_languages =<br />
apply_filters('mce_spellchecker_languages','+English=en,Danish=da,<br />
Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,<br />
Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');</code></p>
<p>par</p>
<p class="left"><code>&#36;mce_spellchecker_languages =<br />
apply_filters('mce_spellchecker_languages','English=en,Danish=da,<br />
Dutch=nl,Finnish=fi,+French=fr,German=de,Italian=it,<br />
Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');</code></p>
<p>Autrement dit, il suffit juste de déplacer le symbole <em>+</em> devant <em>French=FR</em>.</p>
<p>Ces deux fichiers sont à remplacer dans l&#8217;installation de <em>WordPress</em> par <abbr title="File Transfert Protocol">Ftp</abbr>.</p>
<h2>Modifications à apporter dans <em>editor-Plugin.js</em></h2>
<p>Dans <em>editor-Plugin.js</em>, il convient de remplacer lignes no 78 et suivantes&#8230;</p>
<p class="left"><code>each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,<br />
Dutch=nl,Finnish=fi,French=fr, German=de,Italian=it,<br />
Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv',<br />
'hash'), function(v, k) {<br />
if (k.indexOf('+') === 0) {<br />
&#160;&#160;k = k.substring(1);<br />
&#160;&#160;t.selectedLang = v;<br />
}<br />
t.languages[k] = v;<br />
});</code></p>
<p>par</p>
<p class="left"><code>each(ed.getParam('spellchecker_languages','English=en,Danish=da,<br />
Dutch=nl,Finnish=fi,+French=fr,German=de,Italian=it,<br />
Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv',<br />
'hash'), function(v, k) {<br />
&#160;&#160;if (k.indexOf('+') === 0) {<br />
&#160;&#160;k = k.substring(1);<br />
&#160;&#160;t.selectedLang = v;<br />
}<br />
t.languages[k] = v;<br />
});</code></p>
<p>Là encore, il suffit juste de déplacer le symbole <em>+</em> devant <em>French=FR</em>.</p>
<h2>Modifications à apporter dans l&#8217;extension <em>TinyMce Comments</em></h2>
<p>Dans <em>TinyMCEComments.php</em>, il suffit de remplacer la ligne 215&#8230;</p>
<p class="left"><code>&#36;mcecomment_options['language'] = 'en';</code></p>
<p>par</p>
<p class="left"><code>&#36;mcecomment_options['language'] = 'fr';</code></p>
<p>c&#8217;est-à-dire <em>en</em> par <em>fr</em>.</p>
<p>Ensuite, et pour être parfaitement exhaustif afin de satisfaire Jean-Yves (!), il faut transférer le fichier par <abbr title="File Transfert Protocol">Ftp</abbr>, à moins d&#8217;effectuer la modification depuis l&#8217;éditeur d&#8217;extension de <em>WordPress</em>.</p>
<p>Si ces modifications sont faciles, il reste cependant un défaut auquel nous n&#8217;avons pas remédier. Le correcteur d&#8217;orthographe propose parfois certains équivalents accentués dans des caractères étranges, dont l&#8217;encodage n&#8217;est pas conforme.</p>
<p>Enfin, la traduction française sur l&#8217;icône du <em>Spellchecker</em> laisse à désirer. L&#8217;équipe française de traduction a pris le parti récemment de culbuter les apostrophes, qui ne sont pas correctement prises en charge par JavaScript ! (On retrouve le même écueil dans l&#8217;ajout d&#8217;image). Pour obtenir un résultat optimal, il convient donc aussi de remanier la traduction française.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/22/activer-le-correcteur-orthographique-de-wordpress-en-francais-par-defaut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajouter des « Widgets » à un thème WordPress</title>
		<link>http://www.iptima.com/2008/08/19/ajouter-des-%c2%ab-widgets-%c2%bb-a-un-theme-wordpress/</link>
		<comments>http://www.iptima.com/2008/08/19/ajouter-des-%c2%ab-widgets-%c2%bb-a-un-theme-wordpress/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 17:55:40 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[feuilles de style]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Widgets]]></category>
		<category><![CDATA[Xhtml]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=152</guid>
		<description><![CDATA[Dans WordPress, il est désormais possible d&#8217;ajouter des Widgets dans quatre zones : l&#8217;en-tête, le contenu, la colonne latérale, le pied de page. Le nombre de zones n&#8217;est pas limité : on peut très bien imaginer un thème avec deux &#8230; <a href="http://www.iptima.com/2008/08/19/ajouter-des-%c2%ab-widgets-%c2%bb-a-un-theme-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dans <em>WordPress</em>, il est désormais possible d&#8217;ajouter des <em>Widgets</em> dans quatre zones :</p>
<ul>
<li>l&#8217;en-tête,</li>
<li>le contenu,</li>
<li>la colonne latérale,</li>
<li>le pied de page.</li>
</ul>
<p><span id="more-152"></span></p>
<p>Le nombre de zones n&#8217;est pas limité : on peut très bien imaginer un thème avec deux colonnes latérales de <em>Widgets</em> et un pied de page avec trois zones de <em>Widgets</em> !</p>
<p>La plupart des thèmes disponibles se contente de proposer une ou plusieurs colonnes latérales <em>Widget Ready</em>. Or, pour des raisons esthétiques ou de séméiologie (!), on peut vouloir afficher <em>WordPress</em> sur une colonne, avec les informations complémentaires dans le pied de page.</p>
<p>Nous allons donc voir ici, à travers quelques codes simples que nous avons développés (nous préfèrerons ici la pratique à la théorie, car <em>c&#8217;est en forgeant qu&#8217;on devient forgeron</em>), comment ajouter des <em>Widgets</em> à un thème dans une colonne ou dans un pied de page. Leur adaptation demandera un minimum d&#8217;effort, nous en sommes persuadé&#8230;</p>
<p>Dans notre premier thème, nous nous contenterons d&#8217;afficher une deuxième colonne latérale dans le corps de la page affichant des <em>Widgets</em> ; dans le deuxième, nous créerons un pied de page développé, qui comprendra trois zones de <em>Widgets</em>. </p>
<p>Précisions au préalable que la <em>widgetization</em> d&#8217;un thème demande la modification de trois fichiers :</p>
<ul>
<li>le fichier <em>functions.php</em>,</li>
<li>la feuille de style que nous appellerons par commodité <em>styles.css</em>,</li>
<li>le fichier de destination, <em>sidebar.php</em> ou <em>footer.php</em>, selon la zone de destination des <em>widgets</em> dans nos exemples présentés ici.</li>
</ul>
<h2>Le fichier <em>functions.php</em></h2>
<p>Le fichier <em>functions.php</em> comportera l&#8217;instruction suivante pour notre thème à la deuxième colonne :</p>
<p><code>&#60;?php<br />
if (function_exists('register_sidebar'))<br />
register_sidebar(array('name'=&#62;'barre',<br />
&#160;&#160;'before_widget' =&#62; '&#60;div id=&#34;%1&#36;s&#34; class=&#34;widget_sidebar %2&#36;s&#34;&#62;',<br />
&#160;&#160;'after_widget' =&#62; '&#60;/div&#62;',<br />
&#160;&#160;'before_title' =&#62; '&#60;h2 class=&#34;widgettitle&#34;&#62;',<br />
&#160;&#160;'after_title' =&#62; '&#60;/h2&#62;',<br />
 ));<br />
 ?&#62;</code></p>
<p>Ici, <em>sidebar</em> a été utilisé au singulier, car nous demandons la création d&#8217;une seule zone. </p>
<p>Pour notre pied de page développé, nous écrirons :</p>
<p><code>&#60;?php<br />
if (function_exists('register_sidebar'))<br />
register_sidebars(3,array(<br />
&#160;&#160;'before_widget' =&#62; '&#60;div id=&#34;%1&#36;s&#34; class=&#34;widget_sidebar %2&#36;s&#34;&#62;',<br />
&#160;&#160;'after_widget' =&#62; '&#60;/div&#62;',<br />
&#160;&#160;'before_title' =&#62; '&#60;h2 class=&#34;widgettitle&#34;&#62;',<br />
&#160;&#160;'after_title' =&#62; '&#60;/h2&#62;',<br />
));</code></p>
<p>Ici, la déclaration est la même que précédemment, à l&#8217;exception du chiffre <strong>3</strong> qui précise le nombre de <em>Sidebars</em> attendu et de l&#8217;ajout de la marque du <strong>pluriel</strong> à <em>sidebar</em>.</p>
<p>Cette solution présente un inconvénient ergonomique : aucun nom ne sera donné à la zone, au risque de créer une confusion dans l&#8217;esprit de l&#8217;utilisateur. Aussi vaut-il mieux déclarer un par un chaque <em>widget</em>, en leur attribuant un nom significatif : par exemple, <em>pied_gauche</em>, <em>pied_centre</em> et <em>pied_droit</em>.</p>
<h2>Le fichier <em>style.css</em></h2>
<p>Après avoir déclaré les <em>Widgets</em> et le formatage attendu, nous pouvons les styliser dans le fichier <em>style.css</em> comme suit dans notre thème à la colonne :</p>
<p><code>#sidebar {<br />
/* 8 juin 2010. La syntaxe de cette feuille de style est laide comme les suivantes dans l'article, car nous avons progressé depuis la rédaction de l'article. Cependant, nous laissons l'article en l'état... qui pourra peut-être éclairer les débutants. */<br />
&#160;&#160;float: left;<br />
&#160;&#160;margin: 0 0 0 20px;<br />
&#160;&#160;padding: 0<br />
&#160;&#160;width: 320px<br />
}<br />
#sidebar ul {<br />
&#160;&#160;margin-bottom: 20px<br />
}<br />
#sidebar a {<br />
&#160;&#160;color: #000<br />
}<br />
.widget_sidebar {<br />
&#160;&#160;display: block;<br />
&#160;&#160;float: left;<br />
&#160;&#160;font-size:1em;<br />
&#160;&#160;margin: 0 0 5px 0;<br />
&#160;&#160;padding: 0;<br />
&#160;&#160;width: 320px<br />
}<br />
.widget_sidebar h1, .widget_sidebar h2, .widget_sidebar h3 {<br />
&#160;&#160;background: #ffe6e6;<br />
&#160;&#160;border-bottom: 1px solid #000;<br />
&#160;&#160;border-top: 1px solid #000;<br />
&#160;&#160;color: #fff;<br />
&#160;&#160;margin: 0;<br />
&#160;&#160;padding : 2px 0px 2px 5px<br />
}<br />
.widget_sidebar ul h2 {<br />
&#160;&#160;border-bottom: dashed 1px #000;<br />
&#160;&#160;font-size: 1.5em;<br />
&#160;&#160;padding-bottom: 10px<br />
}<br />
.widget_sidebar ul li {<br />
&#160;&#160;border-bottom: dashed 1px #000;<br />
&#160;&#160;font-size: 1.1em;<br />
&#160;&#160;line-height: 1.6em;<br />
&#160;&#160;list-style: none<br />
}<br />
.widget_sidebar ul ul li {<br />
&#160;&#160;border-bottom: dashed 1px #000<br />
}<br />
#sidebar a:hover {<br />
&#160;&#160;text-decoration: underline<br />
}<br />
.widget_sidebar p {<br />
&#160;&#160;font-size: 1em;<br />
&#160;&#160;padding: 10px;<br />
&#160;&#160;text-align: center<br />
}<br />
/*--------------Widgets--------------*/<br />
li.widget h2 {<br />
&#160;&#160;color: #000;<br />
}<br />
/*-------------Calendar-----------------*/<br />
#wp-calendar {<br />
&#160;&#160;margin-top: 5px;<br />
&#160;&#160;text-align: left;<br />
&#160;&#160;width: 180px<br />
}<br />
#wp-calendar th {<br />
&#160;&#160;margin-top: 5px<br />
}<br />
#wp-calendar caption {<br />
&#160;&#160;margin-top: 5px;<br />
&#160;&#160;font-size: 1.2em<br />
</code></p>
<p>Pour le pied de page, nous le styliserons ainsi&#8230;</p>
<p><code>#footer_sidebar {<br />
&#160;&#160;display: block;<br />
&#160;&#160;height: 260px;<br />
&#160;&#160;margin-left: 25px;<br />
&#160;&#160;margin-right: 25px;<br />
&#160;&#160;padding-top: 25px<br />
}<br />
#footer_sidebar_1 {<br />
&#160;&#160;float: left;<br />
&#160;&#160;margin-right: 25px;<br />
&#160;&#160;width: 180px<br />
}<br />
#footer_sidebar_2 {<br />
&#160;&#160;float: left;<br />
&#160;&#160;margin-right: 25px;<br />
&#160;&#160;width: 180px<br />
}<br />
#footer_sidebar_3 {<br />
&#160;&#160;float: left;<br />
&#160;&#160;width: 180px<br />
}<br />
#footer ul {<br />
&#160;&#160;margin-bottom: 20px<br />
}<br />
.widget_sidebar h1, .widget_sidebar h2, .widget_sidebar h3 {<br />
&#160;&#160;color: #000;<br />
&#160;&#160;border-bottom: 1px solid #000;<br />
&#160;&#160;border-top: 1px solid #000;<br />
&#160;&#160;margin: 0;<br />
&#160;&#160;padding: 2px 0px 2px 0px;<br />
&#160;&#160;text-align: center<br />
}<br />
.widget_sidebar ul h2 {<br />
&#160;&#160;border-bottom: dashed 1px #000;<br />
&#160;&#160;font-size: 1.5em;<br />
&#160;&#160;padding-bottom: 10px<br />
}<br />
.widget_sidebar ul li {<br />
&#160;&#160;border-bottom: dashed 1px #000;<br />
&#160;&#160;font-size: 1.1em;<br />
&#160;&#160;list-style: none;<br />
&#160;&#160;line-height: 1.6em<br />
}<br />
.widget_sidebar ul ul li {<br />
&#160;&#160;border-bottom: dashed 1px #000<br />
}<br />
#sidebar a:hover {<br />
&#160;&#160;text-decoration: underline<br />
}<br />
.widget_sidebar p {<br />
&#160;&#160;color: #000;<br />
&#160;&#160;font-size: 1em;<br />
&#160;&#160;padding: 10px;<br />
&#160;&#160;text-align: center<br />
}<br />
/*--------------Widgets--------------*/<br />
li.widget h2 {<br />
&#160;&#160;color: #000<br />
}<br />
/*-------------Calendar-----------------*/<br />
#wp-calendar {<br />
&#160;&#160;margin-top: 5px;<br />
&#160;&#160;text-align: left;<br />
&#160;&#160;width: 180px<br />
}<br />
#wp-calendar th {<br />
&#160;&#160;margin-top: 5px<br />
}<br />
#wp-calendar caption {<br />
&#160;&#160;font-size: 1.2em;<br />
&#160;&#160;margin-top: 5px<br />
</code></p>
<p>(<em>Nota</em>. Pour les exemples, nous nous sommes contenté de la couleur noire, qui n&#8217;affichera pas grand&#8217;chose !)</p>
<h2>Déclaration des <em>Widgets</em> dans les fichiers de destination</h2>
<p>Enfin, il reste à déclarer les <em>Widgets</em> dans la colonne de notre premier thème. Il suffit d&#8217;ajouter à notre fichier <em>sidebar.php</em> la déclaration&#8230;<br />
<code>&#60;?php<br />
if ( !function_exists('dynamic_sidebar')<br />
|| !dynamic_sidebar(1) ) : ?&#62;<br />
&#60;?php endif; ?&#62;</code></p>
<p>Pour notre fichier <em>footer.php</em> du deuxième thème, l&#8217;instruction sera :</p>
<p><code>&#60;div id=&#34;footer_sidebar&#34;&#62;<br />
&#160;&#160;&#60;div id=&#34;footer_sidebar_1&#34;&#62;<br />
&#160;&#160;&#60;?php if (!function_exists('dynamic_sidebar')<br />
|| !dynamic_sidebar(1)) : ?&#62;<br />
&#160;&#160;&#60;?php endif; ?&#62;<br />
&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#60;div id=&#34;footer_sidebar_2&#34;&#62;<br />
&#160;&#160;&#60;?php if (!function_exists('dynamic_sidebar')<br />
|| !dynamic_sidebar(2)) : ?&#62;<br />
&#160;&#160;&#60;?php endif; ?&#62;<br />
&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#60;div id=&#34;footer_sidebar_3&#34;&#62;<br />
&#160;&#160;&#60;?php if (!function_exists('dynamic_sidebar')<br />
|| !dynamic_sidebar(3)) : ?&#62;<br />
&#160;&#160;&#60;?php endif; ?&#62;<br />
&#160;&#160;&#60;/div&#62;<br />
&#60;/div&#62;</code></p>
<p>Traditionnellement, cette déclaration est placée en tête du fichier, le restant étant laissé vide. Néanmoins, il est possible de coder <em>en dur</em> certains éléments, et d&#8217;ajouter la déclaration à la suite. Ainsi, l&#8217;ajout de <em>Widgets</em> dans l&#8217;interface d&#8217;administration de <em>WordPress</em> n&#8217;affectera pas le codage.</p>
<p>À l&#8217;usage, nous avons noté un dysfonctionnement. Si trois zones de <em>widgets</em> sont prévues dans le pied de page à gauche, au centre et à droite, la zone centrale ne peut être laissée vide : sinon, les <em>Widgets</em> placés dans la zone de droite occupent le centre. Pour obvier à cet inconvénient, il suffit d&#8217;ajouter un <em>Widget</em> texte vide dans la zone centrale, avec un espace insécable.</p>
<p>(<em>Nota</em>. Nous prions nos lecteurs de nous excuser pour les anglicismes, plus ou moins incontournables en la matière !)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/19/ajouter-des-%c2%ab-widgets-%c2%bb-a-un-theme-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimiser ses requêtes Sql avec WordPress</title>
		<link>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/</link>
		<comments>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 17:47:36 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Sql]]></category>
		<category><![CDATA[Standard Query Language]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=135</guid>
		<description><![CDATA[Thomas a commis un article passionnant, Optimisez vos requêtes Sql avec WordPress 2.5. Est expliqué comment afficher dans le pied de page le nombre de requêtes Sql et leur temps d&#8217;exécution. Ces renseignements sont d&#8217;un intérêt fort théorique, mais peuvent &#8230; <a href="http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thomas a commis un article passionnant, <a href="http://blog.newbie-project.net/2008/03/24/optimisez-vos-requetes-sql-avec-wordpress-25.html" target="_blank" title="lire l'article Optimisez vos requêtes Sql avec WordPress 2.5 (s'ouvre dans une nouvelle fenêtre)">Optimisez vos requêtes Sql avec WordPress 2.5</a>. Est expliqué comment afficher dans le pied de page le nombre de requêtes <abbr title="Standard Query Language">Sql</abbr> et leur temps d&#8217;exécution. Ces renseignements sont d&#8217;un intérêt fort théorique, mais peuvent combler les technophiles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/06/optimiser-ses-requetes-sql-avec-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

