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

<channel>
	<title>CSS &#38; Webdesign &#187; Boucle</title>
	<atom:link href="http://css.4design.tl/tag/boucle/feed" rel="self" type="application/rss+xml" />
	<link>http://css.4design.tl</link>
	<description>Le blog de l&#039;intégrateur web</description>
	<lastBuildDate>Sun, 20 May 2012 15:30:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WordPress &#8212; Un blog version &#171;mobile&#187; sans plugin</title>
		<link>http://css.4design.tl/wordpress-version-mobile-de-votre-blog-sans-plugin</link>
		<comments>http://css.4design.tl/wordpress-version-mobile-de-votre-blog-sans-plugin#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:45:47 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Mizukara (3615 MyLife)]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[eeepc]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[portable]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=1578</guid>
		<description><![CDATA[Avec la réduction des tailles d&#8217;écrans qui va des téléphones portables aux ultra-portables comme l&#8217;eeePc, il devient urgent de proposer aux visiteurs une version mobile de votre blog. Il existe de nombreux plugins pour WordPress permettant d&#8217;obtenir une version mobile ou une version iPhone, mais je me suis amusé à chercher une solution minimaliste pour afficher mes derniers articles sans fioriture. J&#8217;ai écarté la mise en place d&#8217;un style switcher pour changer la feuille de style CSS standard par une CSS spécifique aux mobiles ; difficile dans ce cas de partager une URL de type http://mobile.css4design.com ! Sans compter la [...]]]></description>
			<content:encoded><![CDATA[<p>Avec la réduction des tailles d&#8217;écrans qui va des téléphones portables aux ultra-portables comme l&#8217;<a href="http://www.blogeee.net/">eeePc</a>, il devient urgent de proposer aux visiteurs une version mobile de votre blog. Il existe de nombreux <a href="http://wordpress.org/extend/plugins/tags/mobile">plugins pour WordPress</a> permettant d&#8217;obtenir une version mobile ou une version iPhone, mais je me suis amusé à chercher une solution minimaliste pour afficher <a href="http://mobile.css4design.com">mes derniers articles sans fioriture</a>.<span id="more-1578"></span></p>

<p>J&#8217;ai écarté la mise en place d&#8217;un <a href="http://css.alsacreations.com/Tutoriels-PHP/Faire-un-Style-switcher-changement-d-habillage-en-PHP">style switcher</a> pour changer la feuille de style CSS standard par une CSS spécifique aux mobiles ; difficile dans ce cas de partager une URL de type http://mobile.css4design.com ! Sans compter la reconnaissance des périphériques qui va du format 240 x 320 pixels des téléphones portables aux 800 x 480 pixels des premiers eeePC !</p>

<h3>Créez votre version mobile à partir des modèles de pages WordPress</h3>

<p>Je suis donc partie sur l&#8217;idée d&#8217;utiliser le moins de ressources possible (y compris intellectuelles) et de voir ce qu&#8217;il est possible de faire sans quitter WordPress. La création d&#8217;une nouvelle Page <em>Version mobile</em> basée sur une le <em>Modèle de page</em> <em>mobile.php</em> s&#8217;est imposée :</p>

<ol>
<li><p>Créez votre template mobile :</p>

<pre><code>        &lt;title&gt;&lt;/title&gt;


    &lt;div&gt;
            &lt;h1&gt;
                css4design | Version mobile du blogzine d'un intégrateur web
            &lt;/h1&gt;

        &lt;div&gt;
            &lt;h2&gt;&lt;/h2&gt;
            &lt;div&gt;&lt;/div&gt;
            &lt;p&gt;Publié le  par .&lt;/p&gt;
            &lt;hr /&gt;
        &lt;/div&gt;

    &lt;/div&gt;
</code></pre></li>
<li><p>Créez ensuite une nouvelle Page (Ecrire -&gt; Page),</p></li>
<li><p>Donnez-lui le titre <em>Version mobile</em>,</p></li>
<li><p>Sélectionnez le modèle de page <em>mobile</em> (Modèle de page -&gt; choix du modèle dans la liste déroulante),</p></li>
<li><p>Enregistrez, c&#8217;est fini.</p></li>
</ol>

<p>Ce <em>template</em> affiche les 5 derniers billets et il suffit de modifier le paramètre <code>showposts="5"</code> pour l&#8217;adapter à vos besoins en gardant à l&#8217;esprit que le poids de votre page fait partie des éléments à surveiller de près pour un affichage optimum sur un téléphone portable notamment.</p>

<p>En savoir plus :  sur la <a href="http://www.css4design.com/wordpress-astuces-pour-afficher-une-page-autonome-avec-wp_list_pages">création d&#8217;un modèle de page</a> et sur les <a href="http://www.css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu">boucles WorPress</a>.</p>

<h4>les plus</h4>

<ul>
<li>Basique, permet d&#8217;aller à l&#8217;essentiel : proposer un lien pour afficher les 5 derniers billets sans formatage, donc accessibles depuis n&#8217;importe quel périphérique accédant au web,</li>
<li>Service minimum, rapidité maximum ;)</li>
<li>l&#8217;identifiant dans le <code>body</code> permettra de styler légèrement cette version mobile de votre blog (changer la taille de la police de caractère, gérer les interlignage de texte, etc.)</li>
</ul>

<h4>Les moins</h4>

<ul>
<li>Il s&#8217;agit d&#8217;une page unique qui ne permet pas (d&#8217;après des tests rapides) l&#8217;affichage des commentaires de l&#8217;article,</li>
<li>Les liens internes pointent vers la version standard,</li>
<li>Il ne s&#8217;agit pas d&#8217;une <em>vraie</em> version mobile (manque le <a href="http://en.wikipedia.org/wiki/XHTML_Mobile_Profile">Doctype adapté</a>, code HTML non-valide au regard des possibilité des mobiles, page encore un peu lourde, etc.),</li>
</ul>

<h3>Ressources pour la conception de pages web &laquo;&nbsp;mobiles&nbsp;&raquo;</h3>

<p>Voici quelques liens en relation avec la conception de sites pour mobiles :</p>

<ul>
<li><p><a href="http://ready.mobi/">ready.mobi</a> &#8212; Cet outil de test gratuit évalue la conformité de votre page ou de votre site web au regard des standards et des bonnes pratiques spécifiques à ce secteur d&#8217;activité. Les résultats se présentent sous la forme d&#8217;une note de 1 à 5 et d&#8217;une analyse approfondie de la page pour en évaluer les performances sur un périphérique mobile. Nombreux conseils pour corriger les erreurs.</p></li>
<li><p><a href="http://dev.mobi/">dev.mobi</a> &#8212; Toutes les informations pour développer votre site mobile ready : guide du développeur, outil pour construire votre site rapidement, etc.</p></li>
<li><p><a href="http://www.css4design.com/votre-blog-sur-un-telephone-portable-really-ready">Votre blog sur un téléphone portable, really ready ?</a> &#8212; Présentation détaillée de <a href="http://ready.mobi/">ready.mobi</a> avec l&#8217;analyse de mon blog.</p></li>
<li><p><a href="http://validator.w3.org/mobile/">W3C mobileOK Checker [Beta]</a> &#8212; Make your Web site mobile-friendly! Déclinaison pour mobile du validateur du W3C.</p></li>
<li><p><a href="http://www.xml.com/pub/a/2004/04/14/mobile.html">Developing Wireless Content using XHTML Mobile</a> &#8212; Cet article montre comment créer un document XHTML adapté aux périphériques mobiles : mise en place de l&#8217;environnement de travail et transformation d&#8217;un document XHTML en WML.</p></li>
</ul>

<h3>Peut mieux faire !</h3>

<p>Coluche vous le dirait, cette solution ne promet pas le grand soir, mais juste à manger et à boire ;) Elle s&#8217;inscrit dans une démarche visant à proposer aux lecteurs différentes manières d&#8217;accéder aux articles en complément des flux RSS. N&#8217;hésitez pas à proposer vos idées pour l&#8217;améliorer (notamment pour afficher les commentaires, n&#8217;afficher qu&#8217;un seul article avec pagination pour alléger la page, etc.).</p>

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

<ul class='related_post'><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/petit-journal-du-web-septembre-2011' title='Le Petit Journal du Web &#8212; 09/2011'>Le Petit Journal du Web &#8212; 09/2011</a></li><li><a href='http://css.4design.tl/creation-de-site-wordpress-de-a-a-z-b-comme-basics' title='Création de site WordPress de A à Z &#8212; B comme Basics'>Création de site WordPress de A à Z &#8212; B comme Basics</a></li><li><a href='http://css.4design.tl/wordpress-a-z-allons-y' title='WordPress de A à Z &#8212; A comme Allons-y ! (on s&#039;organise)'>WordPress de A à Z &#8212; A comme Allons-y ! (on s&#039;organise)</a></li><li><a href='http://css.4design.tl/creer-son-site-web-avec-wordpress-de-a-a-z-avec-le-codex' title='Créer son site web avec WordPress de A à Z&#8230; avec le Codex'>Créer son site web avec WordPress de A à Z&#8230; avec le Codex</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=1578&amp;md5=60c423ef57713e756fc4fd1c8abf2deb" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/wordpress-version-mobile-de-votre-blog-sans-plugin/feed</wfw:commentRss>
		<slash:comments>34</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fwordpress-version-mobile-de-votre-blog-sans-plugin&amp;language=fr_FR&amp;category=text&amp;title=WordPress+%26%238212%3B+Un+blog+version+%26%23171%3Bmobile%26%23187%3B+sans+plugin&amp;description=Avec+la+r%C3%A9duction+des+tailles+d%26%238217%3B%C3%A9crans+qui+va+des+t%C3%A9l%C3%A9phones+portables+aux+ultra-portables+comme+l%26%238217%3BeeePc%2C+il+devient+urgent+de+proposer+aux+visiteurs+une+version+mobile+de+votre+blog.+Il+existe...&amp;tags=Boucle%2Ceeepc%2CMobile%2Cportable%2CTemplate%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()</title>
		<link>http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag</link>
		<comments>http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag#comments</comments>
		<pubDate>Fri, 08 Aug 2008 22:45:35 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[has_tag()]]></category>
		<category><![CDATA[is_tag()]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Tag]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=537</guid>
		<description><![CDATA[La lecture du Codex est un exercice que je pratique régulièrement et qui réserve parfois de bonnes surprises. Aujourd&#8217;hui, c&#8217;est le cas avec has_tag(). Bien qu&#8217;absent de la liste des nouvelles fonctionnalités, ce tag conditionnel à bien fait son apparition avec WordPress 2.6. Comment et pourquoi l&#8217;utiliser ? Magnéto : Comment utiliser has_tag() ? Contrairement à is_tag() qui permet d&#8217;afficher un contenu spécifique lorsqu&#8217;une page de tags est demandée et qui peut être placé n&#8217;importe où dans votre template, has_tag(), qui est très utile pour détecter si un billet contient un ou plusieurs mots-clés, doit se situer dans la boucle [...]]]></description>
			<content:encoded><![CDATA[<p>La lecture du <a href="http://codex.wordpress.org">Codex</a> est un exercice que je pratique régulièrement et qui réserve parfois de bonnes surprises. Aujourd&#8217;hui, c&#8217;est le cas avec <a href="http://codex.wordpress.org/Conditional_Tags#A_Tag_Page">has_tag()</a>. Bien qu&#8217;absent de la <a href="http://codex.wordpress.org/Version_2.6">liste des nouvelles fonctionnalités</a>, ce tag conditionnel à bien fait son apparition avec <a href="http://fr.wordpress.org/">WordPress 2.6</a>. Comment et pourquoi l&#8217;utiliser ? Magnéto : <span id="more-537"></span></p>

<h3>Comment utiliser has_tag() ?</h3>

<p>Contrairement à <code>is_tag()</code> qui permet d&#8217;afficher un contenu spécifique lorsqu&#8217;une page de tags est demandée et qui peut être placé n&#8217;importe où dans votre template, <code>has_tag()</code>, qui est très utile pour détecter si un billet contient un ou plusieurs mots-clés, doit se situer dans la <a href="http://codex.wordpress.org/fr:La_Boucle">boucle WordPress</a>.</p>

<p>Pour ce faire, il suffit d&#8217;ajouter le code suivant juste après la boucle <code>while</code>&#8230;
<pre>&lt;?php while (have_posts()) : the_post(); ?&gt;
    &lt;?php if ( has_tag('News') ) continue; ?&gt;</pre>
&#8230; et les billets comportant le tag News ne s&#8217;afficheront pas.</p>

<h4>Plus d&#8217;informations</h4>

<ul>
    <li><code>has_tag()</code> repère tous les billets avec un tag quelconque,</li>
    <li><code>has_tag('News')</code> pour les billets tagués &laquo;&nbsp;News&nbsp;&raquo;,</li>
    <li><code>has_tag('News','Insolite','Humour')</code> pour isoler les billets possédant tous les tags fournis en argument.</li>
    <li><strong>MAJ :</strong> il semble que la ligne au-dessus ne fonctionne pas. Pour arriver au même résultat écrivez plutôt :
<pre>&lt;?php
    if ( has_tag('News') || has_tag('Humour') || has_tag('Insolites') ) continue;
?&gt;</pre>
</li>
</ul>

<h3>Pourquoi utiliser <code>has_tag()</code> ?</h3>

<p>Dans le cadre de la réorganisation quasi-permanente de mon blog, j&#8217;ai fusionné les catégories <em>En bref</em> et <em>News</em> avec <em>Revue de web</em> pour réduire le nombre de rubriques. Or, seul le premier billet de cette catégorie doit s&#8217;afficher en haut du blog sous l&#8217;intitulé <em>C&#8217;est vite dit&#8230;</em> ; les anciens billets de cette catégories sont affichés plus bas dans la barre latérale.</p>

<p>Par ailleurs, pour garder une certaine cohérence avec les autres rubriques du blog, j&#8217;ai reclassé les billets appartenant auparavant à <em>News</em> dans des catégories plus précises. Ainsi, une News taguée &laquo;&nbsp;News&nbsp;&raquo; concernant WordPress est désormais classée dans&#8230; <em>WordPress</em> !</p>

<p>L&#8217;effet de bord, c&#8217;est que toutes les petites News se sont affichées dans la suite des billets du blog, ce que je voulais éviter pour des raisons esthétiques et éditoriales : je ne veux pas que le lecteur de passage qui atterrit sur la Home ait le sentiment que le blog est composé uniquement de petites brèves sans grande valeur ajoutée ;)</p>

<p>Dans un cas comme ça, <code>has_tag()</code> s&#8217;avère donc indispensable pour isoler tous les billets partageant les mêmes tags sans se soucier de leurs catégories respectives. <strong>WordPress, quelle souplesse !</strong></p>

<p>Allez, <code>has_fun()</code> ^_^</p>

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

<ul class='related_post'><li><a href='http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields' title='WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)'>WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)</a></li><li><a href='http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this' title='WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)'>WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)</a></li><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/le-petit-journal-du-web-novembre-2011' title='Le petit journal du web &#8212; WordPress, développement web, etc.'>Le petit journal du web &#8212; WordPress, développement web, etc.</a></li><li><a href='http://css.4design.tl/wordpress-a-z-extension-plugin' title='WordPress de A à Z &#8212; E comme Extensions (les plugins)'>WordPress de A à Z &#8212; E comme Extensions (les plugins)</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=537&amp;md5=a839e3d086364407ebb1e49843d0619c" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fwordpress-26-un-nouveau-tag-conditionnel-avec-has_tag&amp;language=fr_FR&amp;category=text&amp;title=WordPress+2.6+%26%238212%3B+un+nouveau+%26quot%3Btag%26quot%3B+conditionnel+avec+has_tag%28%29&amp;description=La+lecture+du+Codex+est+un+exercice+que+je+pratique+r%C3%A9guli%C3%A8rement+et+qui+r%C3%A9serve+parfois+de+bonnes+surprises.+Aujourd%26%238217%3Bhui%2C+c%26%238217%3Best+le+cas+avec+has_tag%28%29.+Bien+qu%26%238217%3Babsent+de+la+liste+des...&amp;tags=Boucle%2Chas_tag%28%29%2Cis_tag%28%29%2CLoop%2CTag%2CTutoriels%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)</title>
		<link>http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields</link>
		<comments>http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields#comments</comments>
		<pubDate>Thu, 07 Aug 2008 02:29:03 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Balise meta]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[Customs fields]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Magazine]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=503</guid>
		<description><![CDATA[Les champs personnalisés permettent d&#8217;ajouter des informations avant ou après le contenu de votre billet (dans la boucle WordPress) sans quitter l&#8217;interface de rédaction. Il s&#8217;agit d&#8217;associer une valeur (le contenu) à une clé choisie librement (ou parmi celles que vous avez déjà définie) et d&#8217;utiliser la fonction get_post_meta() dans votre thème. De nombreux thèmes à tendance &#171;&#160;magazine&#160;&#187; se servent des champs personnalisés pour afficher une image au-dessus d&#8217;un billet. Pour cela, on crée la clé illustration et on met l&#8217;URL de l&#8217;image dans le champs valeur. Voici un exemple concret : ID, 'illustration', $single = true); ?&#38;gt; Le contenu [...]]]></description>
			<content:encoded><![CDATA[<p>Les <a href="http://codex.wordpress.org/fr:Utiliser_les_champs_personnalis%C3%A9s">champs personnalisés</a> permettent d&#8217;ajouter des informations avant ou après le contenu de votre billet (dans la <a href="http://codex.wordpress.org/fr:La_Boucle">boucle WordPress</a>) sans quitter l&#8217;interface de rédaction. Il s&#8217;agit d&#8217;associer une valeur (le contenu) à une clé choisie librement (ou parmi celles que vous avez déjà définie) et d&#8217;utiliser la fonction <code>get_post_meta()</code> dans votre thème.<span id="more-503"></span></p>

<p>De nombreux thèmes à tendance &laquo;&nbsp;magazine&nbsp;&raquo; se servent des champs personnalisés pour afficher une image au-dessus d&#8217;un billet. Pour cela, on crée la <code>clé</code> <em>illustration</em> et on met l&#8217;URL de l&#8217;image dans le champs <code>valeur</code>.</p>

<p>Voici un exemple concret :</p>

<pre><code>ID, 'illustration', $single = true); ?&amp;gt;
</code></pre>

<p>Le contenu de la clé <em>llustration</em> est placée dans la variable <code>$image</code> pour l&#8217;afficher plus loin :</p>

<pre><code>&amp;lt;img src=&amp;quot;" /&amp;gt;
</code></pre>

<p>C&#8217;est déjà fini ?</p>

<h3>Les problèmes commencent</h3>

<p>Maintenant, il faut saisir l&#8217;URL de votre image dans la section <em>Champs personnalisés</em> en bas de l&#8217;interface d&#8217;édition du billet.</p>

<p>Oui, mais voilà, cette URL, vous ne l&#8217;a connaissez pas encore. En effet, WordPress s&#8217;occupe lui-même de l&#8217;emplacement de votre image dans un dossier du genre <code>/files/2008/08/...</code></p>

<h4>1ère solution : télécharger l&#8217;image via un client FTP</h4>

<p>Certains ont résolu le problème en créant un répertoire dédié pour ces images et en les téléchargeant avec un client FTP. Mais à l&#8217;usage, ça reste très lourd au point d&#8217;enlever presque tout intérêt à l&#8217;affichage d&#8217;images par ce moyen.</p>

<pre><code>&amp;lt;img src=&amp;quot;mes-images/" /&amp;gt;
</code></pre>

<p>Toutefois, il existe une option sous forme de case à (dé)cocher (<em>organiser mes fichiers envoyés dans des dossiers mensuels et annuels</em>) pour mettre toute les images en vrac dans le dossier <code>/uploads</code>. Comme ça, il suffit d&#8217;ajouter le nom du répertoire dans le thème et de saisir le nom de l&#8217;image dans le champ <code>valeur</code> :</p>

<pre><code>&amp;lt;img src=&amp;quot;uploads/" /&amp;gt;
</code></pre>

<p>Toutefois, ces images en vrac ne sont pas une solution satisfaisante : on risque de créer plus de problèmes sur le long terme que ça en a réglé sur le court terme. Et puis, il est toujours nécessaire de télécharger les images à part, même si l&#8217;on économise la création d&#8217;un dossier ;)</p>

<h4>2ème solution : utiliser la boite de dialogue prévue&#8230;</h4>

<p>En réfléchissant un peu à la question, j&#8217;ai trouvé une petite astuce toute simple pour connaitre cette fameuse URL en évitant de mettre le bazar dans <code>/uploads</code></p>

<ol>
    <li>Ajouter une image comme vous le feriez si vous vouliez l&#8217;afficher dans le billet,</li>
    <li> Copier l&#8217;adresse de l&#8217;image qui apparait dans la boite de dialogue.</li>
    <li>Fermer la fenêtre d&#8217;importation</li>
    <li>Coller l&#8217;adresse de votre image dans le champ <code>valeur</code> à côté de la <code>clé</code> <em>llustration</em> dans les Champs personnalisé.</li>
</ol>

<p>Voilà, c&#8217;est simple, efficace et sans bavure ;)</p>

<p><strong>MAJ :</strong> Dans la version 2.7, l&#8217;adresse n&#8217;apparait plus dans la boite de dialogue d&#8217;importation. Il est nécessaire d&#8217;incorporer l&#8217;image pour obtenir l&#8217;url.</p>

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

<ul class='related_post'><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag' title='WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()'>WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()</a></li><li><a href='http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this' title='WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)'>WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)</a></li><li><a href='http://css.4design.tl/wordpress-une-meilleure-indexation-avec-not-at-all-in-one-seo' title='WordPress &#8212; Une meilleure indexation avec Not at All in One SEO'>WordPress &#8212; Une meilleure indexation avec Not at All in One SEO</a></li><li><a href='http://css.4design.tl/quelques-notes-sur-un-theme-magazine-de-a-a-z-e-comme-epure' title='Quelques notes sur un thème magazine de A à Z &#8212; E comme épure'>Quelques notes sur un thème magazine de A à Z &#8212; E comme épure</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=503&amp;md5=8438c45fb39fea52c7435009929a7c07" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields/feed</wfw:commentRss>
		<slash:comments>49</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fwordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields&amp;language=fr_FR&amp;category=text&amp;title=WordPress+%26%238212%3B+G%C3%A9rer+les+images+avec+les+champs+personnalis%C3%A9s+%28Customs+fields%29&amp;description=Les+champs+personnalis%C3%A9s+permettent+d%26%238217%3Bajouter+des+informations+avant+ou+apr%C3%A8s+le+contenu+de+votre+billet+%28dans+la+boucle+WordPress%29+sans+quitter+l%26%238217%3Binterface+de+r%C3%A9daction.+Il+s%26%238217%3Bagit+d%26%238217%3Bassocier+une+valeur+%28le...&amp;tags=Balise+meta%2CBoucle%2CCustoms+fields%2CLoop%2CMagazine%2CTutoriels%2CURL%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)</title>
		<link>http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this</link>
		<comments>http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this#comments</comments>
		<pubDate>Sun, 03 Aug 2008 18:34:29 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Menu]]></category>
		<category><![CDATA[Onglets]]></category>
		<category><![CDATA[Tutoriels]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=374</guid>
		<description><![CDATA[Je suis souvent d&#8217;avis qu&#8217;un bon texte vaut mille images, mais dans le cas du bookmarklet Press This présent dans WordPress 2.6, c&#8217;est la capture d&#8217;écran du billet de Nioumedia sur Press This qui m&#8217;a incitée à tester l&#8217;engin. Plutôt efficace pour la saisie de texte (avec éditeur WYSIWYG), le choix des catégories ou l&#8217;ajout d&#8217;un tag. On peut ensuite enregistrer le billet pour le modifier ultérieurement ou le publier de suite. Un nouveau menu à onglets sur ce blog ! Ce bookmarklet m&#8217;a tellement emballé que j&#8217;ai mis en place un deuxième menu à onglets sous les catégories du [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis souvent d&#8217;avis qu&#8217;un bon texte vaut mille images, mais dans le cas du bookmarklet <em>Press This</em> présent dans WordPress 2.6, c&#8217;est la capture d&#8217;écran du <a href="http://nioumedia.com/2008/07/17/press-this-un-nouveau-bookmarklet-sur-wordpress-26/">billet de Nioumedia sur Press This</a> qui m&#8217;a incitée à tester l&#8217;engin. Plutôt efficace pour la saisie de texte (avec éditeur WYSIWYG), le choix des catégories ou l&#8217;ajout d&#8217;un tag. On peut ensuite enregistrer le billet pour le modifier ultérieurement ou le publier de suite.<span id="more-374"></span></p>

<h3>Un nouveau menu à onglets sur ce blog !</h3>

<p>Ce bookmarklet m&#8217;a tellement emballé que j&#8217;ai mis en place un deuxième menu à onglets sous les catégories du blog pour accueillir les fruits de mes petites découvertes au gré du surf quotidien. J&#8217;ai inauguré cette zone avec un onglet &laquo;&nbsp;News&nbsp;&raquo; pour des brèves plutôt généralistes. Mais à l&#8217;avenir, ce menu devrait accueillir des onglets plus spécialisés comme &laquo;&nbsp;Insolite&nbsp;&raquo;, &laquo;&nbsp;ludique&nbsp;&raquo;, histoire de rendre le développement web un poil plus fun ;)</p>

<p>Je n&#8217;ai pas encore tout testé mais il semble possible de publier directement les images présentes sur une page <a href="http://flickr.com/">Flickr</a> ou les vidéos sur <a href="http://youtube.com/">Youtube</a> (peut-être même que des plugins verront le jour pour élargir l&#8217;offre). Pratique pour ajouter un onglet &laquo;&nbsp;Vidéo&nbsp;&raquo; et/ou un onglet &laquo;&nbsp;Image&nbsp;&raquo; à mon nouveau menu à onglets.</p>

<p>Les billets affichés sont donc sélectionnés selon le tag, ce qui est moins lourd que la création d&#8217;une catégorie qu&#8217;il faudrait éventuellement masquer dans d&#8217;autres boucles WordPress présentes sur le blog (ce qui me fait une partie de la réponse au <a href="http://www.css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu#comment-3278">commentaire</a> de <a href="http://www.onlike.net/">Kynerion</a> par la même occasion !)</p>

<p>A noter que j&#8217;ai quand même créé une sous-rubrique News pour garder une certaine cohérence avec la catégorie <a href="http://www.css4design.com/articles/revue-de-web">Revue de web</a>, mais ce n&#8217;est pas une obligation. Cette souplesse de WordPress est assez magique car elle permet toutes les fantaisies : on pourra facilement créer un billet dans une catégorie et ajouter le tag &laquo;&nbsp;News&nbsp;&raquo; pour afficher le billet à un autre emplacement du template.</p>

<p>De plus, dans la boucle qui suit, rien n&#8217;empêche d&#8217;afficher des billets contenant d&#8217;autres tags pour avoir encore plus de souplesse dans l&#8217;étiquettage des billets. Il suffira de remplacer <code>'tag=news&amp;showposts=3'</code> par <code>'tag=news+insolite+comique&amp;showposts=3'</code>.</p>

<h3>N&#8217;ayons plus peur du loop !</h3>

<p>Pour les billets taggués &laquo;&nbsp;News&nbsp;&raquo;, par exemple, il suffit de faire la boucle suivante :
<pre>&lt;div id="tab6"&gt;
    &lt;ul&gt;
        &lt;?php /* Affichage des toutes les news */
        query_posts('tag=news&amp;showposts=3'); ?&gt;
        &lt;?php while (have_posts()) : the_post(); ?&gt;
        &lt;li&gt;
            &lt;h2&gt;&lt;a href="&lt;?php the_permalink() ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;
            &lt;/h2&gt;
            &lt;div&gt;
                &lt;?php the_content('Lire la suite &amp;raquo;'); ?&gt;
            &lt;/div&gt;
        &lt;/li&gt;&lt;!-- end .post --&gt;
        &lt;?php endwhile; ?&gt;
    &lt;/ul&gt;
    &lt;p&gt;&lt;a href="/tag/news" title="Tous les articles tagué news"&gt;Voir toutes les news&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</pre>
Et pour faire plaisir à <a href="http://blog.burninghat.net/">burningHat</a> et <a href="http://blog.neovov.com/">Neovov</a>, j&#8217;ai mis les brèves dans <a href="http://www.css4design.com/granularisation-du-balisage-html-parce-que-nos-documents-le-valent-bien">une belle liste non ordonnée</a> :D Pour plus d&#8217;information sur les boucles utilisées sur ce blogzine, je vous invite à lire <a href="http://www.css4design.com/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu">Danse avec les loops : un thème WordPress mis à nu</a>.</p>

<p>Bref, je n&#8217;ai pas encore fait le tour de cette nouvelle version de WordPress, mais il semble que l&#8217;équipe de développement se dirige vers la création d&#8217;une véritable plate-forme de CMS aussi complète qu&#8217;efficace.</p>

<h3>Mais que manque-t-il donc à WordPress ?</h3>

<p>Tiens, ça me rappelle que j&#8217;ai un brouillon en cours sur ce qui manque à WordPress par rapport à d&#8217;autres outils de gestion de contenu. Comme je suis loin de tous les connaitre, et si le coeur vous en dit, vous pouvez m&#8217;aider en me donnant des pistes du genre : &laquo;&nbsp;sur Joomla! on peut faire ça facilement&nbsp;&raquo;, ou &laquo;&nbsp;avec SPIP, je fais ce que je veux avec mes cheveux&nbsp;&raquo;&#8230; Enfin, vous voyez l&#8217;idée générale ;) Merci par avance !</p>

<h4>La chaine ! la chaine ! la chaine !</h4>

<p>Si j&#8217;osais, <strong>je lancerai bien une chaine de blog sur ce qui manque à WordPress</strong> pour permettre à chacun d&#8217;y réfléchir à tête reposée dans le cadre d&#8217;un billet, ce qui me permettra ensuite de compiler les contributions de chacun(e).</p>

<p><strong>Allez, j&#8217;ose :</strong> <a href="http://www.fran6art.com/">tous</a> <a href="http://blog.burninghat.net/">les</a> <a href="http://www.lepotlatch.org/">lecteurs</a> <a href="http://www.logiste.be/">et</a> <a href="http://daria.servhome.org/">lectrices</a> <a href="http://yves.sur-le-web.fr/">sont</a> <a href="http://www.niss.fr/">invitées</a> <a href="http://wordpress-tuto.fr/">à</a> <a href="http://www.wordpress-fr.net/">participer</a> <a href="http://www.blomig.com">à</a> <a href="http://monetiweb.com/">cette</a> <a href="http://www.onlike.net/">chaine</a> <a href="http://blog.darklg.fr/">de</a> <a href="http://cui.burp.fr/">blog</a> <a href="http://callmepep.org/">d&#8217;intérêt</a> <a href="http://www.superchinois.net/">public</a> <a href="http://www.nowhereelse.fr">!</a><a href="http://www.webinventif.fr/">!</a><a href="http://www.patricealbertus.net/">!</a></p>

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

<ul class='related_post'><li><a href='http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu' title='Danse avec les loops #1 : un thème WordPress mis à nu'>Danse avec les loops #1 : un thème WordPress mis à nu</a></li><li><a href='http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag' title='WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()'>WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()</a></li><li><a href='http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields' title='WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)'>WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)</a></li><li><a href='http://css.4design.tl/liens-javascript-jquery' title='390 ressources Javascript &amp; jQuery'>390 ressources Javascript &amp; jQuery</a></li><li><a href='http://css.4design.tl/s-il-ne-devait-rester-qu-un-tutoriel-pour-faire-un-menu-css-avec-onglets' title='S&#039;il ne devait rester qu&#039;un tutoriel pour faire un menu CSS avec onglets&#8230;'>S&#039;il ne devait rester qu&#039;un tutoriel pour faire un menu CSS avec onglets&#8230;</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=374&amp;md5=b05f5e4d30957dfc30dfc4cdf27152ee" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this/feed</wfw:commentRss>
		<slash:comments>37</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fwordpress-26-mes-news-carburent-a-press-this&amp;language=fr_FR&amp;category=text&amp;title=WordPress+2.6+%26%238212%3B+Mes+news+carburent+%C3%A0+%26quot%3BPress+This%26quot%3B+%28chaine+inside%29&amp;description=Je+suis+souvent+d%26%238217%3Bavis+qu%26%238217%3Bun+bon+texte+vaut+mille+images%2C+mais+dans+le+cas+du+bookmarklet+Press+This+pr%C3%A9sent+dans+WordPress+2.6%2C+c%26%238217%3Best+la+capture+d%26%238217%3B%C3%A9cran+du+billet+de+Nioumedia...&amp;tags=Boucle%2CLoop%2CMenu%2COnglets%2CTutoriels%2CWordPress%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Danse avec les loops #1 : un thème WordPress mis à nu</title>
		<link>http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu</link>
		<comments>http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu#comments</comments>
		<pubDate>Sat, 19 Jul 2008 17:30:23 +0000</pubDate>
		<dc:creator>Bruno Bichet</dc:creator>
				<category><![CDATA[Conception de site web]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Design & Graphisme]]></category>
		<category><![CDATA[Ergonomie & Accessibilité]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Boucle]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[Magazine]]></category>
		<category><![CDATA[Onglets]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Thème]]></category>
		<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.css4design.com/?p=271</guid>
		<description><![CDATA[Après le thème Agrumz et après avoir mis en place un thème provisoire en attendant, voici SquaryBluevie, le nouveau thème bleu et carré (et un peu vert aussi) pour css4design. Il ne s&#8217;agit pas vraiment d&#8217;un thème destiné à transformer ce blog en magazine, mais plutôt d&#8217;en faire un magazine qui ressemble à un blog, nuance, nuance&#8230; Un blogzine ? Oui, oui, c&#8217;est presque ça ! Comme promis, voici donc le premier volet de la série Danse avec les loops pour montrer ce qu&#8217;il y a sous le capot. Une ligne éditoriale moins linéaire Je ne m&#8217;étendrai pas trop sur [...]]]></description>
			<content:encoded><![CDATA[<p><del>Après le thème <em>Agrumz</em> et après avoir mis en place un thème provisoire en attendant, voici <em>SquaryBluevie</em>, le nouveau thème bleu et carré (et un peu vert aussi) pour css4design.</del> Il ne s&#8217;agit pas vraiment d&#8217;un thème destiné à transformer ce blog en magazine, mais plutôt d&#8217;en faire un magazine qui ressemble à un blog, nuance, nuance&#8230; Un <em>blogzine</em> ? Oui, oui, c&#8217;est presque ça ! Comme promis, voici donc le premier volet de la série <em>Danse avec les loops</em> pour montrer ce qu&#8217;il y a sous le capot. <span id="more-271"></span></p>

<h3>Une ligne éditoriale moins linéaire</h3>

<p>Je ne m&#8217;étendrai pas trop sur les interrogations existentielles qui m&#8217;ont poussé à changer le design et la structure de ce blog. La première chose, c&#8217;est que la succession simple des billets dans l&#8217;ordre chronologique inverse ne correspond plus vraiment à mes aspirations et aux différentes rubriques qui composent ce blog.</p>

<p>En effet, si le coeur de la ligne éditoriale est consacré à la création de site web en général en mettant l&#8217;accent sur les problématiques liées à l&#8217;intégration HTML et CSS et à la structuration des contenus, j&#8217;aborde d&#8217;autres sujets comme le Web 2.0, le e-commerce et il m&#8217;arrive de publier des billets d&#8217;humeur sur l&#8217;actualité du web.</p>

<p>Si ces sujets peuvent très bien s&#8217;accommoder d&#8217;une structure de blog classique, j&#8217;avais envie de mieux distinguer les articles de fond des billets plutôt brefs, tout en mettant en avant mes billets d&#8217;humeur. Le problème du blog &laquo;&nbsp;classique&nbsp;&raquo;, c&#8217;est que les billets disparaissent vite de la page d&#8217;accueil et perdent rapidement en visibilité, même si l&#8217;ami américain Google est là pour les faire remonter à la surface.</p>

<p>Il me fallait donc un système pour conserver une certaine unité dans la liste des articles en rapport avec les thèmes principaux abordés sur le blog tout en autorisant la publication de billets brefs et d&#8217;humeur. Un <em>blogzine</em>, en fait ;)</p>

<p>Voici pour les explications éditoriales. Jetons maintenant un oeil sous le capot !</p>

<h3>Hiérarchie des Templates</h3>

<p>Grâce à <a href="http://wordpress.org/">WordPress</a>, il est possible de construire un thème en utilisant uniquement le fichier <code>index.php</code>. Chaque requête &#8212; le fait de cliquer sur une catégorie, une page d&#8217;archive, le titre d&#8217;un billet, un tag, etc. &#8212; crée un contexte de variables qui pointera vers ce fichier.</p>

<p>Si l&#8217;on veut afficher les contenus différemment sur le billet seul, par exemple, deux solutions s&#8217;offrent à nous : les marqueurs conditionnels (<a href="http://codex.wordpress.org/Conditional_Tags">Conditional Tags</a>) comme <code>is_single()</code> ou la création d&#8217;un fichier <code>single.php</code>.</p>

<p>S&#8217;il s&#8217;agit de modifier une largeur de colonne au passage du billet seul, le marqueur conditionnel suffit. En revanche, si les modifications sont plus profondes, le fichier <code>single.php</code> sera sans doute plus adapté sachant que dans la plupart des cas, la solution passe par un mélange des deux techniques.</p>

<p>La première chose à prendre en compte est le nombre de maquettes dont on dispose pour afficher tous les contextes possibles, même si dans la plupart des cas, il n&#8217;est pas nécessaire de mettre en place tous les <em>Templates</em> possibles.</p>

<p>Pour y voir un peu plus clair, voici une table des correspondances entre les marqueurs, les templates et la hiérarchie qui leur est associée (<a href="http://codex.wordpress.org/Template_Hierarchy">Template Hierarchy</a>) :</p>

<p><a href="http://www.css4design.com/files/2008/07/hierarchie-templates-wordpress.png"><img class="alignnone size-full wp-image-274" src="http://www.css4design.com/files/2008/07/hierarchie-templates-wordpress.png" alt="" width="500" height="370" /></a></p>

<p>Pour <strong>SquaryBluevie</strong> par exemple, je voulais tout faire en utilisant uniquement le fichier <code>index.php</code>, mais bien que cela soit possible, le risque est grand de se mélanger les pinceaux entre la multitude des conditions&#8230;</p>

<p>J&#8217;ai donc ajouté à <code>index.php</code>, les fichiers <code>home.php</code>, <code>page.php</code> et <code>single.php</code>. Le reste étant composé de fichiers inclus de manière conditionnelle ou en fonction du <em>Template</em>. C&#8217;est le cas pour <code>header.php</code>, <code>footer.php</code>, <code>tutoriels.php</code>, <code>sidebar0.php</code>, <code>sidebar1.php</code>, <code>sidebar2.php</code>, etc.</p>

<h3>Un découpage en 7 grandes zones</h3>

<h4><span>1</span> L&#8217;en-tête</h4>

<p>Le fichier <code>header.php</code> est composé de deux grandes parties. La première contient les éléments qui apparaissent sur l&#8217;ensemble du blog. C&#8217;est la partie <em>header</em> :</p>

<ul>
    <li>Sommaire en haut à gauche,</li>
    <li><a href="http://www.wikio.fr/blogs/top">Classement Wikio</a> en haut à droite,</li>
    <li>Texte de présentation de l&#8217;auteur,</li>
    <li>Logo,</li>
    <li>Texte de présentation du blog,</li>
    <li>Liste des pages statiques en dessous.</li>
</ul>

<p>La deuxième partie <em>header2</em> est située juste en dessous :</p>

<ul>
    <li>Photo de l&#8217;auteur,</li>
    <li>Icône du flux RSS,</li>
    <li>Texte situé entre les deux.</li>
</ul>

<p>C&#8217;est ce texte qui affichera un contenu différent selon le contexte :</p>

<ul>
    <li>Dans une catégorie (<code>&lt;?php if ( is_category() ) : ?&gt;</code>), j&#8217;affiche la description de la catégorie</li>
    <li>Dans la page affichant l&#8217;article seul (<code>&lt;?php if ( is_single() ) : ?&gt;</code>), j&#8217;affiche une introduction générale pour les articles,</li>
    <li>Ni dans une page d&#8217;article ni dans une page statique ni dans une catégorie (<code>&lt;?php if ( !is_single() &amp;&amp; !is_page() &amp;&amp; !is_category() ) : ?&gt;</code>), j&#8217;affiche le dernier billet dans la rubrique &laquo;&nbsp;Editorial&nbsp;&raquo;.</li>
</ul>

<p>La description du blog est celle que l&#8217;on renseigne habituellement dans <em>Réglages -&gt; Options générales -&gt; Slogan</em> du panneau d&#8217;administration. L&#8217;appel du texte se faisant avec la fonction <code>&lt;?php bloginfo('description'); ?&gt;</code>. Comme il s&#8217;agit &#8212; avec la présentation de l&#8217;auteur &#8212; d&#8217;une zone de widgets, il est possible de remplacer aisément la description du blog par un texte libre (notamment si la description est trop courte) en utilisant un widget texte.</p>

<p>Ceci est possible grâce à la fonction suivante (voir ce billet consacré à la <a href="http://www.css4design.com/les-widgets-dans-wordpress-25-avec-widgetisator">création de zones widget dans WordPress</a>) :
<pre>&lt;?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('header2') ) : ?&gt;
&lt;div&gt;
    &lt;h2&gt;Description du blog&lt;/h2&gt;
    &lt;div&gt;&lt;?php bloginfo('description'); ?&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;</pre>
L&#8217;éditorial regroupe tous les billets appartenant à la catégorie&#8230; &laquo;&nbsp;editorial&nbsp;&raquo; ;) <a href="http://codex.wordpress.org/The_Loop">La boucle WordPress</a> utilisée est la suivante (<a href="http://codex.wordpress.org/The_Loop_in_Action">plus d&#8217;informations sur les boucles</a>) :
<pre>&lt;?php $my_query = new WP_Query('category_name=editorial&amp;showposts=1');
while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();?&gt;
    Votre boucle ici
&lt;?php endwhile; ?&gt;</pre>
Note : le fait d&#8217;utiliser le nom de la catégorie à la place de son <code>id</code>, permettra de faciliter la mise en place du thème : il suffira de créer la catégorie <em>Editorial</em> au lieu de chercher le numéro identifiant et de mettre les mains dans le code.</p>

<p>A l&#8217;affichage d&#8217;une catégorie, cet édito est remplacé par la description de la catégorie idoine. Cette description est accessible dans l&#8217;administration via <em>Gérer -&gt; Catégories -&gt; Description</em>. Le code à utiliser dans le Template est <code>&lt;?php echo category_description(); ?&gt;</code>. Enfin, lorsqu&#8217;on affiche l&#8217;article seul, cette description est remplacée par un texte libre (widget texte).</p>

<h4><span>2</span> Billet &laquo;&nbsp;C&#8217;est vite dit !&nbsp;&raquo; (En bref)</h4>

<p>Sous le <em>header</em>, la deuxième zone se compose d&#8217;un billet &laquo;&nbsp;En bref&nbsp;&raquo; (cet intitulé &#8212; comme d&#8217;autres sur le blog &#8212; est modifiable dans le fichier <em>functions.php</em>) surmonté d&#8217;un visuel optionnel géré par les champs personnalisés (<em>Customs fields</em>).</p>

<p>Cette rubrique n&#8217;est ni plus ni moins que la catégorie 1 (<em>uncategorized</em> à l&#8217;origine) dont j&#8217;ai modifié l&#8217;intitulé. L&#8217;avantage est de pouvoir compter sur l&#8217;identifiant présent dès l&#8217;installation du blog, ce qui évite d&#8217;avoir à mettre les mains dans le code pour masquer cette catégorie dans les autres boucles. Par ailleurs, cette catégorie &laquo;&nbsp;originelle&nbsp;&raquo; est cochée par défaut, ce qui permet de gagner du temps lorsqu&#8217;on veut rédiger un billet court ;)</p>

<p>Note : pour afficher une seule rubrique, il est possible de se servir de son nom, mais pour l&#8217;exclure, il semble nécessaire de passer par l&#8217;identifiant numérique (à moins qu&#8217;une option m&#8217;ait échappée).</p>

<p>Voici le code pour cette boucle :
<pre>&lt;?php if(!is_paged()) : ?&gt;
    &lt;?php $my_query = new WP_Query('cat=1&amp;showposts=1');
    while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();
    $do_not_duplicate = $post-&gt;ID;?&gt;
        Contenu de la boucle
    &lt;?php endwhile; ?&gt;
&lt;?php endif; ?&gt;&lt;!-- end !is_paged --&gt;</pre>
Notez la variable <code>$do_not_duplicate</code> initialisée avec la valeur de l&#8217;identifiant du billet : comme les anciens articles de cette catégorie se retrouvent plus bas dans la première barre latérale, il sera important de l&#8217;exclure de la prochaine boucle.</p>

<p>Pour cela, en plus d&#8217;initialiser la variable <code>$do_not_duplicate</code> dans la première boucle, il faut exclure le billet en question de la deuxième boucle :
<pre>&lt;?php $my_query = new WP_Query('cat=1&amp;showposts=6'); ?&gt;
&lt;?php while ($my_query-&gt;have_posts()) : $my_query-&gt;the_post();
    if( $post-&gt;ID == $do_not_duplicate ) continue; update_post_caches($posts); ?&gt;
        Contenu de la boucle
&lt;?php endwhile; ?&gt;</pre>
Grâce au mot-clé PHP <code>continue</code>, on saute le billet repéré plus haut en passant directement au suivant. Et hop ! Ce billet est censé s&#8217;afficher sur la <em>Home</em> uniquement et la condition <code>!is_paged()</code> permet de s&#8217;assurer que l&#8217;utilisateur n&#8217;a pas cliqué sur les billets plus anciens, auquel cas ce billet &laquo;&nbsp;En bref&nbsp;&raquo; ne s&#8217;affiche pas. Je pense que l&#8217;on pourrait utiliser la nouvelle condition<code> is_front_page()</code> apparue avec WordPress 2.5 pour obtenir le même résultat.</p>

<p>La fonction <code>update_post_caches()</code> est là pour pallier le fait que certains <em>plugins</em> ne fonctionnent pas correctement lorsque plusieurs boucles sont présentes sur la même page. Cette fonction réinitialise le cache des billets pour éviter d&#8217;éventuels problèmes.</p>

<h4><span>3</span> Les articles du blogzine proprement dit</h4>

<p>Cette zone est suivie de la liste des billets publiés au fil de l&#8217;eau sur le blog à l&#8217;exception de l&#8217;édito et des billets &laquo;&nbsp;En bref&nbsp;&raquo;. Toutefois, je voulais que ces deux rubriques puissent apparaitre lorsque les visiteurs cliquent sur les <em>Articles plus anciens</em> car si la redondance est gênante sur la première page, elle l&#8217;est moins sur les autres :
<pre>&lt;?php if(!is_paged()) : ?&gt;
    &lt;?php query_posts("$query_string&amp;cat=-1,-16&amp;showposts=10");
    /* Affichage des articles sauf featured et édito */?&gt;
&lt;?php else : ?&gt;
    &lt;?php query_posts("$query_string&amp;showposts=15"); ?&gt;
&lt;?php endif; ?&gt;
&lt;?php while (have_posts()) : the_post(); ?&gt;
        Contenu de la boucle
&lt;?php endwhile; ?&gt;</pre>
Comme vous pouvez le constater, j&#8217;en ai profité pour afficher un nombre plus important de billets sur les &laquo;&nbsp;pages suivantes&nbsp;&raquo; grâce au paramètre <code>showposts=15</code> histoire de donner à voir plus d&#8217;articles à chaque fois. Celà n&#8217;est pas indispensable ici, mais si vous envisagez de n&#8217;afficher qu&#8217;un seul article complet sur la <em>Home</em>, ça peut-être très utile.</p>

<p>Il ne faut pas oublier le paramètre <code>$query_string</code> qui permet de recréer le contexte de la requête (ici <code>is_paged()</code> ) car la fonction <code>query_posts()</code> est un peu l&#8217;auberge espagnole : seules les variables précisées en paramètres sont disponibles sur votre page.</p>

<h4><span>4</span> Le menu à onglets sur la droite</h4>

<p>Ce pavé inaugure la barre latérale et est en quelque sorte le pivot du blog, la boussole qui sert de point de repère dans ce qui pourrait apparaitre comme une cacophonie de textes :</p>

<ul>
    <li><strong>Catégories</strong> &#8212; le moins mauvais des systèmes pour se repérer dans un blog ;</li>
    <li><strong>Derniers articles publiés</strong> afin que le lecteur ait une vision &laquo;&nbsp;applatie&nbsp;&raquo; des parutions sur le blog. En effet, l&#8217;édito ou le billet &laquo;&nbsp;En bref&nbsp;&raquo; peuvent rester un certain temps avant d&#8217;être remplacés, même si le contenu du blog proprement dit (la quatrième zone) peut évoluer plus rapidement ; à moins que l&#8217;inverse se produise car il est tout à fait possible de publier plusieurs billets courts dans &laquo;&nbsp;En bref&nbsp;&raquo; ou de prendre un coup de sang quotidien avec l&#8217;édito !</li>
    <li><strong>Articles les plus commentés</strong>. Si les derniers commentaires (voir plus bas) permettent aux visiteurs de se faire une idée sur les dernières discussions en cours, la liste des articles les plus commentés permet de faire remonter certains articles anciens qui ont, en leur temps, fais parler d&#8217;eux ;)</li>
    <li><strong>Derniers commentaires</strong> avec le gravatar, l&#8217;URL du commentateur et l&#8217;adresse du billet commenté. Pratique, pour donner au visiteur un aperçu des sujets qui suscitent actuellement le plus d&#8217;intérêt.</li>
    <li><strong>Nuage de tags</strong> pour donner un aperçu des thèmes abordés sur le blog au visiteur de passage (qui représente quand même plus de la moitié des visites).</li>
</ul>

<p>A noter que lorsqu&#8217;on se trouve sur les pages <em>single.php</em> (affichage des billets seuls) et <em>page.php</em> (affichage des pages &laquo;&nbsp;statiques&nbsp;&raquo;), ce menu ne propose que les 3 premiers onglets afin de laisser plus de place pour l&#8217;article. Voici le code :
<pre>&lt;?php if ( !is_single() &amp;&amp; !is_page()) : ?&gt;
    &lt;div id="menu-wide"&gt;
&lt;?php else : ?&gt;
    &lt;div id="menu-narrow"&gt;
&lt;?php endif; ?&gt;</pre></p>

<h4><span>5</span> Tutoriels aléatoires</h4>

<p>Sous le menu à onglets, j&#8217;affiche un article aléatoire parmi ceux qui sont tagués &laquo;&nbsp;tutoriel&nbsp;&raquo;. Ca tombe bien car c&#8217;est un des rares tags que j&#8217;ai employé à bon escient depuis de début ! Ca permet de faire &laquo;&nbsp;remonter&nbsp;&raquo; des billets rédigés il y a plus de deux ans et sur lesquels j&#8217;ai le plus transpiré ;) La boucle est relativement similaire aux autres :
<pre>&lt;?php /* Affichage des tous les billets tagué "tutoriels" */
query_posts('tag=tutoriel&amp;showposts=1&amp;orderby=rand');
while (have_posts()) : the_post(); ?&gt;
    Contenu de votre boucle
&lt;?php endwhile; ?&gt;</pre>
Le nerf de la guerre étant ici, les paramètres <em>tag</em> et <em>orderby</em>. Notez que si l&#8217;on voulait obtenir les billets contenant plusieurs tags il suffirait de préciser : <code>tag=tutoriel+wordpress</code>.</p>

<p>Cette zone peut être précédée ou suivie d&#8217;une zone widgétisable pour placer une éventuelle publicité (actuellement des vidéos virales de unrulymedia) ou tout autre élément à la mode. Une zone est même prévue au-dessus du menu à onglets pour la même chose. Bon, rassurez-vous, une publicité placée au-dessus du menu principal vaut son pesant de cacaouettes : le jour où ça arrive, je vous invite à boire un café sur Lyon :D</p>

<h4><span>6</span> Deux barres latérales pour le prix d&#8217;une !</h4>

<p>C&#8217;est le moment de diviser la barre latérale en deux afin d&#8217;accueillir d&#8217;autres types de contenus. Pour le moment la première <em>sidebar</em> accueille la suite des billets &laquo;&nbsp;En bref&nbsp;&raquo; suivie d&#8217;une petite publicité virale (oui, j&#8217;essaie de trouver des alternative à Google Adsense&#8230; pas si facile non plus ;) )</p>

<p>La deuxième barre latérale est destinée à accueillir des liens externes comme les liens sponsorisés (saymal, mais saybon quand même :D ), les flux RSS externes, etc.</p>

<p>A noter que sous cette double <em>sidebar</em>, il est possible d&#8217;afficher du contenu à l&#8217;aide d&#8217;une zone widgétisée sur la largeur des deux colonnes.</p>

<h4><span>7</span> Le footer</h4>

<p>Ce footer est lui-même divisé en deux : un <em>big footer</em> (inactif pour l&#8217;instant) et le <em>footer</em> proprement dit qui affiche quelques informations classiques comme les droits réservés, l&#8217;adresse des différents flux RSS, le lien vers le formulaire de contact, etc.</p>

<h3>Les widgets</h3>

<p>Ce thème est truffé de <a href="http://www.css4design.com/tutoriel-wordpress-2-2-la-sidebar-a-la-loupe-comprendre-les-widgets-et-declarer-une-war">zones widgets ready</a> pour permettre une certaine souplesse dans l&#8217;administration du blog en minimisant les allers-retours dans le code. Pour information, <em>SquaryBluevie </em>ne compte pas moins de de 19 zones de widgets, certaines actives et d&#8217;autres pouvant être activées sur un claquement de souris.</p>

<p>Voici la liste des différentes zones de widget et leur utilisation actuelle ou prochaine :</p>

<ol>
    <li><strong>header1 </strong>&#8211; présentation de l&#8217;auteur (widget Texte),</li>
    <li><strong>header2 </strong>&#8211; présentation du blog (inactive pour l&#8217;instant),</li>
    <li><strong>article </strong>&#8211; texte de remplacement de l&#8217;édito et de la description de la catégorie quand on est sur l&#8217;article seul,</li>
    <li><strong>tab1</strong> &#8212; contenu du premier onglet dans le pavé de droite. Actuellement les catégories,</li>
    <li><strong>tab2</strong> &#8212; derniers billets publiés,</li>
    <li><strong>tab3</strong> &#8212; articles les plus commentés par les visiteurs,</li>
    <li><strong>tab4</strong> &#8212; derniers commentaires des visiteurs</li>
    <li><strong>tab5</strong> &#8212; listes des tags les plus utilisés</li>
    <li><strong>sidebar-top</strong> &#8212; zone située au-dessus du menu à onglets (inactive pour l&#8217;instant),</li>
    <li><strong>sidebar-middle</strong> &#8212; zone située sous le menu à onglets (Actuellement une vidéo publicitaire),</li>
    <li><strong>sidebar-middle2</strong> &#8212; zone située sous le tutoriel aléatoire (inactive pour l&#8217;instant),</li>
    <li><strong>sidebars-bottom</strong> &#8211;zone située sous les deux  colonnes latérales,</li>
    <li><strong>sidebar1-top</strong> &#8212; zone placée au-dessus de la première barre latérale étroite,</li>
    <li><strong>sidebar1-bottom</strong> &#8212; zone placée en dessous,</li>
    <li><strong>sidebar2</strong> &#8212; l&#8217;ensemble de la deuxième barre latérale étroite est gérée par cette zone. Principalement pour des liens externes et/ou publicitaires (flux RSS, liens sponsorisés, <em>blogroll</em>, etc.),</li>
    <li><strong>bigfooter </strong>&#8211; si le besoin s&#8217;en fait sentir, une zone <em>big footer</em> est diponible sur toute la largeur de la page en 2, 3, 4 ou 5 colonnes en fonction des besoins. (inactive pour l&#8217;instant),</li>
    <li><strong>footer </strong>&#8211; zone disponible au début du <em>footer</em> (inactive pour l&#8217;instant),</li>
    <li><strong>adz</strong> &#8212; affichage des publicités <em>AdSense</em> à la fin du billet seul et sous le billet &laquo;&nbsp;En bref&nbsp;&raquo; présent sur la Home.</li>
    <li><strong>sidebar-single </strong>&#8211; permet d&#8217;afficher des élément sous le menu à onglets lorsqu&#8217;on lit un billet seul.</li>
</ol>

<h3>Grille de mise en page, feuilles de styles CSS et Javascript</h3>

<p>Je ne m&#8217;étendrai pas trop sur ces questions qui feront l&#8217;objet d&#8217;un autre article : ce design est provisoire (ce qui n&#8217;est pas le cas de cet article) et je ne suis pas sûr de vouloir garder la même approche. Mais pour ceux qui sont curieux et qui n&#8217;ont pas envie de regarder le code source, voici quelques informations.</p>

<p>Pour ce thème, j&#8217;ai utilisé le <a href="http://www.css4design.com/frameworks-css-reset-css-design-from-scratch">framework CSS</a> <a href="http://code.google.com/p/blueprintcss/">Blueprint</a> en redéfinissant totalement la grille horizontale proposée par défaut en utilisant l&#8217;excellent <a href="http://kematzy.com/blueprint-generator/">Blueprint Generator</a> pour générer automatiquement le fichier <em>grids.css</em> : il suffit de préciser quelques informations. J&#8217;ai opté pour une grille en 14 colonnes de 52 pixels chacune, séparées par une gouttière de 18 pixels, pour une largeur totale de 962 pixels.</p>

<p>L&#8217;avantage du framework Blueprint est de pouvoir tester rapidement plusieurs mises en page à partir de la même grille. La prise en main est relativement facile si l&#8217;on possède des bonnes notions de CSS et si l&#8217;on si sait à quel moment il faut <a href="http://www.css4design.com/retablir-le-flux-apres-des-elements-flottants-en-css-sans-balise-html-supplementaire">rétablir le flux après les flottants</a> : lorsqu&#8217;on détermine une largeur à l&#8217;aide de Blueprint, on utilise un <em>float: left</em> en même temps !</p>

<p>J&#8217;ai utilisé également le<a href="http://code.google.com/p/ie7-js/"> script ie7.js</a> de <a href="http://dean.edwards.name/">Dean Edwards</a> pour faire en sorte que Internet Explorer 6 se comporte comme IE7. Je vous invite à lire l&#8217;article <a href="http://www.css4design.com/quelques-notes-sur-la-bibliotheque-javascript-ie7-de-dean-edwards">Quelques notes sur la bibliothèque Javascript IE7</a> qui vous permettra d&#8217;en savoir plus sur les comportements ajoutés à Internet Explorer pour le rendre plus <em>friendly</em> ;)</p>

<h3>Conclusion</h3>

<p>Dans ce billet, je n&#8217;ai pas abordé les aspects graphiques : comme je l&#8217;ai <a href="http://www.css4design.com/nouveau-design-en-place-plus-bleu-plus-carre-plus-centre">déjà évoqué</a>, ce thème est pour moi un saut dans l&#8217;inconnu car je n&#8217;ai pas l&#8217;habitude de travailler le bleu, les blocs carrés ou encore les designs symétriques ! Tout celà donne un aspect institutionnel qui n&#8217;était pas recherché au départ mais qui peut faire son petit effet ;)</p>

<p>Rassurez-vous toutefois, mon objectif n&#8217;était pas d&#8217;obtenir des <em>backlinks</em> d&#8217;un site se terminant par <em>.gouv</em>, mais simplement de mieux structurer le blog et d&#8217;utiliser une palette de couleur tendant vers la monochromie (deux couleurs froides) afin que le regard du lecteur ne se disperse pas trop : plus les contenus sont nombreux et variés et plus la sobriété est importante.</p>

<p>Par ailleurs, le graphisme de ce blog est destiné à évoluer régulièrement pendant quelques temps, le temps de trouver un rythme de croisière entre l&#8217;édito, les brèves, les articles de fond, les tutoriels, etc&#8230;</p>

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

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

<ul class='related_post'><li><a href='http://css.4design.tl/wordpress-gerer-les-images-avec-les-champs-personnalises-customs-fields' title='WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)'>WordPress &#8212; Gérer les images avec les champs personnalisés (Customs fields)</a></li><li><a href='http://css.4design.tl/wordpress-26-mes-news-carburent-a-press-this' title='WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)'>WordPress 2.6 &#8212; Mes news carburent à &quot;Press This&quot; (chaine inside)</a></li><li><a href='http://css.4design.tl/les-widgets-dans-wordpress-25-avec-widgetisator' title='Les widgets dans WordPress 2.5 avec widgétisator ;)'>Les widgets dans WordPress 2.5 avec widgétisator ;)</a></li><li><a href='http://css.4design.tl/wordpress-26-un-nouveau-tag-conditionnel-avec-has_tag' title='WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()'>WordPress 2.6 &#8212; un nouveau &quot;tag&quot; conditionnel avec has_tag()</a></li><li><a href='http://css.4design.tl/quelques-notes-sur-un-theme-magazine-de-a-a-z-e-comme-epure' title='Quelques notes sur un thème magazine de A à Z &#8212; E comme épure'>Quelques notes sur un thème magazine de A à Z &#8212; E comme épure</a></li></ul>
 <p><a href="http://css.4design.tl/?flattrss_redirect&amp;id=271&amp;md5=6e5619743e48633dcaa7d93ca32f8145" title="Flattr" target="_blank"><img src="http://css.4design.tl/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://css.4design.tl/danse-avec-les-loops-1-un-theme-wordpress-mis-a-nu/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=br1o&amp;popout=1&amp;url=http%3A%2F%2Fcss.4design.tl%2Fdanse-avec-les-loops-1-un-theme-wordpress-mis-a-nu&amp;language=fr_FR&amp;category=text&amp;title=Danse+avec+les+loops+%231+%3A+un+th%C3%A8me+WordPress+mis+%C3%A0+nu&amp;description=Apr%C3%A8s+le+th%C3%A8me+Agrumz+et+apr%C3%A8s+avoir+mis+en+place+un+th%C3%A8me+provisoire+en+attendant%2C+voici+SquaryBluevie%2C+le+nouveau+th%C3%A8me+bleu+et+carr%C3%A9+%28et+un+peu+vert+aussi%29+pour+css4design....&amp;tags=Blog%2CBoucle%2CLoop%2CMagazine%2COnglets%2CTemplate%2CTh%C3%A8me%2CTutoriels%2CWidget%2CWordPress%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: basic

Served from: css.4design.tl @ 2012-05-24 16:52:15 -->
