<?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>Diije</title>
	<atom:link href="http://www.diije.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diije.fr</link>
	<description>SEO, WordPress &#38; cie</description>
	<lastBuildDate>Wed, 01 Nov 2017 09:31:11 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.3</generator>
	<item>
		<title>WP Multiple Titles : améliorez le maillage interne de votre blog</title>
		<link>http://www.diije.fr/wp-multiple-titles/</link>
		<comments>http://www.diije.fr/wp-multiple-titles/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 19:42:40 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=527</guid>
		<description><![CDATA[Si vous vous êtes déjà intéressé d&#8217;un peu plus près à un site d&#8217;actualité (presse écrite, news, sport &#8230;), nombreux sont ceux qui proposent deux titres pour chaque article : l&#8217;un sera le véritable titre de l&#8217;article, affiché sur l&#8217;URL &#8230; <a href="http://www.diije.fr/wp-multiple-titles/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Si vous vous êtes déjà intéressé d&rsquo;un peu plus près à un site d&rsquo;actualité (presse écrite, news, sport &#8230;), nombreux sont ceux qui proposent deux titres pour chaque article : l&rsquo;un sera le véritable titre de l&rsquo;article, affiché sur l&rsquo;URL qui lui correspond, tandis que l&rsquo;autre sera utilisé sur la page d&rsquo;accueil et les pages de navigation (catégories, archives, voire tags si l&rsquo;on compare avec WordPress).</p>
<p>L&#8217;emploi de deux titres est très intéressant d&rsquo;un point de vue référencement naturel puisqu&rsquo;il permet d&rsquo;améliorer le maillage interne de votre blog, en particulier la transmission de sémantique entre vos pages. En effet, avec deux titres différents, on peut d&rsquo;une part tester deux modèles de titres et les réactions qu&rsquo;ils entraînent de la part des internautes, mais également optimiser chacun d&rsquo;entre eux autour d&rsquo;un mot clé différent.<span id="more-527"></span></p>
<p>J&rsquo;entrevois de nombreuses utilisations possibles de ce comportement, notamment si vous souhaitez <a href="http://fr.slideshare.net/renaudperrin/seo-campus-2013-booster-votre-visibilit-sur-google-news">booster votre visibilité sur Google News</a>. Bref, je pense que vous avez saisi l&rsquo;idée de base de ce plugin.</p>
<h2>Le plugin</h2>
<p>En installant et en activant ce plugin, vous retrouverez un nouveau champ sur votre page d&rsquo;édition d&rsquo;article, juste en dessous du champ de texte, comme ceci :</p>
<p><img class="aligncenter size-full wp-image-533" alt="Le champ supplémentaire de wp-multiple-titles" src="http://www.diije.fr/wp-content/uploads/2013/03/wp-multi-titles.jpg" width="584" height="112" /></p>
<p>Deux solutions s&rsquo;offrent alors à vous :</p>
<ul>
<li>Soit vous avez installé ce plugin pour rien, et choisissez de ne rien indiquer dans ce nouveau champ de titre, auquel cas rien ne changera. Merci quand même pour le téléchargement <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>Si vous renseignez un second titre, celui-ci sera utilisé partout sauf sur la page de l&rsquo;article seul.</li>
</ul>
<p>Pour voir ce que ça donne, comparez-donc le titre de cet article que vous lisez actuellement sur cette page, et <a href="http://www.diije.fr/wordpress/">ici</a>. TADA !</p>
<h2>Prochaines étapes</h2>
<p>Cette toute première version du plugin va bien sûr évoluer. Première étape, le rendre compatible à la traduction, et proposer quelques versions pour facilement traduire l&rsquo;affichage selon la langue de votre installation.</p>
<p>En fonction de vos besoins, on peut également envisager une version permettant de spécifier davantage de titres différents, afin d&rsquo;en assigner un pour la page d&rsquo;accueil, un pour les pages de catégories, etc.</p>
<p>Voyez-vous d&rsquo;autres améliorations à envisager ? Votre feedback est important !</p>
<p><strong><a href="http://wordpress.org/extend/plugins/wp-multiple-titles/">Téléchargez le plugin sur WordPress.org !</a></strong></p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wp-multiple-titles/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Scriptogr.am + Sublime + IFTTT : mettre en place un bloc notes et automatiser sa diffusion</title>
		<link>http://www.diije.fr/scriptogram-sublime-ifttt-mise-en-place-et-diffusion/</link>
		<comments>http://www.diije.fr/scriptogram-sublime-ifttt-mise-en-place-et-diffusion/#comments</comments>
		<pubDate>Sun, 20 Jan 2013 09:11:00 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=447</guid>
		<description><![CDATA[Difficile de sortir ce blog de sa torpeur actuelle. Le dernier article remonte au mois de mai, et je vous avoue que même si j&#8217;ai depuis lancé un autre blog orienté photo (et deux trois autres trucs), je ne produis &#8230; <a href="http://www.diije.fr/scriptogram-sublime-ifttt-mise-en-place-et-diffusion/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Difficile de sortir ce blog de sa torpeur actuelle. Le dernier article remonte au mois de mai, et je vous avoue que même si j&rsquo;ai depuis lancé <a href="http://www.nul-en-photo.com/">un autre blog</a> orienté photo (et deux trois autres trucs), je ne produis pas autant de contenus que je le souhaiterais.</p>
<p>J&rsquo;expérimente donc actuellement une nouvelle façon de bloguer, qui semble pour l&rsquo;instant fonctionner : reprendre l&rsquo;habitude d&rsquo;écrire régulièrement en rédigeant chaque jour de courts articles en mode <strong>Bloc Notes</strong>, principalement orientés autour de la veille que je réalise chaque jour. L&rsquo;idée est à la fois de partager mes trouvailles et de les stocker (proprement) à un endroit facilement accessible.</p>
<p>Pour cela, j&rsquo;ai mis en place quelques outils qui me permettent de gagner du temps et publier de manière simple, rapide et efficace mes billets.<span id="more-447"></span></p>
<h2>Scriptogr.am, ton blog dans ta Dropbox</h2>
<p>Le premier d&rsquo;entre eux est tout simplement le support <em>visible</em>, la partie émergée de l&rsquo;iceberg : <a href="http://scriptogr.am/diije">mon espace scriptogr.am</a>. <strong>Scriptogr.am</strong>, c&rsquo;est une plateforme de blogs très particulière : alors que certaines plateformes stockent le contenu que vous produisez sur leurs serveurs, et <a href="http://www.ecribouille.net/numerique/les-liens-daffiliation-par-defaut-dans-wordpress-com/">s&rsquo;en servent pour glisser des liens d&rsquo;affiliation</a>, l&rsquo;idée derrière ce service est très simple. Il s&rsquo;agit de <strong>faire en sorte que le contenu de votre blog soit stocké chez vous</strong>.</p>
<p><img class="aligncenter size-full wp-image-475" alt="scriptogram" src="http://www.diije.fr/wp-content/uploads/2012/12/scriptogram.jpg" width="600" height="348" srcset="http://www.diije.fr/wp-content/uploads/2012/12/scriptogram.jpg 600w, http://www.diije.fr/wp-content/uploads/2012/12/scriptogram-300x174.jpg 300w, http://www.diije.fr/wp-content/uploads/2012/12/scriptogram-500x290.jpg 500w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Et ça fonctionne très simplement : un répertoire local sur votre ordinateur contient des fichiers, qui correspondent chacun à un article ou une page de votre blog. Quand vous lui demanderez (<em>id est</em>, quand vous cliquerez sur le bouton <code>Synchronize</code> de votre compte), Scriptogram ira télécharger chacun des fichiers, et génèrera la structure de votre site en conséquence : pages, articles, tags, pagination, archives &#8230; Un véritable blog, simpliste certes, mais qui remplit tout à fait son rôle.</p>
<p>La question est tout de même de savoir comment ce service accède à des fichiers stockés sur votre ordinateur. Et la réponse est très simple : c&rsquo;est une application <a href="http://www.dropbox.com/"><strong>DropBox</strong></a> ! Si vous n&rsquo;avez pas encore de compte sur ce service merveilleux, <del>sortez de votre grotte</del> utilisez <a href="http://db.tt/2nzWVYE">ce lien</a> pour bénéficier de 500Mo d&rsquo;espace supplémentaire et gratuit <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Résumons la situation : j&rsquo;ai donc un blog sur un service gratuit (<a href="http://t37.net/instagram-photos-plaintes-merite.html">pour l&rsquo;instant</a>), je reste maître de mon contenu et peux le republier facilement ailleurs si ce service venait à fermer, et mon contenu est stocké sur mon ordinateur <strong>et</strong> accessible depuis n&rsquo;importe où grâce à DropBox. Dois-je également préciser que DropBox gère nativement le <a href="http://fr.wikipedia.org/wiki/Gestion_de_versions">versioning de fichiers</a> ?</p>
<h3>Markdown ou HTML, vous avez le choix</h3>
<p>Scriptogram promeut l&rsquo;utilisation de <a href="http://daringfireball.net/projects/markdown/"><strong>Markdown</strong></a> comme langage de marquage, en parallèle du <strong>HTML</strong> : vous pouvez donc utiliser l&rsquo;un ou l&rsquo;autre dans vos articles, en-têtes de fichiers exceptées. Celles-ci devront en effet respecter la syntaxe suivante :</p>
<pre class="brush: bash; title: ; notranslate">Title: Mon titre
Date: 1970-07-01 14:00
Tags: mot clé, mot clé
...</pre>
<p>Le HTML permet une large compatibilité, tandis qu&rsquo;après un temps d&rsquo;adaptation Markdown peut faire gagner pas mal de temps de formatage.</p>
<h3>Le flux RSS</h3>
<p>Par défaut Scriptogram génère automatiquement un <strong>flux RSS</strong> reprenant les articles de votre blog.<br />
Malheureusement celui-ci n&rsquo;apparaît pas visuellement sur la plupart des thèmes. Cela peut s&rsquo;avérer assez problématique pour les visiteurs qui souhaitent s&rsquo;y abonner. Heureusement, il est assez facile d&rsquo;y remédier.</p>
<p>Il suffit en effet de créer un article contenant les lignes suivantes (en prenant soin de remplacer « username » par votre nom d&rsquo;utilisateur) :</p>
<pre class="brush: bash; title: ; notranslate">Title: RSS
Type: page
Link: http://scriptogr.am/username/rss</pre>
<p>De même que <code>Tags</code> ou <code>Date</code>, <code>Link</code> et <code>Type</code> font partie des éléments d&rsquo;en-tête optionnels des fichiers de votre blog scriptogram, appelés <em>variables globales</em> au même titre que <code>Slug</code>, <code>Published</code> ou encore <code>Excerpt</code>. Seul <code>Title</code> est réellement obligatoire.</p>
<p><code>Type</code> permet de spécifier le type d&rsquo;article :</p>
<ul>
<li>par défaut <code>post</code>, un article normal qui apparaîtra dans votre flux (et donc pas besoin de renseigner le <code>Type</code>)</li>
<li>ou bien <code>page</code>, une page qui sera liée depuis toutes les autres pages du site, comme sur <a href="http://www.diije.fr/wordpress/">WordPress</a> par exemple.</li>
</ul>
<p>Quant à <code>Link</code>, il permet de lier directement à un contenu externe (autrement dit n&rsquo;importe quelle URL).</p>
<p>Pour plus de détail concernant les autres variables globales, consultez <a href="http://support.scriptogr.am/kb/basic-usage/writing-a-post-or-page">la documentation</a>.</p>
<h3>Installer Disqus pour les commentaires</h3>
<p>Un blog sans commentaires, ça n&rsquo;est pas vraiment un blog. Malheureusement cette fonctionnalité n&rsquo;est pas gérée par Scriptogram, et c&rsquo;est en effet tout à fait compréhensible puisque ce serait assez contraire au concept de base du service.</p>
<p><img class="aligncenter size-full wp-image-473" alt="disqus" src="http://www.diije.fr/wp-content/uploads/2012/12/disqus.jpg" width="600" height="214" srcset="http://www.diije.fr/wp-content/uploads/2012/12/disqus.jpg 600w, http://www.diije.fr/wp-content/uploads/2012/12/disqus-300x107.jpg 300w, http://www.diije.fr/wp-content/uploads/2012/12/disqus-500x178.jpg 500w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Ce choix est d&rsquo;autant plus facile à comprendre puisqu&rsquo;il est possible de mettre en place cette fonctionnalité grâce à des services externes, comme <a href="http://disqus.com/"><strong>Disqus</strong></a>. L&rsquo;avantage de Disqus est que là encore, vous restez maître des données.</p>
<p><img class="alignright size-medium wp-image-481" alt="Implémenter Disqus sur Scriptogram" src="http://www.diije.fr/wp-content/uploads/2012/12/disqus-setup-1-300x228.jpg" width="300" height="228" srcset="http://www.diije.fr/wp-content/uploads/2012/12/disqus-setup-1-300x228.jpg 300w, http://www.diije.fr/wp-content/uploads/2012/12/disqus-setup-1-393x300.jpg 393w, http://www.diije.fr/wp-content/uploads/2012/12/disqus-setup-1.jpg 450w" sizes="(max-width: 300px) 100vw, 300px" /> Une fois votre compte créé sur la plateforme, l&rsquo;ajout du formulaire à votre blog est assez simple. Rendez-vous sur votre <strong>Dashboard</strong> Scriptogram, dans l&rsquo;onglet <em>Tools</em>, et accédez à l&rsquo;éditeur HTML (voir ci-contre).</p>
<p>Cherchez ensuite dans la partie de gauche (le code source du template) la balise <code>{{is_post}}</code>, qui définit la partie du template spécifique aux pages d&rsquo;articles, et ajoutez là où vous le jugez adéquat (quelques lignes au-dessus de <code>{{is_post}}</code> a priori) le code fournit par Disqus, qui devrait ressembler à ceci :</p>
<pre class="brush: php; title: ; notranslate">&lt;/pre&gt;
&lt;div id=&quot;disqus_thread&quot;&gt;&lt;/div&gt;
&lt;pre&gt;
&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[
  var disqus_shortname = 'diije-blocnotes';
  (function() {
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
    dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
// ]]&gt;&lt;/script&gt;
&lt;noscript&gt;Merci d'activer JavaScript afin d'afficher les &lt;a href=&quot;http://disqus.com/?ref_noscript&quot;&gt;commentaires propulsés par Disqus.&lt;/a&gt;&lt;/noscript&gt;
&lt;a class=&quot;dsq-brlink&quot; href=&quot;http://disqus.com&quot;&gt;commentaires propulsés par &lt;span class=&quot;logo-disqus&quot;&gt;Disqus&lt;/span&gt;&lt;/a&gt;
</pre>
<p>Pensez à remplacer la valeur de <code>disqus_shortname</code> par celle qui correspond à votre site sur Disqus. Et notez que dans l&rsquo;onglet <em>Tools</em>, vous pourrez également accéder à l&rsquo;éditeur CSS, et personnaliser l&rsquo;apparence de votre site.</p>
<p>Enfin, pour les plus aventuriers d&rsquo;entre vous, sachez que Disqus propose également d&rsquo;afficher un <strong>compteur des commentaires</strong> de chaque article. Première étape, ajoutez le code suivant juste avant la balise <code>&lt;/body&gt;</code> (en remplaçant là encore la variable <code>disqus_shortname</code> <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ) :</p>
<pre class="brush: php; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;// &lt;![CDATA[
var disqus_shortname = 'diije-blocnotes';
(function () {
    var s = document.createElement('script'); s.async = true;
    s.type = 'text/javascript';
    s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
    (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
// ]]&gt;&lt;/script&gt;
</pre>
<p>Il vous faudra ensuite ajouter à l&rsquo;endroit où vous souhaitez voir le compteur s&rsquo;afficher le code suivant :</p>
<pre class="brush: php; title: ; notranslate">&lt;a href=&quot;{{permalink}}#disqus_thread&quot;&gt;&lt;/a&gt;</pre>
<p>Dernier point concernant les commentaires : si vous le souhaitez vous pouvez via l&rsquo;interface d&rsquo;administration de Disqus personnaliser le texte affiché par le compteur. Et y adjoindre du code HTML : de quoi améliorer l&rsquo;apparence du compteur si vous en avez envie.</p>
<h3>Les images</h3>
<p>Autre manque de Scriptogram, c&rsquo;est l&rsquo;insertion d&rsquo;images dans les articles. Si la fonctionnalité est tout à fait correctement gérée grâce à HTML ou Markdown, <strong>vous devrez héberger vos images ailleurs</strong>.</p>
<p>Il est tout à fait possible de les héberger sur votre serveur FTP ou sur <a href="http://www.flickr.com/photos/diije/">Flickr</a> par exemple, mais si vous souhaitez là encore conserver tous les fichiers dans votre Dropbox, plusieurs solutions existent.</p>
<p>La plus simple, est de stocker directement ces images dans un répertoire de votre choix. Depuis quelques temps, DropBox a en effet supprimé la notion de <em>dossier public</em> pour rendre tous les fichiers partageables, quel que soit leur emplacement. D&rsquo;un simple clic droit sur une image, rendez-vous sur <em>Dropbox -> Partager le lien</em> pour être renvoyé vers une page web comme <a href="https://www.dropbox.com/s/w4i1oife2hdo0x8/mug-1.jpg">celle-ci</a>.<br />
Pratique pour partager une galerie photo par exemple, mais malheureusement ceci n&rsquo;est pas l&rsquo;URL directe vers l&rsquo;image, mais vers cette page avec boutons de partage et logos. Autrement dit, si vous utilisez ce lien, <strong>votre image ne s&rsquo;affichera pas</strong>.</p>
<p>L&rsquo;astuce est toute simple : il suffit de remplacer dans l&rsquo;URL le <code>www</code> par <code>dl</code> (comme <a href="https://dl.dropbox.com/s/w4i1oife2hdo0x8/mug-1.jpg">ceci</a>) pour obtenir le lien vers le fichier lui-même <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Sublime : léger, rapide, efficace</h2>
<p>Avant toute chose, sachez que Scriptogr.am propose via le Dashboard un formulaire d&rsquo;ajout et d&rsquo;édition d&rsquo;articles, qui sauvegardera les nouveaux articles sous formes de fichiers dans votre Dropbox. Mais l&rsquo;idée est de pouvoir utiliser son éditeur préféré, pour davantage de confort.</p>
<p><a href="http://www.sublimetext.com/"><strong>Sublime Text 2</strong></a> est un excellent éditeur de code qui convainc un nombre toujours plus important d&rsquo;utilisateurs, moi y-compris. Les raisons sont sans doute sa sobriété, sa rapidité, et ses nombreuses fonctionnalités qui permettent de gagner un temps considérable au quotidien.</p>
<p><img class="aligncenter size-full wp-image-478" alt="sublime text 2" src="http://www.diije.fr/wp-content/uploads/2012/12/sublime.jpg" width="600" height="342" srcset="http://www.diije.fr/wp-content/uploads/2012/12/sublime.jpg 600w, http://www.diije.fr/wp-content/uploads/2012/12/sublime-300x171.jpg 300w, http://www.diije.fr/wp-content/uploads/2012/12/sublime-500x285.jpg 500w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Puisqu&rsquo;il gère parfaitement la coloration syntaxique en HTML, et surtout en Markdown (de même que dans de nombreux autres langages), c&rsquo;est tout naturellement que je l&rsquo;utilise comme principal éditeur.</p>
<p>Avec quelques légères optimisations Sublime peut vous faire gagner un temps considérable, en particulier si vous souhaitez l&rsquo;utiliser pour rédiger des articles pour Scriptogr.am.</p>
<h3>Package Control</h3>
<p>De la même manière qu&rsquo;un <strong>apt</strong> sur certaines distributions Linux, il est possible d&rsquo;adjoindre à Sublime Text un <em>Package Manager</em> qui vous permettra d&rsquo;installer, de mettre à jour ou de supprimer très facilement des add-ons.<br />
Ce gestionnaire de paquets s&rsquo;appelle <a href="http://wbond.net/sublime_packages/package_control"><strong>Package Control</strong></a>, et son installation est d&rsquo;une simplicité enfantine : ouvrez Sublime Text, et cliquez sur <em>View -> Show Console</em> pour afficher la console.</p>
<p>Dans la console, collez et exécutez la commande suivante :</p>
<pre class="brush: bash; title: ; notranslate">import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'</pre>
<p>Relancez Sublime, et le tour est joué.</p>
<h3>Paquet Scriptogram pour Sublime</h3>
<p>Maintenant que vous avez installé Package Control, je vous recommande l&rsquo;installation de <a href="https://github.com/scttcper/Scriptogram"><strong>Scriptogram</strong></a>, un add-on qui va vous permettre de pré-formater vos fichiers pour qu&rsquo;ils correspondent aux spécifications de la plateforme du même nom.</p>
<p>L&rsquo;installation est très simple :</p>
<ol>
<li>Ouvrez Sublime Text 2</li>
<li>Tapez cmd+shift+P sous mac, ou ctrl+shift+p ailleurs, afin d&rsquo;ouvrir la <strong>palette de commandes</strong></li>
<li>Dans cette palette, tapez <code>Package Control: Install Package</code></li>
<li>Une liste déroulante apparaît : cherchez le paquet <code>Scriptogram</code> et installez-le</li>
<li>Relancez Sublime Text</li>
</ol>
<p>Désormais, il vous suffira d&rsquo;ouvrir la palette de commandes et de taper <code>Scriptogram</code> pour que votre fichier en cours soit formaté.</p>
<p>Pour ceux qui souhaiteraient ajouter ou retirer des choses parmi les lignes ajoutées par ce script, sachez qu&rsquo;il est très simple de modifier le code (en Python). Pour vous donner un exemple, j&rsquo;ai <a href="https://github.com/diije/Scriptogram">forké le projet sur github</a>.</p>
<h3>Définir l&#8217;emplacement de sauvegarde</h3>
<p>Dernière astuce qui peut vous faire gagner un temps fou sur Sublime : par défaut ce logiciel, comme tant d&rsquo;autres, vous propose de sauvegarder vos fichiers un peu n&rsquo;importe où, alternant plus ou moins aléatoirement entre le dernier emplacement de sauvegarde utilisé, et un obscur répertoire système.</p>
<p>Mais il est assez simple de <a href="http://scriptogr.am/diije/post/sublime-text-definir-lemplacement-de-sauvegarde-par-defaut">configurer un emplacement de sauvegarde par défaut</a> :</p>
<ol>
<li>Ouvrez Sublime Text</li>
<li>Rendez-vous dans <em>Preferences -> Settings Default</em></li>
<li>Ajoutez à la fin du fichier les lignes suivantes :</li>
<pre class="brush: bash; title: ; notranslate">// Sets the default save directory for the view.
&quot;default_dir&quot;: &quot;/chemin/vers/mon/repertoire&quot;</pre>
<li>Pensez à ajouter une virgule à la fin de l&rsquo;instruction précédente pour éviter les erreurs</li>
<li>Redémarrez Sublime Text</li>
</ol>
<p>Bien évidemment, si vous configurez comme répertoire par défaut le répertoire de l&rsquo;application Scriptogram dans votre Dropbox, vous gagnerez là encore quelques précieuses secondes.</p>
<p>Avec ces différentes étapes, vous disposez désormais d&rsquo;un blog totalement opérationnel doublé d&rsquo;un outil pour produire des articles de façon quasi industrielle. Mais si écrire des articles c&rsquo;est bien, faire en sorte qu&rsquo;ils soient lus c&rsquo;est mieux.</p>
<h2>IFTTT : la boîte à outils</h2>
<p>Les habitués y auront pensé dès qu&rsquo;on a parlé de flux RSS : le fameux <strong><a href="http://ifttt.com/">IFTTT</a></strong>, le service qui permet de déclencher tout simplement des actions en fonction d&rsquo;évènements, au travers de multiples services et sites web.</p>
<p><img src="http://www.diije.fr/wp-content/uploads/2013/01/ifttt.jpg" alt="ifttt" width="600" height="166" class="aligncenter size-full wp-image-506" srcset="http://www.diije.fr/wp-content/uploads/2013/01/ifttt.jpg 600w, http://www.diije.fr/wp-content/uploads/2013/01/ifttt-300x83.jpg 300w, http://www.diije.fr/wp-content/uploads/2013/01/ifttt-500x138.jpg 500w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>Ce service va dans les faits vous permettre par exemple de publier automatiquement un tweet lorsqu&rsquo;une nouvelle entrée apparaîtra dans le flux RSS de votre blog.</p>
<p>Pour ce faire, nous allons utiliser une <strong>recette</strong> déjà créée par un autre utilisateur :</p>
<ol>
<li>Créez votre compte sur la plateforme</li>
<li>Rendez-vous sur <a href="https://ifttt.com/twitter">cette page</a> et activez le <strong>Channel Twitter</strong></li>
<li>Rendez-vous sur <a href="https://ifttt.com/recipes/5539">cette page</a> (la recette en question), et renseignez le flux RSS de votre blog (<code>http://scriptogr.am/username/feed</code>)
<li>Paramétrez le tweet que vous souhaitez émettre</li>
<li>Validez, et le tour est joué</li>
</ol>
<p>Cette recette est très classique, mais je vous encourage fortement à explorer <a href="https://ifttt.com/recipes">la liste des recettes</a> et à en créer par vous même.</p>
<h2>En conclusion</h2>
<p>Le gros point noir pour l&rsquo;instant sur Scriptogr.am est <strong>l&rsquo;obligation de devoir se rendre sur le site pour pouvoir synchroniser</strong> (à la main) les nouveaux articles. A l&rsquo;heure où j&rsquo;écris cet article, il semblerait que l&rsquo;équipe de développeurs travaille sur une nouvelle version de la plateforme embarquant de nombreuses nouveautés dont des solutions à cet égard, mais pour l&rsquo;instant aucune date n&rsquo;a été dévoilée, et les utilisateurs sont donc toujours dans l&rsquo;attente.</p>
<p>J&rsquo;ai pour ma part essayé de bricoler un script bash qui avait pour but de déclencher la synchronisation à intervalles réguliers, mais je n&rsquo;ai pour l&rsquo;instant pas obtenu de résultat probant. Malgré tout la plateforme conserve des atouts intéressants, le premier d&rsquo;entre eux étant de conserver votre contenu en local sur votre ordinateur. Pour cette raison, je continue à l&rsquo;utiliser en l&rsquo;état, en espérant une rapide avancée sur ce sujet.</p>
<p>On a donc trois solutions pour mettre à jour ce blog de manière régulière :</p>
<ul>
<li>Utiliser l&rsquo;interface en ligne pour rédiger des articles, mais on n&rsquo;utilise plus notre éditeur favori</li>
<li>Se rendre sur le Dashboard pour synchroniser après chaque nouvel article rédigé, mais là encore la flexibilité n&rsquo;est pas optimale</li>
<li>Décider de synchroniser manuellement et régulièrement le blog, indépendamment de la rédaction d&rsquo;articles, au risque de publier les articles par blocs</li>
</ul>
<p>Pour ma part j&rsquo;ai retenu la dernière solution qui convient très bien à mon utilisation en mode « bloc notes » : l&rsquo;essentiel est que les notes soient prises, leur partage sur le net ce n&rsquo;est que du bonus.</p>
<p>Bien entendu ça n&rsquo;est que mon utilisation personnelle de la plateforme (si vous voulez voir ce que ça donne, rendez-vous <a href="http://scriptogr.am/diije">ici</a>), et certains l&rsquo;utilisent comme un blog à part entière. A chacun de se faire sa propre opinion. </p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/scriptogram-sublime-ifttt-mise-en-place-et-diffusion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Modération des commentaires par les contributeurs</title>
		<link>http://www.diije.fr/wordpress-moderation-commentaires-par-contributeurs/</link>
		<comments>http://www.diije.fr/wordpress-moderation-commentaires-par-contributeurs/#comments</comments>
		<pubDate>Thu, 31 May 2012 08:00:47 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=377</guid>
		<description><![CDATA[Je cherchais depuis quelques temps un moyen simple de permettre aux auteurs et aux contributeurs d&#8217;un blog de pouvoir modérer les commentaires des articles publiés, sans pour autant leur donner le rôle d&#8217;éditeurs normalement nécessaire pour cette tâche. En effet, &#8230; <a href="http://www.diije.fr/wordpress-moderation-commentaires-par-contributeurs/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Je cherchais depuis quelques temps un moyen simple de permettre aux auteurs et aux contributeurs d&rsquo;un blog de pouvoir modérer les commentaires des articles publiés, sans pour autant leur donner le rôle d&rsquo;éditeurs normalement nécessaire pour cette tâche.</p>
<p><img src="http://www.diije.fr/wp-content/uploads/2012/05/coms.jpg" alt="Lache tes coms" title="Les commentaires, le nerf de la guerre pour les blogs" width="400" height="350" class="aligncenter size-full wp-image-408" srcset="http://www.diije.fr/wp-content/uploads/2012/05/coms.jpg 400w, http://www.diije.fr/wp-content/uploads/2012/05/coms-300x262.jpg 300w, http://www.diije.fr/wp-content/uploads/2012/05/coms-342x300.jpg 342w" sizes="(max-width: 400px) 100vw, 400px" /></p>
<p>En effet, sur les blogs collaboratifs il n&rsquo;est pas inhabituel de faire appel aux éditeurs pour qu&rsquo;ils valident les articles proposés avant leur mise en ligne. Pour autant, une fois ces articles publiés, leurs auteurs (qu&rsquo;ils aient le rôle de contributeur ou d&rsquo;auteur pour WordPress) n&rsquo;ont pas les permissions nécessaires pour modérer les commentaires.<br />
<span id="more-377"></span></p>
<h2>Rôles et permissions</h2>
<p>WordPress propose par défaut 5 rôles d&rsquo;utilisateurs, qui définissent chacun un niveau de permissions supplémentaire par rapport au niveau précédent :</p>
<ul>
<li>Abonné (simple lecteur)</li>
<li>Contributeur (peut proposer des articles)</li>
<li>Auteur (peut publier ses propres articles)</li>
<li>Editeur (peut modifier et publier les articles des autres utilisateurs)</li>
<li>Administrateur (accède à toutes les options d&rsquo;administration : réglages, plugins, thèmes &#8230;)</li>
</ul>
<p>Chaque rôle correspond en fait à un jeu de permissions définies dans WordPress, dont vous retrouverez la liste <a href="http://codex.wordpress.org/Roles_and_Capabilities">sur le Codex</a>.</p>
<p>Cependant, il est possible de modifier ces rôles et de donner ou de retirer des permissions aux utilisateurs, on l&rsquo;a déjà vu pour <a href="http://www.diije.fr/wordpress-autoriser-upload-contributeurs/">permettre l&rsquo;upload d&rsquo;images aux contributeurs</a>. Un plugin assez connu, <a href="http://wordpress.org/extend/plugins/user-role-editor/">User Role Editor</a>, permet de réaliser ces modifications sans la moindre ligne de code, directement depuis l&rsquo;interface d&rsquo;administration. Mais déployer un plugin aussi lourd me paraissait un peu disproportionné, d&rsquo;autant qu&rsquo;il ne répond pas exactement à mes besoins.</p>
<p>Julio de <a href="https://twitter.com/boiteaweb">Boite à Web</a> a dévoilé récemment un plugin permettant l&rsquo;<a href="http://www.boiteaweb.fr/baw-moderator-role-3331.html">ajout d&rsquo;un nouveau rôle « Modérateur »</a>, qui bien que très intéressant ne me satisfaisait pas : les modérateurs ainsi créés ne peuvent que modérer des commentaires. Cela dit, ça m&rsquo;a quand même aidé, alors merci à lui <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Puisque je cherchais à laisser tout de même aux contributeurs et aux auteurs la possibilité de proposer des articles, j&rsquo;ai donc fouillé un peu plus.</p>
<h2>Le début de solution</h2>
<p>Une capacité qui pourrait suffire est <code>moderate_comments</code>. Comme son nom l&rsquo;indique, elle permet la modération des commentaires. Malheureusement, la modération des commentaires est assimilée par le noyau de WordPress à l&rsquo;édition d&rsquo;un <em>post</em> (pour rappel, un <em>post</em> dans WordPress peut désigner à la fois un article, une page, une pièce jointe, un type de post personnalisé &#8230;).<br />
Pour pouvoir modérer les commentaires, un utilisateur a donc besoin des capacités suivantes (en plus des permissions de base d&rsquo;un contributeur) :</p>
<ul>
<li><code>moderate_comments</code></li>
<li><code>edit_others_posts</code></li>
<li><code>edit_published_posts</code></li>
</ul>
<p>Voilà donc un petit bout de code à insérer dans le fichier <code>functions.php</code> de votre thème, et qui ajoute ces capacités aux contributeurs et aux auteurs :</p>
<pre class="brush: php; title: ; notranslate">
if ((current_user_can('contributor') || current_user_can('author')) &amp;&amp; !current_user_can('moderate_comments'))
	add_action('admin_init', 'dfr_moderate_comments');

function dfr_moderate_comments() {
	$contributor = get_role('contributor');
	$contributor-&gt;add_cap('moderate_comments');
	$contributor-&gt;add_cap('edit_others_posts');
	$contributor-&gt;add_cap('edit_published_posts');
	$author = get_role('author');
	$author-&gt;add_cap('moderate_comments');
	$author-&gt;add_cap('edit_others_posts');
}
</pre>
<p>Pour ceux qui ont lu les précédents articles de ce blog, ça ressemble assez fortement à ce qu&rsquo;on a utilisé pour <a href="http://www.diije.fr/wordpress-autoriser-upload-contributeurs/">permettre l&rsquo;upload de media aux contributeurs</a>. Je vous invite à aller voir l&rsquo;article correspondant pour quelques explications sur le principe.<br />
On n&rsquo;a pas ajouté la capacité <code>edit_others_posts</code> au rôle Auteur, tout simplement parce qu&rsquo;il la possède déjà.</p>
<h2>L&rsquo;astuce</h2>
<p>L&rsquo;ennui, c&rsquo;est qu&rsquo;avec toutes ces capacités, un contributeur est en mesure de lire, modifier, publier à sa guise ses articles et ceux des autres. En gros on lui donne les mêmes droits qu&rsquo;un éditeur, alors qu&rsquo;il n&rsquo;est que simple contributeur.</p>
<p>La grosse feinte va donc consister à faire en sorte que lorsqu&rsquo;un utilisateur cherche à éditer un article, si cet article est déjà publié ou n&rsquo;est pas un des articles qu&rsquo;il a proposés, on lui en interdit l&rsquo;accès avec un autre bout de code à placer dans <code>functions.php</code> :</p>
<pre class="brush: php; title: ; notranslate">
add_action( 'admin_init', 'dfr_redirect_users' );
function dfr_redirect_users()
{
	// On récupère la page active
	global $pagenow;
	// Si la page active est la page d'édition d'article
	if ($pagenow == &quot;post.php&quot;) {
		// Si l'utilisateur n'est pas éditeur ou admin
		if ( !current_user_can( 'editor' ) ) {
			// On récupère l'objet post courant
			$id = $_GET['post'];
			$post = get_post($id);
			// On récupère l'utilisateur courant
			$current_user = wp_get_current_user();
			// Si le post est publié et si l'utilisateur n'en est pas l'auteur
			if ($post-&gt;post_status == &quot;publish&quot; &amp;&amp; $post-&gt;post_author != $current_user-&gt;ID)
				wp_redirect( admin_url( 'edit.php' ) );
		}
	}
}
</pre>
<p>On utilise la variable globale <code>$pagenow</code> (voir la <a href="http://codex.wordpress.org/Global_Variables">liste des variables globales dans WordPress</a>) qui indique sur quelle page de WordPress nous nous trouvons. Pour le reste, il s&rsquo;agit de vérifier que notre gentil contributeur ne tente pas d&rsquo;aller modifier le post d&rsquo;un autre utilisateur. Attention : il pourra par contre modifier les articles encore hors ligne. Si vous voulez interdire ce comportement, retirez simplement <code>$post-&gt;post_status == "publish"</code> de la dernière condition <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>Le code complet</h2>
<p>Pour les feignasses, voilà donc le code complet à placer dans le fichier <code>functions.php</code> de votre thème.</p>
<pre class="brush: php; title: ; notranslate">
if ((current_user_can('contributor') || current_user_can('author')) &amp;&amp; !current_user_can('moderate_comments'))
	add_action('admin_init', 'dfr_moderate_comments');
function dfr_moderate_comments() {
	$contributor = get_role('contributor');
	$contributor-&gt;add_cap('moderate_comments');
	$contributor-&gt;add_cap('edit_published_posts');
	$author = get_role('author');
	$author-&gt;add_cap('moderate_comments');
}
add_action( 'admin_init', 'dfr_redirect_users' );
function dfr_redirect_users()
{
	global $pagenow;
	if ($pagenow == &quot;post.php&quot;) {
		if ( !current_user_can( 'editor' ) ) {
			$id = $_GET['post'];
			$post = get_post($id);
			$current_user = wp_get_current_user();
			if ($post-&gt;post_status == &quot;publish&quot; &amp;&amp; $post-&gt;post_author != $current_user-&gt;ID)
				wp_redirect( admin_url( 'edit.php' ) );
		}
	}
}
</pre>
<p><strong>Attention</strong> : cette solution n&rsquo;est évidemment pas optimale, et il est certain qu&rsquo;une mise à jour de la capacité <code>moderate_comments</code> pour la rendre indépendante d&rsquo;autres capacités simplifierait le problème.<br />
En attendant, si vous trouvez une façon plus élégante de faire la même chose, n&rsquo;hésitez pas à partager votre solution dans les commentaires !</p>
<div class='yarpp-related-rss'>
<p>Articles complémentaires :</p><ul>
<li><a href="http://www.diije.fr/wordpress-autoriser-upload-contributeurs/" rel="bookmark" title="Autoriser l&rsquo;upload de medias par les contributeurs">Autoriser l&rsquo;upload de medias par les contributeurs </a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wordpress-moderation-commentaires-par-contributeurs/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Astuce plugin WordPress : WyPiekacz</title>
		<link>http://www.diije.fr/wordpress-astuce-rapide-wypiekacz/</link>
		<comments>http://www.diije.fr/wordpress-astuce-rapide-wypiekacz/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 08:00:19 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=349</guid>
		<description><![CDATA[Dans le contexte actuel, bon nombre de webmasters de sites de communiqués de presse se font du souci et font le ménage sur leurs sites. Pour beaucoup, un excellent moyen de faire un premier tri automatique des articles soumis est &#8230; <a href="http://www.diije.fr/wordpress-astuce-rapide-wypiekacz/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Dans le contexte actuel, bon nombre de webmasters de sites de communiqués de presse se font du souci et font le ménage sur leurs sites.<br />
Pour beaucoup, un excellent moyen de faire un premier tri automatique des articles soumis est le plugin WordPress <a href="http://wordpress.org/extend/plugins/wypiekacz/">WyPiekacz</a>, dont vous pourrez trouver une <a href="http://boost.bookmarks.fr/WyPiekacz-FR.zip">traduction en français</a> réalisée par l&rsquo;excellent <a href="http://twitter.com/bertimus">bertimus</a>.<br />
Ce plugin bien utile permet d&rsquo;appliquer automatiquement des règles pour forcer par exemple un nombre minimum de mots ou maximum de liens. Si un article ne respecte pas les règles configurées, il reste en brouillon et le plugin nous affiche un beau message en rouge qui nous explique pourquoi on n&rsquo;a pas le droit de publier.<br />
<span id="more-349"></span><br />
Jusqu&rsquo;ici tout va bien. Sauf que, quand on modifie l&rsquo;article concerné et qu&rsquo;on le publie, le message reste stocké en base de données, dans la table <code>wp_postmeta</code>. Rien de grave quand on ne parle que de quelques articles, mais sur un site un peu fréquenté, ça peut représenter des centaines d&rsquo;enregistrements en base.</p>
<p>Alors voilà une petite commande SQL à exécuter sur votre base de données et qui m&rsquo;a fait gagner <strong>jusqu&rsquo;à 60Mo</strong> sur un des sites que j&rsquo;administre :p</p>
<pre class="brush: sql; title: ; notranslate">DELETE FROM wp_postmeta WHERE 'meta_key' = 'WyPiekacz_msg';</pre>
<p>Prenez soin de remplacer le préfixe wp_ par le préfixe correspondant à votre configuration !</p>
<p>Attention quand même quand vous modifiez votre base de données en live, pensez à faire une sauvegarde <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Il ne reste plus qu&rsquo;à espérer que le plugin soit mis à jour pour prendre en compte ce bug.</p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wordpress-astuce-rapide-wypiekacz/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Installer votre serveur de développement en local avec VirtualBox et Ubuntu Server</title>
		<link>http://www.diije.fr/installer-serveur-developpement-local-virtualbox-ubuntu-server/</link>
		<comments>http://www.diije.fr/installer-serveur-developpement-local-virtualbox-ubuntu-server/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 08:30:39 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[Divers]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=226</guid>
		<description><![CDATA[Lorsque l&#8217;on développe des sites web, il est bien utile d&#8217;avoir un serveur où faire ses tests, ne serait-ce que pour éviter de casser un site déjà en ligne. Pour cette raison, il n&#8217;est pas rare d&#8217;installer sur sa machine &#8230; <a href="http://www.diije.fr/installer-serveur-developpement-local-virtualbox-ubuntu-server/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Lorsque l&rsquo;on développe des sites web, il est bien utile d&rsquo;avoir un serveur où faire ses tests, ne serait-ce que pour éviter de casser un site déjà en ligne. Pour cette raison, il n&rsquo;est pas rare d&rsquo;installer sur sa machine locale des programmes tels que EasyPHP ou WAMP Server (sous windows). Mais ces logiciels sont souvent assez limités, et parfois assez loin de la réalité d&rsquo;un serveur web. Pour cette raison, j&rsquo;ai pour habitude de configurer une machine virtuelle me servant de serveur local, sur laquelle j&rsquo;installerai le strict minimum pour faire tourner mes projets en cours de développement. Le but du jeu est de configurer la machine virtuelle pour qu&rsquo;elle fonctionne exactement de la même façon que si je me connectais à un serveur distant chez mon hébergeur.</p>
<p><img alt="VirtualBox &#038; Ubuntu Server, c&#039;est de la dynamite !" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-1.jpg" title="VirtualBox &#038; Ubuntu Server" class="aligncenter" width="550" height="183" /></p>
<p>Puisque la configuration d&rsquo;une telle machine est parfois un poil compliquée, voici un tutoriel pour créer pas à pas votre propre serveur local avec VirtualBox et Ubuntu Serveur.<span id="more-226"></span></p>
<h2>Installer VirtualBox</h2>
<p>Tout d&rsquo;abord, pourquoi VirtualBox ? Bah, parce que c&rsquo;est gratuit, déjà. Et mine de rien, les machines virtuelles, c&rsquo;est quand même bien pratique, notamment parce qu&rsquo;on peut faire des instantanés, sorte de sauvegarde de l&rsquo;état de la machine à un instant T. Idéal pour revenir en arrière après une mise à jour foireuse par exemple <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Commençons par télécharger l&rsquo;installeur. Vous devriez trouver votre bonheur <a href="https://www.virtualbox.org/wiki/Downloads">sur le site officiel</a> ou dans les paquets de votre distribution linux. L&rsquo;installation de VirtualBox en elle-même ne devrait là encore ne pas vous poser de problème.</p>
<h2>Télécharger Ubuntu Server</h2>
<p>Là encore, pourquoi Ubuntu, et pourquoi en version serveur ? Bon, ok, c&rsquo;est gratuit aussi. Ubuntu est l&rsquo;une des distributions les plus populaires, et dispose d&rsquo;une communauté assez large pour que dans la quasi totalité des cas, quelqu&rsquo;un aura déjà rencontré (et avec un peu de chance, aura déjà résolu) le problème que vous vous apprêtez à rencontrer à votre tour.<br />
Quant au choix de la version serveur, c&rsquo;est une question d&rsquo;utilité et de performances : d&rsquo;une part dans la plupart des cas, il est assez peu utile d&rsquo;avoir une interface graphique sur votre serveur ; d&rsquo;autre part, les machines virtuelles étant souvent assez gourmandes en mémoire vive, se passer d&rsquo;une interface graphique permet aussi de limiter la mémoire allouée à notre serveur, et donc de garantir de meilleures performances pour l&rsquo;ordinateur hôte (théoriquement). </p>
<p>Vous devriez pouvoir télécharger un iso de la dernière version francophone de Ubuntu Server sur <a href="http://ubuntu-fr.org/telechargement?variante=server">ubuntu-fr.org</a> <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Cela étant, rien ne vous empêche de choisir une autre distribution et/ou une version dotée d&rsquo;une interface gratuite, le reste de ce tutoriel reste applicable.</p>
<h2>Installer la machine virtuelle</h2>
<p>Une fois l&rsquo;iso sauvegardé sur votre ordinateur, lancez VirtualBox et créez une nouvelle machine virtuelle :</p>
<p><img alt="Création d'une machine virtuelle avec VirtualBox" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-2.jpg" title="Machine virtuelle avec VirtualBox" class="aligncenter" width="550" height="385" /></p>
<p>La création d&rsquo;une nouvelle machine virtuelle se faisant de manière assez intuitive, laissez-vous guider dans les différentes étapes.<br />
Nul besoin d&rsquo;allouer une quantité importante de mémoire vive, 512Mo ou moins devraient suffire si vous n&rsquo;envisagez pas de traiter des masses de données.</p>
<p><img alt="Allouez la mémoire vive pour votre machine virtuelle" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-3.jpg" title="Allocation mémoire avec VirtualBox" class="aligncenter" width="550" height="391" /></p>
<p>De même, la taille du disque dur virtuel n&rsquo;est pas très importante, puisqu&rsquo;en général on n&rsquo;a pas de gros besoins pour des sites web. J&rsquo;ai pour habitude de créer des disques dynamiques (<em>VirtualBox Disc Image</em>) de 10Go, ce qui est normalement amplement suffisant.</p>
<p><img alt="Creéez un disque virtuel pour votre machine virtuelle" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-4.jpg" title="Création d'une image de disque virtuelle" class="aligncenter" width="550" height="388" /></p>
<p>Une fois les différentes étapes remplies, votre machine est créée. Mais elle est vide, et il faut maintenant y installer notre OS. Pour cela, il va falloir « insérer » le disque d&rsquo;installation, c&rsquo;est à dire l&rsquo;iso de Ubuntu Server que vous venez de télécharger. Dans le menu <em>Configuration</em> de votre machine virtuelle, rendez-vous dans l&rsquo;onglet <em>Stockage</em> puis indiquez le chemin vers l&rsquo;iso : </p>
<p><img alt="Reliez l'iso d'Ubuntu Server à votre nouvelle machine virtuelle" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-5.jpg" title="Ajout d'une image iso" class="aligncenter" width="550" height="216" /></p>
<p>Il suffira ensuite de lancer la machine virtuelle, de la laisser démarrer sur le cdrom et de procéder à l&rsquo;installation somme toute standard de votre OS. J&rsquo;ai pour habitude de n&rsquo;installer aucun paquet à ce moment de la création de notre serveur, et de le faire à la main par la suite (ce qu&rsquo;on va voir tout de suite), mais libre à vous d&rsquo;essayer :p</p>
<h2>Configurer la machine virtuelle</h2>
<p>Maintenant que nous avons une machine virtuelle en parfait état de fonctionnement, il va falloir la transformer en un véritable serveur web, en y installant les éléments indispensables au bon fonctionnement de la plupart des sites.</p>
<p>Commencez par installer <strong>Apache</strong>, en tapant la commande suivante en ligne de commande :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install apache2</pre>
<p>Même chose pour <strong>PHP</strong> (je vous assure, le HTML c&rsquo;est bien, mais c&rsquo;est vite limité) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install php5 libapache2-mod-php5</pre>
<p><strong>MySQL</strong>, histoire de pouvoir stocker des données :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install mysql-server</pre>
<p>Et <strong>PhpMyAdmin</strong> pour avoir une belle interface web pour gérer nos bases de données :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin</pre>
<p>Redémarrez Apache pour qu&rsquo;il prenne en compte ses nouveaux amis :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo /etc/init.d/apache2 restart</pre>
<p>Enfin, je vous conseille deux petites manips. Tout d&rsquo;abord, placez un lien symbolique vers phpmyadmin dans <code>/var/www</code>, pour pouvoir y accéder plus facilement depuis la racine du serveur web :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin</pre>
<p>Puis ajoutez-vous au groupe <code>www-data</code> (le groupe du processus Apache) et rendez-le propriétaire de <code>/var/www</code> (prenez soin de remplacer <em>username</em> par votre login) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo usermod -a -G www-data username
sudo chown -R username:www-data /var/www/</pre>
<p>C&rsquo;est presque prêt, ne reste qu&rsquo;à redémarrer pour s&rsquo;assurer que tout se passe bien au démarrage de la machine virtuelle :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo reboot</pre>
<p></p>
<h2>Configurer le réseau</h2>
<p>Maintenant que nous avons un serveur web fonctionnel, il va falloir y accéder depuis l&rsquo;extérieur, ou au moins depuis la machine hôte. Plusieurs possibilités existent, mais je vous conseille d&rsquo;utiliser celle que je vais vous décrire, qui fonctionnera quel que soit l&rsquo;OS hôte.</p>
<p>Commencez par arrêter votre machine virtuelle :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo shutdown -h now</pre>
<p>Rendez-vous ensuite dans le menu <em>Préférences</em> de VirtualBox (général et non d&rsquo;une machine virtuelle) puis dans l&rsquo;onglet <em>Réseau</em>. Nous allons modifier le réseau privé hôte par défaut de VirtualBox (à priori <code>vboxnet0</code>) en cliquant sur le tournevis, et en renseignant l&rsquo;onglet <em>Interface</em> comme ceci :</p>
<p><img alt="Configuration de l'adresse IP de la carte réseau hôte" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-6.jpg" title="Configuration du réseau : interface" class="aligncenter" width="450" height="202" /></p>
<p>Et l&rsquo;onglet <em>Serveur DHCP</em> comme ceci :</p>
<p><img alt="Configuration de l'interface réseau hôte-invité" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-7.jpg" title="Configuration du réseau : dhcp" class="aligncenter" width="450" height="201" /></p>
<p>C&rsquo;est bon, vous pouvez cliquer sur OK <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Ensuite, dans la configuration de votre machine virtuelle, ajoutez une interface réseau en vous rendant dans l&rsquo;onglet <em>Configuration > Réseau</em> et en activant tout simplement la carte n°2 en mode <em>Réseau privé hôte</em> :</p>
<p><img alt="Ajout d'une seconde carte réseau à la machine virtuelle" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-8.jpg" title="Configuration du réseau : machine virtuelle" class="aligncenter" width="550" height="402" /></p>
<p>Veillez à conserver la carte n°1 active en mode NAT.</p>
<p>Démarrez ensuite la machine virtuelle pour éditer sa configuration réseau. Une fois logué, tapez :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo nano /etc/network/interfaces</pre>
<p>Modifiez le fichier pour qu&rsquo;il ressemble à ça (il s&rsquo;agit en fait de configurer votre nouvelle carte réseau, aka <em>eth1</em>) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address 10.0.0.2
        netmask 255.255.255.0
</pre>
<p>Vous venez de spécifier une IP fixe pour la seconde carte réseau, qui permettra de faire en sorte que la machine invitée soit toujours accessible depuis la même adresse.</p>
<p>Pour finir, redémarrez les interfaces réseau pour que les modifications soient prises en compte :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo /etc/init.d/networking restart</pre>
<p>Vous devriez pouvoir accéder au serveur web de votre machine virtuelle en tapant <code>http://10.0.0.2</code> dans la barre d&rsquo;adresse de votre navigateur :</p>
<p><img alt="La page d'accueil par défaut d'Apache, synonyme que tout fonctionne correctement" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-9.jpg" title="Ca marche !" class="aligncenter" width="500" height="100" /></p>
<p>Une fois ces différentes étapes réalisées, je vous conseille d&rsquo;enregistrer un premier instantané de votre machine virtuelle (touche « <code>host</code> » + T, la touche « <code>host</code> » étant par défaut la touche <code>Pomme/CMD</code> sur Mac et la touche <code>CTRL</code> droite sur les autres OS) :</p>
<p><img alt="Création d'un instantané avec VirtualBox" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-10.jpg" title="Instantané VirtualBox" class="aligncenter" width="273" height="290" /></p>
<p>N&rsquo;hésitez pas à détailler l&rsquo;intitulé et la description de chaque Instantané afin de savoir où vous en étiez dans votre travail.<br />
Ainsi, si quelque chose foire pendant la suite, vous pourrez facilement revenir en arrière en sélectionnant la sauvegarde que vous souhaitez via l&rsquo;onglet <em>Instantanés</em> du menu principal de VirtualBox :</p>
<p><img alt="Restauration d'un instantané avec VirtualBox" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-11.jpg" title="Restauration d'instantané VirtualBox" class="aligncenter" width="400" height="214" /></p>
<p>Les instantanés sont un des principaux atouts des machines virtuelles, je vous recommande donc très fortement de les utiliser !</p>
<h2>Installer les additions invité</h2>
<p>Un autre des nombreux atouts de VirtualBox, c&rsquo;est le partage de dossiers entre la machine hôte et la machine invitée, possible au travers des <em>additions invité</em>. Ces fameuses additions sont en fait des greffons ajoutés à votre machine virtuelle et qui permettent l&rsquo;interfaçage avec la machine hôte. Pour les installer, vous devez d&rsquo;abord installer quelques paquets essentiels dès qu&rsquo;on touche au noyau linux :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install build-essential linux-headers-`uname -r` dkms</pre>
<p>Il faut ensuite monter l&rsquo;image disque contenant les additions invité. Pour cela, rendez-vous dans le menu <em>Périphériques</em> de votre machine virtuelle et cliquez sur <em>Installer les additions invité</em>. L&rsquo;image iso sera ajoutée à votre machine virtuelle. Il suffit ensuite de la monter avec la commande :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo mount /dev/cdrom /media/cdrom/</pre>
<p>Une fois l&rsquo;image iso montée, lancez l&rsquo;installation des additions invité :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">cd /media/cdrom/
sudo sh ./VBoxLinuxAdditions.run</pre>
<p>Et voilà, les additions invité sont installées. Peu de différence pour vous puisque la plupart ne sont utiles que lorsque l&rsquo;on utilise une interface graphique, mais ça sera bien utile pour la suite quand même.<br />
Pour que les additions soient bien prises en compte, éteignez encore une fois la machine virtuelle :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo shutdown -h now</pre>
<p></p>
<h2>Créer un dossier partagé</h2>
<p>Un dossier partagé sera, comme son nom l&rsquo;indique, un espace de stockage partagé entre la machine hôte et la machine virtuelle. Vous aurez donc l&rsquo;équivalent d&rsquo;un FTP sauf qu&rsquo;il sera connecté automatiquement et totalement intégré à votre explorateur de fichiers favori.<br />
Voyons comment le paramétrer.</p>
<h3>Sur la machine hôte</h3>
<p>Rendez-vous dans le menu de configuration de votre machine virtuelle, dans l&rsquo;onglet <em>Dossiers partagés</em>. Vous pourrez alors ajouter un répertoire de partage de façon temporaire ou permanente, choisir l&rsquo;étendue des droits pour la machine virtuelle, ou encore paramétrer le montage automatique ou manuel du dossier. Surtout, vous lui donnerez un nom qu&rsquo;il va falloir retenir parce que vous en aurez besoin pour la suite.</p>
<p><img alt="Configuration d'un dossier partagé VirtualBox" src="http://www.diije.fr/wp-content/uploads/2012/05/virtualbox-ubuntu-12.jpg" title="Dossiers partagés Virtualbox : la machine hôte" class="aligncenter" width="450" height="265" /></p>
<h3>Sur la machine invitée</h3>
<p>Redémarrez la machine virtuelle, et montez le dossier partagé avec la commande suivante (en prenant soin de remplacer « NOM_DU_DOSSIER_DE_PARTAGE » par &#8230; le nom du dossier de partage :p) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo mount -t vboxsf NOM_DU_DOSSIER_DE_PARTAGE /var/www</pre>
<p>Si tout se passe bien, le dossier de partage sera monté à la place de <code>/var/www</code>, le répertoire de base par défaut d&rsquo;Apache. Autrement dit, votre dossier partagé contiendra tous les sites hébergés sur votre serveur. Libre à vous évidemment de modifier ce comportement, en changeant le point de montage (<code>/var/www</code>) et/ou la configuration d&rsquo;Apache.</p>
<p>Vous pouvez maintenant configurer votre dossier de partage pour qu&rsquo;il soit monté automatiquement au démarrage de votre machine virtuelle. Pour cela, il vous faut éditer <code>/etc/fstab</code> :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo nano /etc/fstab</pre>
<p>Ajoutez la ligne suivante à la fin du fichier :</p>
<pre class="brush: bash; title: ; notranslate">NOM_DU_DOSSIER_DE_PARTAGE	/var/www	vboxsf	umask=0022,gid=33,uid=33	0	0</pre>
<p>Comme précédemment, veillez à remplacer NOM_DU_DOSSIER_DE_PARTAGE par le nom de votre dossier <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Le 2e paramètre est le point de montage, le 3e le système de fichiers (à ne pas modifier, c&rsquo;est le système de fichiers propre aux dossiers partagés de VirtualBox). Pour le reste, si vous ne comprenez pas, mieux vaut ne pas y toucher <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Pour tester le bon fonctionnement de ce paramétrage, redémarrez votre serveur virtuel. En cas de problème, n&rsquo;hésitez pas à retourner dans le menu de configuration de votre machine virtuelle et à désactiver le montage automatique du dossier partagé.</p>
<p>Enfin, pour résoudre les problèmes de droits d&rsquo;écriture et de lecture éventuels, exécutez les deux commandes suivantes (en remplaçant USERNAME par votre login unix) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo usermod -a -G vboxsf USERNAME
sudo usermod -a -G vboxsf www-data</pre>
<p>Ceci ajoutera USERNAME (vous) et www-data (l&rsquo;utilisateur par défaut d&rsquo;Apache) au groupe vboxsf, qui a normalement tous les droits sur les dossiers partagés VirtualBox.</p>
<h2>Installer openssh pour le copier-coller</h2>
<p>Dernière petite astuce : le copier-coller. Sur une installation classique d&rsquo;une machine virtuelle munie d&rsquo;une interface graphique, lorsqu&rsquo;on installe les additions invité VirtualBox, il est possible de faire des copier-coller entre la machine hôte et la machine virtuelle, dans les deux sens. Malheureusement, cette fonctionnalité est dépendante de l&rsquo;interface graphique, dont votre nouveau serveur de développement est dépourvu.</p>
<p>La solution pour palier à ce problème est d&rsquo;installer openssh :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">sudo apt-get install openssh-server</pre>
<p>Connectez-vous ensuite à votre machine virtuelle depuis le terminal de votre machine hôte (pour ceux qui utilisent Windows, <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">PuTTy</a> est votre ami) :</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">ssh USERNAME@10.0.0.2</pre>
<p>Pour rappel, 10.0.0.2 est l&rsquo;adresse locale de votre serveur virtuel.</p>
<p>Vous avez donc maintenant un serveur de développement en local totalement fonctionnel, et vous pouvez éditer les fichiers de vos sites directement depuis votre machine hôte en utilisant les dossiers partagés. En plus, grâce aux instantanés, vous pouvez vous amuser à bidouiller la configuration de votre serveur sans risque de pertes de données puisque vous pourrez revenir en arrière à tout moment ! </p>
<p>Astuce de dernière minute pour ceux qui auraient tout lu : pour pouvoir également effectuer des <em>rollbacks</em> sur les fichiers de vos sites, voire synchroniser ces derniers entre plusieurs postes, pensez à utiliser un logiciel de gestion de versions comme Subversion, ou même <a href="http://db.tt/2nzWVYE">DropBox</a>.</p>
<p>Il ne vous reste plus qu&rsquo;à faire preuve d&rsquo;imagination pour vos futurs sites <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/installer-serveur-developpement-local-virtualbox-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Quick Hack : Empêcher la connexion pour les abonnés</title>
		<link>http://www.diije.fr/wordpress-hack-empecher-connexion-abonnes/</link>
		<comments>http://www.diije.fr/wordpress-hack-empecher-connexion-abonnes/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 19:40:53 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=330</guid>
		<description><![CDATA[Suite à une question de l&#8217;ami Hervé de Infiniclick, dont je vous recommande au passage l&#8217;excellent forum (et puisque je fais de la pub, pas de jaloux, le forum de Kaddiern est très bien aussi :p), voici un petit hack &#8230; <a href="http://www.diije.fr/wordpress-hack-empecher-connexion-abonnes/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Suite à une question de l&rsquo;ami Hervé de Infiniclick, dont je vous recommande au passage l&rsquo;<a href="http://forum.veille-seo.com/">excellent forum</a> (et puisque je fais de la pub, pas de jaloux, le <a href="http://www.seosphere.com/forum/">forum de Kaddiern</a> est très bien aussi :p), voici un petit hack à placer dans le fichier <code>functions.php</code> du thème de votre blog WordPress.</p>
<p style="text-align: center;"><img class="aligncenter" title="Tire-toi de là, spammeur !" src="http://www.diije.fr/wp-content/uploads/2012/05/sens-interdit.jpg" alt="Un panneau sens interdit original" width="320" height="320" /></p>
<p>Son but ? Interdire aux utilisateurs Abonnés de se connecter à votre interface d&rsquo;administration.<br />
<span id="more-330"></span></p>
<p>Placez donc ce bout de code dans le fichier <code>functions.php</code> de votre thème :</p>
<pre class="brush: php; title: ; notranslate">
function dfr_control_login() {
	//ne s'applique pas aux contributeurs, auteurs, éditeurs, admins
	if (!current_user_can('edit_posts') ){
		wp_logout();
	}
}
add_action('wp_login','dfr_control_login');
</pre>
<p>Lorsqu&rsquo;un utilisateur se connecte, l&rsquo;action <code>wp_login</code> est déclenchée, et notre fonction s&rsquo;exécute. Si l&rsquo;utilisateur en question n&rsquo;a pas l&rsquo;autorisation d&rsquo;éditer des articles (la capacité <code>edit_posts</code> pour WordPress), on exécute la fonction <a href="http://codex.wordpress.org/Function_Reference/wp_logout"><code>wp_logout()</code></a> qui va automatiquement le déconnecter.</p>
<p>Les abonnés qui tenteront de se connecter seront donc tout de suite ramenés sur l&rsquo;écran de login. Le gros défaut de ce hack est qu&rsquo;il ne fournit aucune explication à l&rsquo;utilisateur à qui l&rsquo;on a interdit de se connecter, ce qui peut être assez frustrant. J&rsquo;espère que cela vous donnera envie de creuser un peu plus pour trouver moyen de mieux faire, et si c&rsquo;est le cas, partagez donc votre solution en commentaires !</p>
<p>Enfin, je vous encourage à consulter la liste des <a href="http://codex.wordpress.org/Roles_and_Capabilities">rôles et capacités de WordPress</a> au cas où vous souhaiteriez adapter ce code pour interdire le login à un type d&rsquo;utilisateur particulier <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div class='yarpp-related-rss'>
<p>Articles complémentaires :</p><ul>
<li><a href="http://www.diije.fr/wordpress-hack-declencher-actions/" rel="bookmark" title="Quick Hack : Déclencher des actions">Quick Hack : Déclencher des actions </a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wordpress-hack-empecher-connexion-abonnes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WP Link Analysis : afficher les liens contenus dans un article</title>
		<link>http://www.diije.fr/wp-link-analysis/</link>
		<comments>http://www.diije.fr/wp-link-analysis/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 09:30:24 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=228</guid>
		<description><![CDATA[A la veille de la Saint Valentin, un petit cadeau pour vous ! Lorsqu&#8217;on administre une plateforme de blogs ou un blog multi-utilisateurs, il est parfois utile de jeter un œil aux liens placés dans les articles par les différents &#8230; <a href="http://www.diije.fr/wp-link-analysis/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A la veille de la Saint Valentin, un petit cadeau pour vous !</p>
<p>Lorsqu&rsquo;on administre une plateforme de blogs ou un blog multi-utilisateurs, il est parfois utile de jeter un œil aux liens placés dans les articles par les différents contributeurs. En effet, il n&rsquo;est pas rare d&rsquo;avoir affaire à quelques spammeurs, qui n&rsquo;hésitent pas à bourrer leurs contenus de liens vers leurs sites de qualité discutable.<br />
Je ne sais pas pour vous, mais me concernant, je préfère que mes sites ne servent pas de splog <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img alt="Analysez les liens à l&#039;intérieur de vos articles" src="http://www.diije.fr/wp-content/uploads/2012/02/wp-link-analysis-569x184.jpg" title="WP Link Analysis" class="aligncenter" width="569" height="184" /></p>
<p>Malheureusement, passer en revue les liens insérés dans les contenus peut s&rsquo;avérer très chronophage, d&rsquo;autant plus quand certains petits malins s&rsquo;arrangent pour que leurs liens ne soient pas facilement visibles (plusieurs liens qui se succèdent, des liens sans anchor text, &#8230;).<span id="more-228"></span></p>
<p>J&rsquo;ai donc mis au point ce petit plugin qui permet de gagner un temps considérable sur les tâches de modération de vos sites. Une fois installé et activé, vous verrez apparaître une metabox sur l&rsquo;interface d&rsquo;administration de votre site, avec les url cibles (href) et ancres des liens présents dans l&rsquo;article en cours de modération :</p>
<p><img alt="Voir les liens d&#039;un article d&#039;un seul coup d&#039;oeil avec WP Link Analysis" src="http://www.diije.fr/wp-content/uploads/2012/05/wp-link-analysis-1.jpg" title="Analyse des liens d&#039;un article" class="aligncenter" width="722" height="348" /></p>
<p>En un coup d&rsquo;oeil, on peut voir la totalité des liens de l&rsquo;article et les visiter si besoin. Plus besoin de devoir parcourir à l&rsquo;oeil nu le code source !</p>
<p>Il n&rsquo;est pas impossible que ce plugin évolue prochainement pour vous proposer davantage de fonctionnalités, mais en attendant je vous encourage à télécharger dès maintenant <a href="http://downloads.wordpress.org/plugin/wp-link-analysis.zip">WP Link Analysis sur wordpress.org</a> !</p>
<p><a href="http://wordpress.org/extend/plugins/wp-link-analysis/">La page du plugin sur wordpress.org</a></p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wp-link-analysis/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Que deviendront les plateformes de liens en 2012</title>
		<link>http://www.diije.fr/seo-avenir-plateformes-netlinking-2012/</link>
		<comments>http://www.diije.fr/seo-avenir-plateformes-netlinking-2012/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 06:00:08 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[Référencement Naturel]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=181</guid>
		<description><![CDATA[Aujourd&#8217;hui, vous allez être inondés de contenus. A l’initiative de Daniel de Seomix, nous sommes 17 à publier, le même jour à la même heure, notre avis sur les perspectives que nous réserve 2012 en ce qui concerne les plateformes &#8230; <a href="http://www.diije.fr/seo-avenir-plateformes-netlinking-2012/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, vous allez être inondés de contenus. A l’initiative de <a href="http://www.seomix.fr/">Daniel de Seomix</a>, nous sommes 17 à publier, le même jour à la même heure, notre avis sur les perspectives que nous réserve 2012 en ce qui concerne les plateformes de contenus sur le web. Je vous encourage donc à aller voir le point de vue des collègues :</p>
<ul>
<li><a href="http://4h18.com/2012/01/diig-communique-presse-reseaux-sociaux-2012">4h18</a></li>
<li><a href="http://blog.axe-net.fr/plateformes-communiques-presse-referencement-2012/">Axenet</a></li>
<li><a href="http://www.blog-referencement-seo.fr/black-hat/utiliser-facilement-rapidement-sans-risques-les-digg-bookmarks-en-black-hat.php">Bruno Hug</a></li>
<li><a href="http://cwm-consulting.over-blog.com/article-plateformes-de-contenus-et-referencement-en-2012-96887735.html">CWM Consulting</a></li>
<li><a href="http://www.informatclic.com/acpdigg/">Djolhan</a></li>
<li><a href="http://el-annuaire.blogspot.com/2012/01/plateformes-de-contenus-et_21.html">Elannu</a></li>
<li><a href="http://www.emarketingtuner.com/mesurer-le-succes-des-plateformes-de-contenu/">Florian Giudicelli</a></li>
<li><a href="http://blog.infiniclick.fr/articles/annuaire-cp-digg-une-moderation-exigeante.html">Infiniclick</a></li>
<li><a href="http://www.jambonbuzz.com/referencement/levolution-des-backlinks-de-cp">Jambon Buzz</a></li>
<li><a href="http://www.keeg.fr/2012/01/22/communique-presse-liens-referrer/">Keeg</a></li>
<li><a href="http://www.naunaute.com/annuaires-cp-digg-like-2012-85">Lionel Miraton</a></li>
<li><a href="http://www.vuduweb.fr/referencement-naturel/avenir-annuaire-portail-seo-2012/">Nicolas Robineau</a></li>
<li><a href="http://blog.abondance.com/2012/01/net-blingbling-une-prestation-de_22.html">Olivier Andrieu</a></li>
<li><a href="http://www.renaud-joly.fr/index.php/post/audit-seo">Renaud Joly</a></li>
<li><a href="http://www.seoblackout.com/2012/01/22/outils-netlinking-2012/">SeoBlackout</a></li>
<li><a href="http://www.seomix.fr/referencement/naturel/seo-plateforme-netlinking/">SeoMix</a></li>
</ul>
<p>Après cette belle liste de liens qui m&rsquo;a pris au moins 15 minutes à mettre en forme, il est temps de passer aux choses sérieuses. Alors voilà, my 2 cents.</p>
<h2>Etat des lieux</h2>
<p>Je suis à la fois utilisateur et administrateur de plateformes de contenus, qu’il s’agisse de blogs, d’annuaires, de communiqués de presse ou de digg-likes. J’ai donc une vision des deux côtés de la barrière, si barrière il y a, puisqu’après tout, soyons clairs, le but du jeu reste de faire des liens.</p>
<p>La prolifération des plateformes de communiqués de presse ces derniers temps, qu’ils soient thématiques ou généraliste, est à première vue une bonne chose pour les référenceurs qui les utilisent : davantage de domaines référents, davantage d’endroits où placer ses liens.<br />
<span id="more-181"></span><br />
Mais cette prolifération risque également d’attirer les yeux du grand G sur ce type de plateformes. On aura beau créer des sites réservés à certaines thématiques, cacher les noms des auteurs ou publier des contenus sans liens pour noyer le poisson, certains ont déjà commencé à <a href="http://www.seo-fail.com/coup-de-gueule/la-facticite-dun-lien-selon-google.shtml">intéresser les équipes de lutte anti-spam et autres Quality Raters</a>.</p>
<h2>Duper Google</h2>
<div style="max-width: 436px" class="wp-caption aligncenter"><img alt="Google Panda, filtre sur l&#039;index de Google destiné à lutter contre les fermes de contenus" src="http://www.diije.fr/wp-content/uploads/2012/05/google-panda.png" title="Google Panda, le filtre censé lutter contre les fermes de contenus" width="426" height="164" /><p class="wp-caption-text">Après Panda, que nous réserve Google en 2012 ?</p></div>
<p>Aujourd&rsquo;hui l&rsquo;enjeu n&rsquo;est plus de trouver des endroits où publier ses contenus, mais plutôt de trouver le moyen de maquiller suffisamment nos fermes de liens pour qu&rsquo;elles n&rsquo;attirent pas l&rsquo;attention. Je vois des idées fuser dans tous les sens : CMS exotiques, liens vers des sites d&rsquo;autorité, « un contenu sans liens sortants pour 2 contenus avec », interview de votre site &#8230; Au moins la sphère SEO n&rsquo;a pas cessé de fourmiller, c&rsquo;est plutôt bon signe.</p>
<p>Il est évident que, la plupart des sites de communiqués de presse SEO, des annuaires ou des digg-likes utilisant des solutions techniques très similaires voire identiques, il doit bien être possible quand on a la puissance de calcul d&rsquo;un moteur de recherche de les détecter. Encore que &#8230; Est-il si facile pour un algorithme de déterminer quel site est une ferme de liens et quel autre présente du « contenu pertinent » ? Doit-on s&rsquo;attendre à voir fleurir en 2012 un filtre ou une mise à jour de l&rsquo;algo destinée particulièrement à lutter contre la génération de liens « non-naturels » ?</p>
<p>Je crois pour ma part que nos plateformes de publication ont, pour la plupart, encore de beaux jours devant elles. </p>
<h2>Et après ?</h2>
<p>Malgré tout, on se retrouve aujourd&rsquo;hui avec une multitude de sites dont la plupart n&rsquo;apportent que peu de jus et sont assez peu utilisés. Finalement les plateformes dignes d&rsquo;intérêt sont toujours les mêmes, et on en a déjà fait le tour. Bien sûr, leur utilisation reste toujours intéressante, et on peut compter sur leurs administrateurs pour faire en sorte qu&rsquo;elles évoluent.</p>
<p>Mais le modèle du site de communiqués de presse gratuit a peut être fait son temps. Certains ont déjà choisi de lancer des offres payantes permettant de publier des contenus chez eux, et je les comprends : après tout, modérer les articles soumis (je ne parlerai pas de la qualité desdits articles, je ne voudrais vexer personne :p), c&rsquo;est du temps. Passer du temps bénévolement pour aider des prestataires à satisfaire leurs clients, ça va 5 minutes. Je ne vois pas de raisons pour que ce type de services ne se développe pas, d&rsquo;autant que la qualité suit.</p>
<p>Je pense que nous devons donc continuer d&rsquo;être imaginatifs, et trouver de nouvelles pistes pour le netlinking. Nouvelles ou pas d&rsquo;ailleurs, puisqu&rsquo;après tout, certaines vieilles recettes fonctionnent toujours aussi bien <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div class='yarpp-related-rss yarpp-related-none'>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/seo-avenir-plateformes-netlinking-2012/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Quick Hack : Déclencher des actions</title>
		<link>http://www.diije.fr/wordpress-hack-declencher-actions/</link>
		<pubDate>Mon, 21 Nov 2011 13:30:37 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=169</guid>
		<description><![CDATA[Si vous avez déjà consulté ou mis en place des hacks sur votre blog WordPress, vous devez sans nul doute avoir déjà rencontré la fonction add_action( $tag , $function ). Cette fonction permet d&#8217;indiquer à WordPress qu&#8217;il faut exécuter une &#8230; <a href="http://www.diije.fr/wordpress-hack-declencher-actions/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Si vous avez déjà consulté ou mis en place des hacks sur votre blog WordPress, vous devez sans nul doute avoir déjà rencontré la fonction <code>add_action( $tag , $function )</code>. Cette fonction permet d&rsquo;indiquer à WordPress qu&rsquo;il faut exécuter une fonction (<code>$function</code>) donnée lorsque l&rsquo;action (<code>$tag</code>) est déclenchée.</p>
<p>WordPress propose déjà une foultitude d&rsquo;<a href="http://codex.wordpress.org/Plugin_API/Action_Reference">actions prédéfinies</a> dans le noyau. Toutes ces actions (ou <em>hooks</em>) sont déclenchées par les différentes requêtes possibles sur un blog WordPress. Mais il est possible d&rsquo;aller plus loin !<span id="more-169"></span></p>
<h2>Déclenchez vous-même une action</h2>
<p>Il arrive souvent, lorsqu&rsquo;on développe un thème ou un plugin, qu&rsquo;on ait besoin de déclencher une action à un endroit précis d&rsquo;une page (par exemple) et que cette action ne soit malheureusement pas activée à cet endroit.<br />
Dans ce cas-là la plupart du temps, on modifie la page en question pour y insérer un appel à la fonction qui va bien. Certes, ça fonctionne, et c&rsquo;est suffisant lorsqu&rsquo;on n&rsquo;a qu&rsquo;une seule fonction à utiliser.<br />
Mais lorsque l&rsquo;on veut pouvoir faire des choses un peu plus complexes, par exemple exécuter toutes les fonctions correspondantes à une action, on se retrouve souvent limité. Pourtant, une fonction existe dans le <code>core</code> de WordPress pour déclencher des actions : <code>do_action()</code> !</p>
<p>En fait, il suffit d&rsquo;insérer dans votre code la ligne suivante pour déclencher une action en particulier, et donc exécuter toutes les fonctions qui s&rsquo;y sont « branchées » :</p>
<pre class="brush: php; title: ; notranslate">&lt;?php do_action( $tag ); ?&gt;</pre>
<p>Il vous suffit donc de trouver la bonne action à déclencher, et le tour est joué !</p>
<p><a href="http://xkcd.com/149/"><img alt="Sudo make me a sandwich" src="http://imgs.xkcd.com/comics/sandwich.png" title="Make me a sandwich" class="aligncenter" width="360" height="299" /></a></p>
<h2>Créez vos propres actions !</h2>
<p>Avec cette fonction, vous pouvez également créer vos propres actions, tout simplement en remplaçant <code>$tag</code> par un nom d&rsquo;action qui n&rsquo;existe pas dans le <em>core</em> de WordPress (ni dans vos plugins ou votre thème), et en y branchant ensuite les fonctions qui vont bien.<br />
De cette façon, vous pouvez adapter encore un peu plus ce CMS à vos besoins.</p>
<p>Vous trouverez davantage d&rsquo;informations et des exemples d&rsquo;utilisation de <code>do_action</code> sur <a href="http://codex.wordpress.org/Function_Reference/do_action">la page du Codex correspondante</a>.</p>
<div class='yarpp-related-rss'>
<p>Articles complémentaires :</p><ul>
<li><a href="http://www.diije.fr/wordpress-hack-empecher-connexion-abonnes/" rel="bookmark" title="Quick Hack : Empêcher la connexion pour les abonnés">Quick Hack : Empêcher la connexion pour les abonnés </a></li>
</ul>
</div>
]]></content:encoded>
			</item>
		<item>
		<title>Autoriser l&#8217;emploi de HTML dans les descriptions de catégories</title>
		<link>http://www.diije.fr/wordpress-autoriser-emploi-html-descriptions-categories/</link>
		<comments>http://www.diije.fr/wordpress-autoriser-emploi-html-descriptions-categories/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 10:20:33 +0000</pubDate>
		<dc:creator><![CDATA[Julien Deneuville]]></dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.diije.fr/?p=158</guid>
		<description><![CDATA[Ce petit hack m&#8217;a été inspiré par une discussion sur le forum veille SEO, lancé par Hervé. Dans sa configuration de base, WordPress n&#8217;autorise l&#8217;emploi que de quelques balises HTML seulement dans les descriptions des catégories (a, strong notamment). Cependant, &#8230; <a href="http://www.diije.fr/wordpress-autoriser-emploi-html-descriptions-categories/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ce petit hack m&rsquo;a été inspiré par une discussion sur le <a href="http://forum.veille-seo.com/">forum veille SEO</a>, lancé par <a href="https://twitter.com/Infiniclick">Hervé</a>.</p>
<p>Dans sa configuration de base, WordPress n&rsquo;autorise l&#8217;emploi que de quelques balises HTML seulement dans les descriptions des catégories (a, strong notamment). Cependant, dans nos réflexions de SEO, on apprécie souvent de pouvoir travailler la description des catégories, ne serait-ce que pour limiter le <em>duplicate content</em>. Et pour cela, on aimerait bien avoir la possibilité d&rsquo;utiliser d&rsquo;autres balises HTML.</p>
<p>Un petit bout de code à placer dans le fichier <code>functions.php</code> de votre thème permet de régler ce léger problème :<span id="more-158"></span></p>
<pre class="brush: php; title: ; notranslate">
$filters = array('term_description','category_description','pre_term_description');
foreach ( $filters as $filter ) {
    remove_filter($filter, 'wp_filter_kses');
    remove_filter($filter, 'strip_tags');
} 
</pre>
<p>Un peu d&rsquo;explications : WordPress considère les catégories comme des <em>terms</em>, traités de la même façon que les tags ou les taxonomies. Quand on crée ou modifie une catégorie, elle est donc soumise aux mêmes règles que n&rsquo;importe quel terme. Dans des termes un peu plus techniques, les filtres <code>term_description</code> et <code>pre_term_description</code> s&rsquo;appliquent de la même façon que <code>category_description</code>, au moment où la description est enregistrée en base de données.<br />
Pour pousser la réflexion un peu plus loin, il suffirait d&rsquo;ajouter les filtres adéquats dans l&rsquo;array <code>$filters</code> pour pouvoir également utiliser du HTML dans les descriptions de tags ou de taxonomies.</p>
<p>Quant aux filtres que nous retirons, <code><a href="http://codex.wordpress.org/Function_Reference/wp_filter_kses">wp_filter_kses</a></code> fait appel à la librairie <a href="http://sourceforge.net/projects/kses/">kses</a> pour retirer une bonne partie des balises HTML présentes dans une chaîne de caractères, en ne laissant que certaines balises autorisées (strong, a, em &#8230;).<br />
Enfin, la fonction PHP <code><a href="http://php.net/manual/fr/function.strip-tags.php">strip_tags</a></code> retire notamment le code PHP et JavaScript. Nous avions vu l&rsquo;utilisation de cette fonction adaptée pour WordPress lorsque nous voulions <a hre="http://www.diije.fr/wordpress-supprimer-html-commentaires/">supprimer le HTML dans les commentaires</a>.</p>
<p>Avec ces 5 lignes de code, nous pouvons maintenant ajouter toutes les balises que nous voulons dans les descriptions de nos catégories. Faites vous plaisir !</p>
<p>Ce petit hack illustre encore une fois les larges possibilités offertes par WordPress en quelques lignes de code. Pour les plus pressés ou pour ceux qui ne souhaitent pas se pencher dans le code, sachez qu&rsquo;il existe des plugins qui vous permettront de faire la même chose et ajouteront un éditeur Wysiwyg pour vous faciliter la rédaction des descriptions. N&rsquo;étant pas un fervent utilisateur de plugins, je vous laisse chercher <img src="https://s.w.org/images/core/emoji/2.4/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div class='yarpp-related-rss'>
<p>Articles complémentaires :</p><ul>
<li><a href="http://www.diije.fr/wordpress-supprimer-html-commentaires/" rel="bookmark" title="Supprimer les balises HTML dans les commentaires">Supprimer les balises HTML dans les commentaires </a></li>
<li><a href="http://www.diije.fr/wordpress-supprimer-html-titre-articles/" rel="bookmark" title="Supprimer le html dans le titre des articles">Supprimer le html dans le titre des articles </a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diije.fr/wordpress-autoriser-emploi-html-descriptions-categories/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
