<?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; Extensible HyperText Markup Language</title>
	<atom:link href="http://www.iptima.com/tag/extensible-hypertext-markup-language/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>Afficher un site Internet sur un téléphone mobile en pratique</title>
		<link>http://www.iptima.com/2010/02/24/afficher-un-site-internet-sur-un-telephone-mobile-en-pratique/</link>
		<comments>http://www.iptima.com/2010/02/24/afficher-un-site-internet-sur-un-telephone-mobile-en-pratique/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 22:54:24 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[Acrobat Reader]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[contenu alternatif]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Detect Mobile Browsers]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[Global System for Mobile Communications]]></category>
		<category><![CDATA[Gsm]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[Hypertext Preprocessor]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Portable Document Format]]></category>
		<category><![CDATA[référencement]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[Seo]]></category>
		<category><![CDATA[Sitemap]]></category>
		<category><![CDATA[Xhtml]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=426</guid>
		<description><![CDATA[Nous allons présenter ici un moyen rudimentaire de servir un contenu alternatif, sémantique, sans altérer le contenu principal. L&#8217;objectif est didactique. Si notre exemple ne sera évidemment pas utilisable en production (!), il constituera, le cas échéant, une piste de &#8230; <a href="http://www.iptima.com/2010/02/24/afficher-un-site-internet-sur-un-telephone-mobile-en-pratique/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nous allons présenter ici un moyen rudimentaire de servir un contenu alternatif, sémantique, sans altérer le contenu principal. L&#8217;objectif est didactique. Si notre exemple ne sera évidemment pas utilisable en production (!), il constituera, le cas échéant, une piste de réflexion sur un développement. Nous utiliserons <abbr title="pre-hypertext processing">Php</abbr> par commodité, mais le raisonnement pourra être repris avec d&#8217;autres langages de programmation.</p>
<p><span id="more-426"></span></p>
<p>D&#8217;abord, rendons-nous sur le site <a href="http://detectmobilebrowsers.mobi/" target="_blank" title="aller sur le site Detect Mobile Browsers (s'ouvre dans une nouvelle fenêtre)">Detect Mobile Browsers</a>, afin de télécharger le répertoire <em>mobile_detect_device</em>. Ce dossier contient le fichier <em>mobile_device_detect.php</em>. Son fonctionnement est sommaire, mais efficace&#8230; Il détecte le logiciel du navigateur : s&#8217;il se trouve dans la liste des agents utilisateurs des périphériques mobiles, il propose un traitement comme une direction. En revanche, il convient de maintenir à jour le fichier pour prendre en compte les nouveaux téléphones et les navigateurs correspondants.</p>
<p>Plaçons à la <em>racine</em> du site <em>mobile_detect_device</em>.</p>
<p>Nous disposons, à présent, de trois solutions pour rediriger vers un contenu alternatif :</p>
<ol>
<li>proposer un changement dynamique de la feuille de style avec l&#8217;<abbr title="Uniform Ressource Locator">Url</abbr>,</li>
<li>aiguiller vers un site alternatif, par exemple en sous-domaine,</li>
<li>concevoir des pages à double contenu, l&#8217;un pour le contenu principal (<em>ordinateurs classiques</em>), l&#8217;autre pour le contenu alternatif (<em>périphériques mobiles</em>).</li>
</ol>
<p>Dans le premier cas, il convient d&#8217;utiliser la syntaxe&#8230;</p>
<p class="left"><code>&#60;?php<br />
include('mobile_device_detect.php');<br />
&#36;mobile = mobile_device_detect();<br />
if (&#36;mobile == true)<br />
{<br />
&#160;&#160;header('Location: http://your-website.com/?css=mobile_style') ;<br />
}<br />
?&#62;<br />
</code></p>
<p>Cette solution conduit à ré-écrire une feuille de style, par exemple en cachant certains éléments avec la propriété <em>display: none</em>.</p>
<p>Dans le deuxième cas, il convient d&#8217;utiliser la syntaxe&#8230;</p>
<p class="left"><code>&#60;?php<br />
include('mobile_device_detect.php');<br />
&#36;mobile = mobile_device_detect();<br />
if (&#36;mobile == true)<br />
{<br />
&#160;&#160;header('http://www.monsite.com/mobile/') ;<br />
}<br />
?&#62;<br />
</code></p>
<p>Avec cette solution, plus simple et moins aléatoire, le site alternatif est autonome.</p>
<p>Dans le troisième cas, il convient d&#8217;utiliser la syntaxe&#8230;</p>
<p class="left"><code>&#60;?php<br />
include('mobile_device_detect.php');<br />
&#36;mobile = mobile_device_detect();<br />
if (&#36;mobile == true)<br />
{<br />
&#160;&#160;/***** contenu alternatif pour les périphériques mobiles *****/<br />
}<br />
else {<br />
&#160;&#160;/***** contenu principal pour les ordinateurs classiques *****/<br />
}<br />
?&#62;<br />
</code></p>
<p>Cette solution emporte notre préférence, car elle permet d&#8217;utiliser la même <abbr title="Uniform Ressource Locator">Url</abbr> pour les pages, et donc de simplifier le référencement. Un <em>Sitemap</em> spécifique sera notamment inutile.</p>
<p>On peut raffiner la condition et utiliser, par exemple, une redirection spécifique pour l&#8217;affichage sur <a href="www.apple.com/fr/iphone/" target="_blank" title ="aller sur le site de l'iPhone (s'ouvre dans une nouvelle fenêtre)">iPhone</a> (<em>http://www.monsite.com/iphone/</em>) et une autre pour l&#8217;affichage sur les autres périphériques de poche (<em>http://www.monsite.com/mobile/</em>) :</p>
<p class="left"><code>&#60;?php<br />
include('mobile_device_detect.php');<br />
mobile_device_detect('http://www.monsite.com/iphone/',true,true,true,true,true,false,'http://www.monsite.com/mobile/');<br />
?&#62;<br />
</code></p>
<p>Le code a été généré par <a href="http://detectmobilebrowsers.mobi/" target="_blank" title="aller sur le site Detect Mobile Browsers (s'ouvre dans une nouvelle fenêtre)">Detect Mobile Browsers</a>, mais nous préférons les syntaxes plus <em>lisibles</em> (et <em>bavardes</em>&#8230;) !</p>
<p>Voyons, en pratique, comment servir deux contenus dans la même page pour optimiser la <abbr title="Search Engine Optimization">Seo</abbr>. Notre contenu principal contiendra un titre, une animation en <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>, une image et un texte. Notre contenu alternatif contiendra les mêmes éléments, mais l&#8217;animation sera remplacée par un texte&#8230;</p>
<p class="left"><code>&#60;?php header(&#34;Content-Type: application/xhtml+xml&#34;);<br />
// Permet d'envoyer un format 'Multipurpose Internet Mail Extensions' (Mime) adapté à la consultation sur les périphériques mobiles, et doit être placé dès la première ligne avant toute autre instruction.<br />
include('mobile_device_detect.php');<br />
&#36;mobile = mobile_device_detect();<br />
if (&#36;mobile == true)<br />
// Le 'if' puis le 'else' comporte des répétitions, mais permet de ne demander qu'une requête Php.<br />
{<br />
/***** Génération du contenu pour les périphériques mobiles *****/<br />
?&#62;<br />
&#160;&#160;&#60;?= '&#60;' . '?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?' . '&#62;' ?&#62;<br />
&#160;&#160;&#60;!-- Envoie un encodage spécifique pour les périphériques mobiles --&#62;<br />
&#160;&#160;&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML Basic 1.1//EN&#34; &#34;http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd&#34;&#62;<br />
&#160;&#160;&#60;!-- Prologue spécifique pour les périphériques mobiles --&#62;<br />
&#160;&#160;&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;<br />
&#160;&#160;&#60;head&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Cache-Control&#34; content=&#34;max-age=200&#34; /&#62;<br />
&#160;&#160;&#60;!-- Mise en cache des données de l'en-tête pendant 200 secondes pour éviter les nouvelles requêtes et ralentir la navigation --&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34; /&#62;<br />
&#160;&#160;&#60;link rel=&#34;stylesheet&#34; href=&#34;../phone/css/mobile.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&#62;<br />
&#160;&#160;&#60;!-- Si 'hanled' est introuvable, 'screen' est retenu par défaut. --&#62;<br />
&#160;&#160;&#60;!-- On peut se passer de l'appel à certains scripts destinés aux pages 'classiques'. --&#62;<br />
&#160;&#160;&#60;title&#62;Nuages&#60;/title&#62;<br />
&#160;&#160;&#60;meta name=&#34;description&#34; content=&#34;Nuages et stratocumulus&#34; /&#62;<br />
&#160;&#160;&#60;meta name=&#34;keywords&#34; content=&#34;ciel, stratocumulus, nuages, météo&#34; /&#62;<br />
&#160;&#160;&#60;/head&#62;<br />
&#160;&#160;&#60;body&#62;<br />
&#160;&#160;&#60;h1&#62;Nuages&#60;/h1&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Un nuage est formé d'un ensemble de gouttelettes d'eau (ou de cristaux de glace) en suspension dans l'air. L'aspect du nuage dépend de la lumière qu'il reçoit, de la nature, de la dimension, du nombre et de la répartition des particules qui le constituent.&#60;/p&#62;<br />
&#160;&#160;&#60;h2&#62;Stratocumulus&#60;/h2&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;image&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#60;img src=&#34;../phone/media/clouds_thumb.jpg&#34; alt=&#34;stratocumulus&#34; title=&#34;stratocumulus&#34; /&#62;<br />
&#160;&#160;&#160;&#160;&#60;!-- Le nom des images peut être modifié dynamiquement pour afficher une dimension spécifique pour les périphériques mobiles avec une expression régulière ou un 'str_replace()', à partir du moment où elles sont présentes sur le serveur en plusieurs tailles et portent un nom logique. Par exemple, on peut renommer 'image.jpg' en 'image_thumb'.jpg. On peut aussi créer des miniatures à la volée avec 'imagecopyresampled'.--&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Le stratocumulus est un genre de nuage appartenant à l'étage inférieur et situé à une altitude comprise entre 500 et 2500 mètres. Son épaisseur est de 600 mètres. Il est d'origine convective, mais son extension verticale est immédiatement limitée par la stabilité de la couche supérieure. Visuellement, ce sont de larges masses sombres et arrondies, habituellement en groupe, lignes ou vagues. Pris isolément, ces nuages sont plus gros que ceux du type altocumulus et l'ensemble se situe à plus basse altitude (habituellement en dessous de 2000 mètres).&#60;/p&#62;<br />
&#160;&#160;&#60;/body&#62;<br />
&#160;&#160;&#60;/html&#62;<br />
&#60;?php<br />
}<br />
/***** Fin de la génération du contenu pour les périphériques mobiles *****/<br />
else<br />
{<br />
/***** Génération du contenu pour les ordinateurs classiques *****/<br />
?&#62;<br />
&#160;&#160;&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&#62;<br />
&#160;&#160;&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;<br />
&#160;&#160;&#60;head&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8 &#34; /&#62;<br />
&#160;&#160;&#60;link rel=&#34;stylesheet&#34; href=&#34;../phone/css/default.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&#62;<br />
&#160;&#160;&#60;title&#62;Nuages&#60;/title&#62;<br />
&#160;&#160;&#60;meta name=&#34;description&#34; content=&#34;Nuages et stratocumulus&#34; /&#62;<br />
&#160;&#160;&#60;meta name=&#34;keywords&#34; content=&#34;ciel, stratocumulus, nuages, météo&#34; /&#62;<br />
&#160;&#160;&#60;/head&#62;<br />
&#160;&#160;&#60;body&#62;<br />
&#160;&#160;&#60;!-- On peut aussi renvoyer le contenu vers une autre page, l'en-tête étant alors optionnel !!! --&#62;<br />
&#160;&#160;&#60;h1&#62;Nuages&#60;/h1&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;anim&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;object type=&#34;application/x-shockwave-flash&#34; data=&#34;../phone/media/clouds.swf&#34; width=&#34;400&#34; height=&#34;300&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;param name=&#34;movie&#34; value=&#34;clouds.swf&#34; /&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;/object&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#60;h2&#62;Stratocumulus&#60;/h2&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;image&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#60;a href=&#34;../phone/media/clouds_default.jpg&#34; onclick=&#34;window.open(this.href, 'Clouds', 'height=384, width=640, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no'); return false;&#34;&#62;&#60;img src=&#34;../phone/media/clouds_thumb.jpg&#34; alt=&#34;stratocumulus&#34; title=&#34;stratocumulus&#34; /&#62;&#60;/a&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Le stratocumulus est un genre de nuage appartenant à l'étage inférieur et situé à une altitude comprise entre 500 et 2500 mètres. Son épaisseur est de 600 mètres. Il est d'origine convective, mais son extension verticale est immédiatement limitée par la stabilité de la couche supérieure. Visuellement, ce sont de larges masses sombres et arrondies, habituellement en groupe, lignes ou vagues. Pris isolément, ces nuages sont plus gros que ceux du type altocumulus et l'ensemble se situe à plus basse altitude (habituellement en dessous de 2000 mètres).&#60;/p&#62;<br />
&#160;&#160;&#60;/body&#62;<br />
&#160;&#160;&#60;/html&#62;<br />
&#60;?php<br />
}<br />
/***** Fin de la génération du contenu pour les ordinateurs classiques *****/<br />
?&#62;<br />
</code></p>
<p>Ou sans commentaires&#8230;</p>
<p class="left"><code>&#60;?php header(&#34;Content-Type: application/xhtml+xml&#34;);<br />
include('mobile_device_detect.php');<br />
&#36;mobile = mobile_device_detect();<br />
if (&#36;mobile == true)<br />
{<br />
?&#62;<br />
&#160;&#160;&#60;?= '&#60;' . '?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?' . '&#62;' ?&#62;<br />
&#160;&#160;&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML Basic 1.1//EN&#34; &#34;http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd&#34;&#62;<br />
&#160;&#160;&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;<br />
&#160;&#160;&#60;head&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Cache-Control&#34; content=&#34;max-age=200&#34; /&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34; /&#62;<br />
&#160;&#160;&#60;link rel=&#34;stylesheet&#34; href=&#34;../phone/css/mobile.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&#62;<br />
&#160;&#160;&#60;title&#62;Nuages&#60;/title&#62;<br />
&#160;&#160;&#60;meta name=&#34;description&#34; content=&#34;Nuages et stratocumulus&#34; /&#62;<br />
&#160;&#160;&#60;meta name=&#34;keywords&#34; content=&#34;ciel, stratocumulus, nuages, météo&#34; /&#62;<br />
&#160;&#160;&#60;/head&#62;<br />
&#160;&#160;&#60;body&#62;<br />
&#160;&#160;&#60;h1&#62;Nuages&#60;/h1&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Un nuage est formé d'un ensemble de gouttelettes d'eau (ou de cristaux de glace) en suspension dans l’air. L'aspect du nuage dépend de la lumière qu'il reçoit, de la nature, de la dimension, du nombre et de la répartition des particules qui le constituent.&#60;/p&#62;<br />
&#160;&#160;&#60;h2&#62;Stratocumulus&#60;/h2&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;image&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#60;img src=&#34;../phone/media/clouds_thumb.jpg&#34; alt=&#34;stratocumulus&#34; title=&#34;stratocumulus&#34; /&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Le stratocumulus est un genre de nuage appartenant à l'étage inférieur et situé à une altitude comprise entre 500 et 2500 mètres. Son épaisseur est de 600 mètres. Il est d'origine convective, mais son extension verticale est immédiatement limitée par la stabilité de la couche supérieure. Visuellement, ce sont de larges masses sombres et arrondies, habituellement en groupe, lignes ou vagues. Pris isolément, ces nuages sont plus gros que ceux du type altocumulus et l'ensemble se situe à plus basse altitude (habituellement en dessous de 2000 mètres).&#60;/p&#62;<br />
&#160;&#160;&#60;/body&#62;<br />
&#160;&#160;&#60;/html&#62;<br />
&#60;?php<br />
}<br />
else<br />
{<br />
?&#62;<br />
&#160;&#160;&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Strict//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&#34;&#62;<br />
&#160;&#160;&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62;<br />
&#160;&#160;&#60;head&#62;<br />
&#160;&#160;&#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8 &#34; /&#62;<br />
&#160;&#160;&#60;link rel=&#34;stylesheet&#34; href=&#34;../phone/css/default.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&#62;<br />
&#160;&#160;&#60;title&#62;Nuages&#60;/title&#62;<br />
&#160;&#160;&#60;meta name=&#34;description&#34; content=&#34;Nuages et stratocumulus&#34; /&#62;<br />
&#160;&#160;&#60;meta name=&#34;keywords&#34; content=&#34;ciel, stratocumulus, nuages, météo&#34; /&#62;<br />
&#160;&#160;&#60;/head&#62;<br />
&#160;&#160;&#60;body&#62;<br />
&#160;&#160;&#60;h1&#62;Nuages&#60;/h1&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;anim&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;object type=&#34;application/x-shockwave-flash&#34; data=&#34;../phone/media/clouds.swf&#34; width=&#34;400&#34; height=&#34;300&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;param name=&#34;movie&#34; value=&#34;clouds.swf&#34; /&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;/object&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#60;h2&#62;Stratocumulus&#60;/h2&#62;<br />
&#160;&#160;&#160;&#160;&#60;div id=&#34;image&#34;&#62;<br />
&#160;&#160;&#160;&#160;&#60;a href=&#34;../phone/media/clouds_default.jpg&#34; onclick=&#34;window.open(this.href, 'Clouds', 'height=384, width=640, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no'); return false;&#34;&#62;&#60;img src=&#34;../phone/media/clouds_thumb.jpg&#34; alt=&#34;stratocumulus&#34; title=&#34;stratocumulus&#34; /&#62;&#60;/a&#62;<br />
&#160;&#160;&#160;&#160;&#60;/div&#62;<br />
&#160;&#160;&#160;&#160;&#60;p&#62;Le stratocumulus est un genre de nuage appartenant à l'étage inférieur et situé à une altitude comprise entre 500 et 2500 mètres. Son épaisseur est de 600 mètres. Il est d'origine convective, mais son extension verticale est immédiatement limitée par la stabilité de la couche supérieure. Visuellement, ce sont de larges masses sombres et arrondies, habituellement en groupe, lignes ou vagues. Pris isolément, ces nuages sont plus gros que ceux du type altocumulus et l'ensemble se situe à plus basse altitude (habituellement en dessous de 2000 mètres).&#60;/p&#62;<br />
&#160;&#160;&#60;/body&#62;<br />
&#160;&#160;&#60;/html&#62;<br />
&#60;?php<br />
}<br />
?&#62;<br />
</code></p>
<p>Le résultat peut être affiché sur une page de <a href="http://demo.iptima.com/phone/phone.php" target="_blank" title="aller sur le site Wikipedia (s'ouvre dans une nouvelle fenêtre)">démonstration</a>, et sa version mobile visualisée à l&#8217;adresse <em>http://demo.iptima.com/phone/phone.php</em>, par exemple avec <a href="http://www.opera.com/mini/demo/" target="_blank" title ="aller sur le site d'Opera Mini Demo (s'ouvre dans une nouvelle fenêtre)">Opera Mini Demo</a>.</p>
<p>Nous avons utilisé <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> comme exemple, mais le contenu pourrait aussi être servi avec des documents au format <abbr title="Portable Document Format">Pdf</abbr>.</p>
<p><em>Nota</em>. Les textes et l&#8217;image de démonstration viennent de <a href="http://fr.wikipedia.org/" target="_blank" title="aller sur le site Wikipedia (s'ouvre dans une nouvelle fenêtre)">Wikipedia</a>. L&#8217;animation en <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> a été téléchargée sur <a href="http://www.amarasoftware.com/" target="_blank" title="aller sur le site Amara Software (s'ouvre dans une nouvelle fenêtre)">Amara Software</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2010/02/24/afficher-un-site-internet-sur-un-telephone-mobile-en-pratique/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Servir un contenu alternatif pour favoriser le référencement</title>
		<link>http://www.iptima.com/2010/02/23/servir-un-contenu-alternatif-pour-favoriser-le-referencement/</link>
		<comments>http://www.iptima.com/2010/02/23/servir-un-contenu-alternatif-pour-favoriser-le-referencement/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 11:04:45 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[Acrobat Reader]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[contenu alternatif]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[General Packet Radio Service]]></category>
		<category><![CDATA[Global System for Mobile Communications]]></category>
		<category><![CDATA[Gprs]]></category>
		<category><![CDATA[Gsm]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Iis]]></category>
		<category><![CDATA[Internet Information Service]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Lynx]]></category>
		<category><![CDATA[Pda]]></category>
		<category><![CDATA[Personal Digital Assistant]]></category>
		<category><![CDATA[Portable Document Format]]></category>
		<category><![CDATA[radio-téléphone]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[Seo]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[téléphone mobile]]></category>
		<category><![CDATA[W3c]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=411</guid>
		<description><![CDATA[Servir un contenu alternatif destiné aux téléphones mobiles peut sembler constituer une contrainte. Pour autant, cette possibilité peut constituer un avantage pour la Seo, comme nous allons le voir. Nous avons discuté récemment avec le fondateur d&#8217;un hôtel quatre étoiles&#8230; &#8230; <a href="http://www.iptima.com/2010/02/23/servir-un-contenu-alternatif-pour-favoriser-le-referencement/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Servir un contenu alternatif destiné aux téléphones mobiles peut sembler constituer une contrainte. Pour autant, cette possibilité peut constituer un avantage pour la <abbr title="Search Engine Optimization">Seo</abbr>, comme nous allons le voir.</p>
<p><span id="more-411"></span></p>
<p>Nous avons discuté récemment avec le fondateur d&#8217;un hôtel quatre étoiles&#8230; Le site Internet de son établissement a été conçu en <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>, voilà seulement deux ans. Or, en analysant le trafic de son site, l&#8217;hôtelier s&#8217;est aperçu que les demandes de connexion depuis un <em>Smartphone</em> étaient chaque jour plus nombreuses. Aussi, notre nouvel ami a demandé à une agence de refondre son site afin qu&#8217;il soient accessibles à l&#8217;ensemble des périphériques.</p>
<p>Nous n&#8217;avons pas encore découvert la nouvelle version du site de l&#8217;hôtel, mais la solution retenue constituerait un savant mélange de <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> et de <abbr title="HyperText Markup Language">Html</abbr>, optimisé au passage pour le référencement ! Nous n&#8217;osons imaginer le résultat : faudra-t-il naviguer de page en page pour recharger à chaque fois une animation en <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> ou voir un contenu plus statique dédié aux périphériques de poches ?</p>
<p>Ne serait-il pas préférable de laisser en place l&#8217;existant, avec une animation qui fonctionne plutôt bien, pour les ordinateurs <em>classiques</em> ? Une animation en <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> sophistiquée peut demander un investissement lourd : il serait dommage de jeter le bébé avec l&#8217;eau du bain ! Aussi ne vaut-il pas mieux servir un contenu alternatif et allégé pour les <em>Smartphones</em> : lors de la demande de connexion, le navigateur est reconnu et redirigé vers la version classique ou simplifiée du site.</p>
<p>Nous ne sommes pas un détracteur de <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> (mais de <a hreflang="en" href="http://www.microsoft.com/SILVERLIGHT/" target="_blank" title ="aller sur le site de Silverlight (s'ouvre dans une nouvelle fenêtre)">Silverlight</a> oui, pâle copie inutile et encombrante), car il faut reconnaître que cette technologie présente des avantages pour certains types de contenus&#8230; (Nous écrivons <em>certains</em>, car nous avons découvert récemment une pizzeria, dont le site au modeste contenu est exclusivement accessible avec <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> ! Aussi avons-nous dû télécharger l&#8217;application sur notre modeste <em>Netbook</em> pour lire la carte : combien de clients perd cet établissement qui livre à domicile ?) D&#8217;abord, l&#8217;animation est téléchargée une fois pour toutes permettant, après une attente raisonnable, une navigation fluide et interactive. Ensuite, <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> permet au pixel ou à la seconde près d&#8217;appeler un élément graphique ou sonore.</p>
<p>Cependant, un site en <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> devrait toujours demander l&#8217;adhésion (<em>Opt-in</em>) du visiteur, avec un éventuel préchargement de l&#8217;animation en tâche de fond : certaines animations, au fond sonore inattendu, peuvent être éprouvantes lors de l&#8217;accès à la page <em>Web</em>. Si le visiteur n&#8217;adhère pas (ou ne dispose pas ou ne veut pas du lecteur), il faut alors lui proposer un contenu alternatif, qui pourra être alors le même que celui servi pour les téléphones mobiles.</p>
<p>(Il semble qu&#8217;un lecteur <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> pour périphériques mobiles soit bientôt disponible. Gageons que, avec la mésentente entre constructeurs et éditeurs et une bande passante disponible de plus en plus réduite, la solution mettra du temps à s&#8217;implanter ! Le recours intégral à cette technologie sera-t-il, d&#8217;ailleurs, souhaitable, ou faudra-t-il considérer que les animations viendront uniquement agrémenter le contenu ?)</p>
<p>Servir un contenu alternatif peut aussi (et surtout) constituer l&#8217;occasion d&#8217;améliorer sa visibilité dans les moteurs de recherche, et, par exemple, d&#8217;obvier aux difficultés de référencement de contenu plus dynamique comme les animations écrites en <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> ou les pages au format <abbr title="Portable Document Format">Pdf</abbr> (<a hreflang="en" href="http://www.google.com/" target="_blank" title ="aller sur le site Google (s'ouvre dans une nouvelle fenêtre)">Google</a> en a néanmoins considérablement amélioré le référencement, au cours de ces derniers mois).</p>
<p>Naturellement, ce contenu sera sémantique, car les moteurs de recherche aiment l&#8217;accessibilité. Pour y parvenir, il suffit d&#8217;appliquer quelques règles simples :</p>
<ul>
<li>hiérarchiser l&#8217;information en utilisant les niveaux de titre (de <em>h1</em> à <em>h6</em>, du plus important ou moins important) ;</li>
<li>utiliser avec prudence l&#8217;emphase ;</li>
<li>légender les images, lorsque leur contenu est significatif ;</li>
<li>choisir avec soin le titre des pages, leur description et leur mots clef ;</li>
<li>optimiser la navigation ;</li>
<li>s&#8217;assurer de la compliance du code aux normes définies par le <abbr title="World Wide Web Consortium">W3c</abbr>.</li>
</ul>
<p>Sur le plan graphique, la feuille de style permettra ensuite le formatage du site, et autorisera d&#8217;afficher un titre de deuxième niveau avec des caractères plus gros que ceux d&#8217;un titre de premier niveau ou de supprimer l&#8217;emphase sur certains mots-clef (il ne s&#8217;agit en aucun de contenu caché ou de <em>Cloacking</em>).</p>
<p>Pour vérifier la compliance d&#8217;un site à ces pratiques, il suffit d&#8217;utiliser un navigateur en mode texte, comme <a hreflang="en" href="http://lynx.isc.org/" target="_blank" title ="aller sur le site de Lynx (s'ouvre dans une nouvelle fenêtre)">Lynx</a> : on verra le rendu qui apparaîtra pour les moteurs de recherche. Dans un deuxième temps, le contenu sera validé par <a hreflang="en" href="http://validator.w3.org/mobile/" target="_blank" title ="aller sur le site du W3C mobileOK Checker (s'ouvre dans une nouvelle fenêtre)">W3C mobileOK Checker</a>.</p>
<p>Enfin, pourquoi ne pas demander aux moteurs de recherche de ne référencer que le contenu alternatif, par exemple avec un fichier <em>robots.txt</em> ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2010/02/23/servir-un-contenu-alternatif-pour-favoriser-le-referencement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Les listes en Html</title>
		<link>http://www.iptima.com/2008/10/28/les-listes-en-html/</link>
		<comments>http://www.iptima.com/2008/10/28/les-listes-en-html/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 10:34:24 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WebDesign]]></category>
		<category><![CDATA[balises]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[listes]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[typographie]]></category>
		<category><![CDATA[Xhtml]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=267</guid>
		<description><![CDATA[Plutôt que recourir à des tirets, Html ou Xhtml permet de gérer harmonieusement les listes. Ainsi, la présentation est améliorée, et les listes prennent une valeur sémantique. On distingue trois catégories : les listes non-ordonnées, les listes ordonnées, les listes &#8230; <a href="http://www.iptima.com/2008/10/28/les-listes-en-html/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Plutôt que recourir à des tirets, <abbr title="HyperText Markup Language">Html</abbr> ou <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> permet de gérer harmonieusement les listes. Ainsi, la présentation est améliorée, et les listes prennent une valeur sémantique. On distingue trois catégories :</p>
<p><span id="more-267"></span></p>
<ul>
<li>les listes non-ordonnées,</li>
<li>les listes ordonnées,</li>
<li>les listes de définitions.</li>
</ul>
<p>Les balises utilisées dans les listes ont les significations suivantes dans la langue de Shakespeare :</p>
<dl>
<dt>ul</dt>
<dd>Unordered Lists</dd>
<dt>ol</dt>
<dd>Ordered Lists</dd>
<dt>li</dt>
<dd>List items</dd>
<dt>dl</dt>
<dd>Definition Lists</dd>
<dt>dt</dt>
<dd>Definition Term</dd>
<dt>dl</dt>
<dd>Definition Description</dd>
</dl>
<p>Les listes ordonnées permettent une énumération simple. Les listes ordonnées appliquent un chiffre devant chaque <em>item</em>. Contrairement à leur nom, les listes de définition peuvent être aussi utilisées pour relier des éléments entre eux.</p>
<p>Les listes débutent toujours par la balise <strong>&#60;ul&#62;</strong> et finissent par la balise <strong>&#60;/ul&#62;</strong> pour une liste non-ordonnée ou <strong>&#60;ol&#62;</strong> et <strong>&#60;/ol&#62;</strong> pour une liste ordonnée. À l&#8217;intérieur, on utilise les balises <strong>&#60;li&#62;</strong> et <strong>&#60;/li&#62;</strong>. Les listes de définition se comportent différemment.</p>
<h2>Les listes ordonnées</h2>
<p>Exemple&#8230;</p>
<p class="left"><code>&#60;ul&#62;<br />
&#160;&#160;&#60;li&#62;papier,&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;ciseaux,&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;cailloux.&#60;/li&#62;<br />
&#60;/ul&#62;</code></p>
<p>Affichera&#8230;</p>
<ul>
<li>papier,</li>
<li>ciseaux,</li>
<li>cailloux.</li>
</ul>
<p>La feuille de style gère le retrait du paragraphe et l&#8217;aspect de la puce.</p>
<h2>Les listes non-ordonnées</h2>
<p>Exemple&#8230;</p>
<p class="left"><code>&#60;ol&#62;<br />
&#160;&#160;&#60;li&#62;papier,&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;ciseaux,&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;cailloux.&#60;/li&#62;<br />
&#60;/ol&#62;</code></p>
<p>Affichera&#8230;</p>
<ol>
<li>papier,</li>
<li>ciseaux,</li>
<li>cailloux.</li>
</ol>
<p>La feuille de style gère le retrait de paragraphe et l&#8217;aspect de la numérotation. Pour des raisons esthétiques, on peut supprimer la numérotation et afficher <em>normalement</em> le texte. Pour autant, cette liste numérotée conservera sa valeur sémantique !</p>
<h3>Imbrication de listes</h3>
<p>Il est possible d&#8217;imbriquer des listes à l&#8217;infini pour des raisons logiques.</p>
<p><em>Nota</em>. On peut, avec <abbr title="Cascading Style Sheets">Css</abbr>, styler différemment chaque  <em>enfant</em> d&#8217;une liste.</p>
<p>Exemple&#8230;</p>
<p class="left"><code>&#60;ul&#62;<br />
&#160;&#160;&#60;li&#62;Aquitaine<br />
&#160;&#160;&#160;&#160;&#60;ul&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Dordogne,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Gironde,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Landes,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Lot-et-Garonne,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Pyrénées-Atlantiques.&#60;/li&#62;<br />
&#160;&#160;&#60;/ul&#62;<br />
&#160;&#160;&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;Languedoc-Roussillon<br />
&#160;&#160;&#160;&#160;&#60;ul&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Aude,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Gard,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Hérault,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Lozère,&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#60;li&#62;Pyrénées-Orientales.&#60;/li&#62;<br />
&#160;&#160;&#160;&#160;&#60;/ul&#62;<br />
&#160;&#160;&#60;/li&#62;<br />
&#60;/ul&#62;</code></p>
<p>Affichera&#8230;</p>
<ul>
<li>Aquitaine
<ul>
<li>Dordogne,</li>
<li>Gironde,</li>
<li>Landes,</li>
<li>Lot-et-Garonne,</li>
<li>Pyrénées-Atlantiques.</li>
</ul>
</li>
<li>Languedoc-Roussillon
<ul>
<li>Aude,</li>
<li>Gard,</li>
<li>Hérault,</li>
<li>Lozère,</li>
<li>Pyrénées-Orientales.</li>
</ul>
</li>
</ul>
<p>Pour simplifier la gestion des balises, la méthode consiste à indenter le code, car le risque d&#8217;erreur est grand de se tromper. La plupart des logiciels d&#8217;édition de code propose une coloration ou une mise en évidence des balises ouvrantes et fermantes. Cette fonction est fort utile.</p>
<p>De même, peut-on placer entre <strong>&#60;li&#62;</strong> et <strong>&#60;/li&#62;</strong> des paragraphes, des images&#8230;</p>
<p>Exemple&#8230;</p>
<p class="left"><code>&#60;ul&#62;<br />
&#160;&#160;&#60;li&#62;Papiers<br />
&#160;&#160;&#160;&#160;&#60;p&#62;<br />
&#160;&#160;&#160;&#160;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.<br />
&#160;&#160;&#160;&#160;&#60;/p&#62;<br />
&#160;&#160;&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;Ciseaux&#60;/li&#62;<br />
&#160;&#160;&#60;li&#62;Cailloux&#60;/li&#62;<br />
&#60;/ul&#62;</code></p>
<p>Affichera&#8230;</p>
<ul>
<li>Papiers
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi.</p>
</li>
<li>Ciseaux</li>
<li>Cailloux</li>
</ul>
<h2>Listes de définition</h2>
<p>Les listes de définition débutent toujours le conteneur <strong>&#60;dl&#62;</strong> et finissent par <strong>&#60;/dl&#62;</strong>. À l&#8217;intérieur, on utilise les balises <strong>&#60;dt&#62;</strong> et <strong>&#60;/dt&#62;</strong> qui indique le terme à définir, puis <strong>&#60;dd&#62;</strong> et <strong>&#60;/dd&#62;</strong> pour donner la définition.</p>
<p>Dans une même listes de définitions, il peut y avoir plusieurs balises <strong>&#60;dt&#62;</strong> et <strong>&#60;/dt&#62;</strong> et plusieurs balises <strong>&#60;dd&#62; </strong>et <strong>&#60;/dd&#62;</strong>  qui peuvent être mélangées, <strong>mais</strong> évidemment une seule balise <strong>&#60;dl&#62;</strong> et <strong>&#60;/dl&#62;</strong>.</p>
<p>Par exemple, pour définir les mois de janvier et de février, on écrira&#8230;</p>
<p class="left"><code>&#60;dl&#62;<br />
&#160;&#160;&#60;dt&#62;Janvier&#60;/dt&#62;<br />
&#160;&#160;&#60;dd&#62;Premier mois de l'année.&#60;/dd&#62;<br />
&#160;&#160;&#60;dt&#62;Février&#60;/dt&#62;<br />
&#160;&#160;&#60;dd&#62;Deuxième mois de l'année.&#60;/dd&#62;<br />
&#60;/dl&#62;</code></p>
<p>Qui affichera&#8230;</p>
<dl>
<dt>Janvier</dt>
<dd>Premier mois de l&#8217;année.</dd>
<dt>Février</dt>
<dd>Deuxième mois de l&#8217;année.</dd>
</dl>
<p>L&#8217;affichage des listes de définition est différent entre <abbr title="Mozilla Firefox">Firefox</abbr> et <abbr title="Microsoft Internet Explorer">Msie</abbr>. Le premier navigateur reconnaît notamment la propriété <em>dd:before</em> dans une feuille de style.</p>
<p>Les listes de définition peuvent avoir un usage varié. Imaginons que nous soyons écrivain ; nous voulons informer les lecteurs de nos séances de dédicace. Nous pourrions écrire au <em>kilomètre</em>&#8230;</p>
<p><em>Jeudi 21 août 2008, de 17 h 00 à 18 h 30, présentation puis dédicace d&#8217;« En quête » de lecteurs à la Bibliothèque Municipale et, à partir de 18 h 30, à la Librairie Alphabétique de Bordeaux (Gironde).</em></p>
<p>En réorganisant et en factorisant l&#8217;information (c&#8217;est l&#8217;un des défis les plus intéressants d&#8217;<abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> selon nous !), nous pourrions recourir à la présentation suivante&#8230;</p>
<p class="left"><code>&#60;dl&#62;<br />
&#160;&#160;&#60;dt&#62;Jeudi 21 août 2008&#60;/dt&#62;<br />
&#160;&#160;&#60;dd&#62;Bordeaux (Gironde)&#60;/dd&#62;<br />
&#160;&#160;&#60;dt&#62;de 17 h 00 à 18 h 30&#60;/dt&#62;<br />
&#160;&#160;&#60;dd&#62;Bibliothèque Municipale&#60;/dd&#62;<br />
&#160;&#160;&#60;dt&#62;de 18 h 30 à 19 h 00&#60;/dt&#62;<br />
&#160;&#160;&#60;dd&#62;Librairie Alphabétique&#60;/dd&#62;<br />
&#160;&#160;&#60;dd&#62;Présentation puis dédicace d&#60;strong&#62;&#60;em&#62;« En Quête » de lecteurs&#60;/em&#62;&#60;/strong&#62;.&#60;/dd&#62;<br />
&#60;/dl&#62;</code></p>
<p>Qui affichera&#8230;</p>
<dl>
<dt>Jeudi 21 août 2008</dt>
<dd>Bordeaux (Gironde)</dd>
<dt>de 17 h 00 à 18 h 30</dt>
<dd>Bibliothèque Municipale</dd>
<dt>de 18 h 30 à 19 h 00</dt>
<dd>Librairie Alphabétique</dd>
<dd>Présentation puis dédicace d&#8217;<strong><em>« En Quête » de lecteurs</em></strong>.</dd>
</dl>
<p>De la même façon, nous pourrions nous servir d&#8217;une liste de définition pour présenter les commentaires (forcément élogieux !) de lecteurs sur notre ouvrage. Nous indiquerions comme <em>termes</em> l&#8217;identité du lecteur puis la date de l&#8217;avis, la <em>description</em> correspondant au libellé du commentaire.</p>
<p>Au-delà d&#8217;une présentation plus aérée, les moteurs de recherche référenceront mieux l&#8217;information présentée ainsi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/10/28/les-listes-en-html/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>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>Désactiver le Html dans les commentaires de WordPress</title>
		<link>http://www.iptima.com/2008/08/06/desactiver-le-html-dans-les-commentaires-de-wordpress/</link>
		<comments>http://www.iptima.com/2008/08/06/desactiver-le-html-dans-les-commentaires-de-wordpress/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 08:35:17 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[commentaires]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[Peter's Litteral Comments]]></category>
		<category><![CDATA[Xhtml]]></category>
		<category><![CDATA[Xhtml Strict]]></category>
		<category><![CDATA[Xhtml Transitional]]></category>

		<guid isPermaLink="false">http://www.iptima.com/?p=107</guid>
		<description><![CDATA[Parfois, les commentaires peuvent compromettre la validité Xhtml, stricte ou transitionnelle, d&#8217;une page. et, partant, compromettre son affichage dans les navigateurs. En effet, WordPress autorise par défaut l&#8217;usage de certaines balises. Or, certains commentateurs, qui ne maîtrisent pas la syntaxe &#8230; <a href="http://www.iptima.com/2008/08/06/desactiver-le-html-dans-les-commentaires-de-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Parfois, les commentaires peuvent compromettre la validité <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr>, stricte ou transitionnelle, d&#8217;une page. et, partant, compromettre son affichage dans les navigateurs. En effet, <em>WordPress</em> autorise par défaut l&#8217;usage de certaines balises. Or, certains commentateurs, qui ne maîtrisent pas la syntaxe informatique, oublient de fermer ces <em>tags</em>. Au demeurant, ces balises sont sans grand intérêt et ne visent qu&#8217;à décorer le texte. Sauf à reprendre chaque intervention une à une pour les conformer (!), il semble donc préférable de désactiver le <abbr title="HyperText Markup Language">Html</abbr> dans les commentaires.</p>
<p><span id="more-107"></span> </p>
<p>À cet effet, il convient de supprimer le code&#8230;</p>
<p class="center"><code>&#60;?php _e('You can use these tags:','news'); ?&#62;<br />&#60;?php echo allowed_tags(); ?&#62;</code></p>
<p>dans le fichier <em>comments.php</em>, au dessus de la déclaration de la zone de texte multiligne. Sur le plan technique, cette désactivation ne présente aucun intérêt, mais évite d&#8217;induire en erreur le commentateur.</p>
<p>Ensuite, il faut télécharger l&#8217;extension <a href="http://www.theblog.ca/wp-content/uploads/2008/04/peters_literal_comments1.0.1.zip" target="_blank" title="telecharger l'extension Peter's Litteral Comments">Peter&#8217;s Litteral Comments</a>, qui utilise la fonction <em>htmlspecialchars</em> de <abbr title="pre-hypertext processing">Php</abbr>. Après décompression de l&#8217;archive à la taille impressionnante de 1,51 Kilo-octets, il convient de la téléverser dans le répertoire <em>Plugins</em>, puis de l&#8217;activer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2008/08/06/desactiver-le-html-dans-les-commentaires-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ypthima Keys</title>
		<link>http://www.iptima.com/2007/09/22/ypthima-keys/</link>
		<comments>http://www.iptima.com/2007/09/22/ypthima-keys/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 18:40:22 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Access Keys]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[handicapés]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[raccourcis claviers]]></category>
		<category><![CDATA[Xhtml]]></category>
		<category><![CDATA[Ypthima Keys]]></category>

		<guid isPermaLink="false">http://www.iptima.com/2007/09/22/ypthima-keys/</guid>
		<description><![CDATA[&#60;addendum&#62; 15/09/2009. Nous laissons cet article pour mémoire, car nous ne maintenons plus l&#8217;extension, devenue incompatible avec les versions suivantes de WordPress. &#60;/addendum&#62; Dans le cadre de notre travail sur l&#8217;accessibilité, nous avons voulu trouver le moyen d&#8217;implémenter des raccourcis &#8230; <a href="http://www.iptima.com/2007/09/22/ypthima-keys/">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 pour mémoire, car nous ne maintenons plus l&#8217;extension, devenue incompatible avec les versions suivantes de <em>WordPress</em>.</p>
<p><strong>&#60;/addendum&#62;</strong></p>
<p>Dans le cadre de notre travail sur l&#8217;<a href="http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/" target="_blank" title="lire notre article sur l'accessibilité (s'ouvre dans une nouvelle fenêtre)">accessibilité</a>, nous avons voulu trouver le moyen d&#8217;implémenter des raccourcis claviers dans <em>WordPress</em>.</p>
<p><span id="more-60"></span></p>
<p>À l&#8217;issue de patientes recherches, nous avons fini par dénicher le <em>Plugin</em> <a href="http://anthologyoi.com/wordpress/Plugins/wordpress-access-keys.html" target="_blank" title="aller sur le site du Plugin Access Keys (s'ouvre dans une nouvelle fenêtre)">Access Keys</a>.</p>
<p>L&#8217;usage de ce module d&#8217;extension nécessite que le thème fonctionne avec les marqueurs de modèle (ou <em>template tags</em>) <em>wp_list_pages</em> et <em>wp_list_categories</em>. Or, nous utilisions <em>wp_list_cats</em>. En modifiant notre thème, nous avons pu apprendre que <em>wp_list_cats</em> était déprécié (attention, la syntaxe de ces deux marqueurs de modèle n&#8217;est pas identique).</p>
<p>Malheureusement, le plugiciel ne fonctionnait pas. Dans les commentaires sur <strong>Access Keys</strong>, l&#8217;allemand <a  href="http://www.advisign.de/" target="_blank" title="aller sur le site de Thomas Schvanke (s'ouvre dans une nouvelle fenêtre)">Thomas Schvenke</a> proposait une modification fonctionnelle du code original que nous avons adoptée.</p>
<p>En revanche, nous avons dû revoir l&#8217;écriture du <em>Plugin</em> afin que son affichage soit compatible <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> strict, et nous avons donné naissance à Ypthima Keys, qui peut être téléchargé sur notre <a  href="http://www.iptima.com/downloads-en/" target="_blank" title="aller sur la page Downloads (s'ouvre dans une nouvelle fenêtre)">weblogue</a>. Il suffit de placer le plugicel dans la racine du repertoire <em>Plugins</em> et de l’activer depuis l’interface d’administration de <em>WordPress</em>.</p>
<p><strong>Ypthima Keys</strong> s&#8217;administre grâce au bouton <em>Gérer</em>, onglet <em>Access Keys</em>. Il suffit d&#8217;assigner le caractère choisi aux pages et aux catégories — mais, comme nous l&#8217;avons vu dans notre article sur l&#8217;<a href="http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/" target="_blank" title="lire notre article sur l'accessibilité (s'ouvre dans une nouvelle fenêtre)">accessibilité</a>, le nombre de caractères réellement utilisables est réduit —, puis de cliquer sur le bouton <em>Save</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2007/09/22/ypthima-keys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Accessibilité avec WordPress</title>
		<link>http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/</link>
		<comments>http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 18:50:17 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[abréviations]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[Cascading Style Sheets]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[déficients visuels]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[feuilles de style]]></category>
		<category><![CDATA[handicapés]]></category>
		<category><![CDATA[handicaps]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[liens]]></category>
		<category><![CDATA[politique d'accessibilité]]></category>
		<category><![CDATA[raccourcis claviers]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[sémantique]]></category>
		<category><![CDATA[Tableaux]]></category>
		<category><![CDATA[W3c]]></category>
		<category><![CDATA[Xhtml]]></category>

		<guid isPermaLink="false">http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/</guid>
		<description><![CDATA[L&#8217;accessibilité des sites est une question fondamentale dans la conception de sites Web. Pour l&#8217;instant, aucune obligation n&#8217;est imposée aux maîtres-toile privés, mais il semble que la réglementation doive évoluer. Aussi avons-nous cherché une solution nous permettant de rendre accessible &#8230; <a href="http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>L&#8217;accessibilité des sites est une question fondamentale dans la conception de sites Web. Pour l&#8217;instant, aucune obligation n&#8217;est imposée aux <em>maîtres-toile</em> privés, mais il semble que la réglementation doive évoluer.</p>
<p><span id="more-56"></span></p>
<p>Aussi avons-nous cherché une solution nous permettant de rendre accessible notre weblogue.</p>
<p>Après avoir décrit les principes de l&#8217;accessibilité, nous essaierons de dégager des solutions pour <em>WordPress</em></p>
<h2>Considérations générales sur l&#8217;accessibilité</h2>
<p>Rendre un site accessible, c&#8217;est permettre sa consultation non seulement par des déficients visuels ou moteurs (sans compter les handicapés auditifs, cognitifs ou neurologiques), mais aussi par des internautes disposant d&#8217;une connexion en bas débit assurée par <abbr title="Réseau Téléphonique Commuté">Rtc</abbr> ou par <abbr title="Global System for Mobile Communications">Gsm</abbr>. Enfin, c&#8217;est respecter la navigation et prendre en compte les différences linguistiques. La connaissance de ces contraintes et des solutions correspondantes permet de mieux concevoir ses pages au bénéfice de l&#8217;ensemble de ses visiteurs.</p>
<h3>Accessibilité pour les déficients visuels</h3>
<p>Les déficients visuels correspondent aux mal-voyants, daltoniens et aux aveugles. Pour les mal-voyants, il faut autoriser un redimensionnement du texte en utilisant des tailles de police proportionnelles. Idéalement, il faudrait que l&#8217;ensemble des valeurs des feuilles de style soient exprimé en valeurs relatives, par exemple avec l&#8217;unité <em>em</em>. Le contraste doit être suffisant entre les entre couleur de texte et couleur de fond pour les daltoniens.</p>
<p>Quant aux non-voyants, ils utilisent des lecteurs Braille. JavaScript ne peut servir à naviguer ou à informer, sans équivalents textuels. Autrement exprimé, le langage JavaScript ne doit ajouter qu&#8217;une fonctionnalité supplémentaire mais ne jamais la remplacer. Pour la même raison, les textes ne peuvent être affichés sous la forme d&#8217;images. Les images doivent être légendées avec les balises <em>alt</em> et <em>title</em> ; lorsque les images ne sont pas significatives, c&#8217;est-à-dire décoratives, les balises peuvent être laissées vides.</p>
<p>Il faut utiliser <abbr title="Cascading Style Sheets">Css</abbr> et la sémantique <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> en renonçant à l&#8217;usage de tableaux pour la mise en page, hormis pour la présentation de données. Pour ne pas pas entretenir la confusion, un lien hypertexte doit s&#8217;ouvrir dans la même fenêtre. Il convient de préciser dans le lien hypertexte la langue utilisée, lorsque la ressource est dans une langue différente de celle du texte ; à cet effet, on utilise dans l&#8217;appel du lien une balise de forme <em></em> pour un document en anglais. Enfin, la signification des acronymes doit être précisée, car elle est lue par les lecteurs Braille.</p>
<p>Afin de valider l&#8217;accessibilité de son site pour les déficients visuels, la solution la plus probante consiste à utiliser un navigateur en mode texte : si chaque information est affichée, la conception du site est correcte.</p>
<p><!--next--></p>
<h3>Accessibilité pour les handicapés moteurs</h3>
<p>Comme les handicapés moteurs ne peuvent recourir à une souris, il faut envisager une navigation spécifique. À cet effet, le concepteur d&#8217;un site peut prévoir que la navigation s&#8217;opérera à l&#8217;aide la touche <em>tabulation</em> du clavier : chaque lien hypertexte (ou entrée de formulaire) est affecté d&#8217;une valeur <em>tabindex</em>. Prenons la valeur <em>tabindex=&nbsp;&raquo;3&#8243;</em> : depuis le haut de la page, trois appuis sur la touche <em>tabulation</em> donneront le <em>focus</em> à ce lien, qui s&#8217;ouvrira en pressant la touche <em>Entrée</em>. Pour informer le visiteur de la valeur, il suffit de l&#8217;indiquer dans la balise <em>title</em> du lien. Lorsqu&#8217;aucun <em>tabindex</em> n&#8217;est défini dans la page, l&#8217;appui sur la touche <em>tabulation</em> permet en principe de naviguer de lien en lien, du haut en bas de la page.</p>
<p>Une autre solution passe par la mise en œuvre de raccourcis claviers (ou <em>Accesskeys</em>) : l&#8217;utilisateur appuie sur une combinaison de touches pour parvenir à l&#8217;information souhaitée. Cette solution, séduisante en théorie, n&#8217;est pourtant pas la panacée. En effet, les raccourcis clavier demandent des contorsions digitales à un utilisateur handicapé ! Ensuite, même lorsqu&#8217;ils sont reconnus par les agents utilisateurs, les raccourcis clavier peuvent entrer en conflit avec les raccourcis implémentés dans ces navigateurs. Pour cette raison, le nombre d&#8217;<em>Accesskeys</em> est fort limité. Le gouvernement britannique fournit des directives d&#8217;accessibilité en proposant les raccourcis claviers suivants :</p>
<ul>
<li>S &#8211; passer la navigation</li>
<li>1 &#8211; accueil</li>
<li>2 &#8211; actualités</li>
<li>3 &#8211; plan du site</li>
<li>4 &#8211; recherche</li>
<li>5 &#8211; foire aux questions</li>
<li>6 &#8211; aide</li>
<li>7 &#8211; procédure de plainte ou contact</li>
<li>8 &#8211; conditions d&#8217;utilisation</li>
<li>9 &#8211; retour d&#8217;information</li>
<li>0 &#8211; liste des raccourcis clavier</li>
</ul>
<p>Ainsi, pour utiliser le raccourci clavier 0, il suffira d&#8217;ajouter au lien la valeur <em>Accesskey=&nbsp;&raquo;0&#8243;</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2007/09/21/accessibilite-avec-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>All in one SEO Pack</title>
		<link>http://www.iptima.com/2007/09/09/all-in-one-seo-pack/</link>
		<comments>http://www.iptima.com/2007/09/09/all-in-one-seo-pack/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 17:51:36 +0000</pubDate>
		<dc:creator>Vincent Roulet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[All in one SEO Pack]]></category>
		<category><![CDATA[Extensible HyperText Markup Language]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[HyperText Markup Language]]></category>
		<category><![CDATA[modules d'extension]]></category>
		<category><![CDATA[plugiciels]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[référencement]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Seo]]></category>
		<category><![CDATA[Xhtml]]></category>

		<guid isPermaLink="false">http://www.iptima.com/2007/09/09/all-in-one-seo-pack/</guid>
		<description><![CDATA[Pendant longtemps, nous ne sommes pas préoccupé de la Seo, autrement dit de l&#8217;optimisation de notre weblogue pour les moteurs de recherche. En effet, lorsque nous avions choisi notre thème, l&#8217;auteur avait mentionné Seo Ready, et nous l&#8217;avions cru sur &#8230; <a href="http://www.iptima.com/2007/09/09/all-in-one-seo-pack/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Pendant longtemps, nous ne sommes pas préoccupé de la <abbr title="Search Engine Optimization">Seo</abbr>, autrement dit de l&#8217;optimisation de notre weblogue pour les moteurs de recherche. En effet, lorsque nous avions choisi notre thème, l&#8217;auteur avait mentionné <em>Seo Ready</em>, et nous l&#8217;avions cru sur parole (!). Dès lors, nous pensions ne pas avoir à nous occuper du référencement.</p>
<p><span id="more-51"></span></p>
<p>Néanmoins, nous étions surpris de constater que les balises d&#8217;en-tête de nos pages étaient vides, aussi bien pour les mots-clés que pour la description. Cet inconvénient ne nous semblait guère important : <a hreflang="en" href="http://www.google.com/" target="_blank" title ="aller sur le site Google (s'ouvre dans une nouvelle fenêtre)">Google</a> ou <a hreflang="en" href="http://www.yahoo.com/" target="_blank" title ="aller sur le site Yahoo (s'ouvre dans une nouvelle fenêtre)">Yahoo</a> référencent prioritairement le contenu textuel des pages.</p>
<p><strong>&#60;addendum&#62;</strong></p>
<p><em>20/03/2008.</em></p>
<p>Depuis la rédaction de cet article, nous avons revu notre jugement&#8230; <a hreflang="en" href="http://www.google.com/" target="_blank" title ="aller sur le site Google (s'ouvre dans une nouvelle fenêtre)">Google</a> affiche systématiquement, dans les résultats d&#8217;une recherche, un extrait du champ <em>description</em>.</p>
<p><strong>&#60;/addendum&#62;</strong></p>
<p>En revanche, à l&#8217;usage, nous nous sommes aperçu avec effroi que, lorsque nous accédions aux archives de notre weblogue, le titre affiché était sous la forme <em>année</em> <em>mois</em> (en lettres et en anglais) <em>jour</em>. De même, le titre des catégories apparaîssait sous le libellé <em>notre_categorie category</em>&#8230;</p>
<p>Il nous fallait donc trouver une solution.</p>
<p>Nous avons choisi un <abbr title="Système de Gestion de Contenu (Content Management System - Cms - en anglais)">Sgc</abbr> pour ne pas avoir à travailler sur le <em>code source</em>, mais nous consentons à modifier les thèmes et les plugiciels lorsque nous en comprenons le fonctionnement.</p>
<p>À l&#8217;issue d&#8217;une tentative malheureuse de correction manuelle en modifiant le fichier <em>header.php</em> de notre thème, notre choix s&#8217;est porté sur un <a target="_blank" title="aller sur le site du Plugin All in One SEO Pack (s'ouvre dans une nouvelle fenêtre)"  href="http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/">Plugin</a>, qui semble populaire dans la communauté <em>WordPress</em> : <strong>All in One SEO Pack</strong>.</p>
<p>La taille de ces modules d&#8217;extension nous laisse toujours pantois. Pour un modeste fichier compressé de 13.3 Kilo-octets, <strong>All in One SEO Pack</strong> ajoute d&#8217;importantes fonctionnalités à <em>WordPress</em> !</p>
<p>Après la procédure classique décompression du plugiciel suivie du téléchargement dans le répertoire <em>wp-content/Plugins/</em> et activation dans l&#8217;interface d&#8217;administration de <em>WordPress</em>, <strong>All in One SEO Pack</strong> se gère depuis l&#8217;onglet <em>Options</em> grâce au bouton <em>All in One SEO</em>.</p>
<p>L&#8217;interface d&#8217;administration de <strong>All in One SEO Pack</strong> permet de choisir l&#8217;intitulé, la description et les mots-clés du weblogue. Concernant les titres de format, nous avons choisi de ne pas les modifier. Nous eûmes aimé modifier le champ <em>%date%</em>, mais nous n&#8217;avons pas su comment y parvenir. Cet éceuil n&#8217;est pas gênant : les dates s&#8217;affichent en français, conformément aux options générales déclarées dans <em>WordPress</em>. La date restent toujours sous la forme <em>année</em>, <em>mois</em>, <em>jour</em>, mais la logique, du général au particulier, est respectée. Nous dirons donc qu&#8217;il ne s&#8217;agit pas d&#8217;un bogue, mais d&#8217;une fonctionnalité !</p>
<p>Toutefois, nous avons modifié <em>Search Title Format</em> afin qu&#8217;il affiche <em>Résultats de la recherche</em>. Lorsque l&#8217;option par défaut est laissée en l&#8217;état, le titre reprend l&#8217;intitulé de la recherche en plaçant en capitales la première lettre de chaque mot, ce qui n&#8217;est pas conforme à l&#8217;usage en français.</p>
<p>Dans les fenêtres d&#8217;édition des articles et des pages est ajoutée une rubrique <em>All in One SEO Pack</em>, qui proposent trois champs : le titre, la description et les mots-clés. Le titre peut-être <em>copié collé</em> avec celui de l&#8217;article. La description doit être brève. Quant aux mots-clés, ce champ ne demande pas à être complété ; en effet, <strong>All in One SEO Pack</strong> complètent automatiquement ce champ avec les catégories et les marques sélectionnées lors de l&#8217;édition.</p>
<p><strong>&#60;addendum&#62;</strong></p>
<p><em>20/03/2008.</em></p>
<p>Attention&#8230; Pour des raisons évidentes (!), les champs <em>titre</em> et <em>description</em> ne doivent pas comporter de guillements, si l&#8217;on veut que le <abbr title="eXtensible HyperText Markup Language">Xhtml</abbr> soit bien formé.</p>
<p><strong>&#60;/addendum&#62;</strong></p>
<p>Après l&#8217;installation de <strong>All in One SEO Pack</strong>, la logique commande de modifier la balise <em>title</em> du fichier <em>head.php</em> comme suit : </p>
<p class="left"><code>&#60;?php wp_head(); ?&#62;</code></p>
<p>Enfin, nous avons lu que, dans les <em>permaliens</em>, accessibles depuis l&#8217;onglet <em>Options</em> de <em>WordPress</em>, il était utile de demander une structure basée sur la date et le titre. Cette méthode permet d&#8217;éviter une numérotation chaotique des articles ou des pages en cas de suppression !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iptima.com/2007/09/09/all-in-one-seo-pack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

