<?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>Là-haut....enfin plus trop !</title>
	<atom:link href="http://blog.lahaut.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lahaut.info</link>
	<description>De tout et de rien</description>
	<lastBuildDate>Tue, 31 Jan 2012 07:52:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>e-Tecely : beta-test du service</title>
		<link>http://blog.lahaut.info/2012/01/e-tecely-beta-test-du-service/</link>
		<comments>http://blog.lahaut.info/2012/01/e-tecely-beta-test-du-service/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 20:44:54 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[D'utilité publique]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=800</guid>
		<description><![CDATA[Même si on casse souvent du sucre sur leur dos (retards, site web qui date, pas de données ouvertes, etc), les TCL savent aussi vivre avec leur temps et surtout nous faciliter la vie. La preuve en est avec le &#8230; <a href="http://blog.lahaut.info/2012/01/e-tecely-beta-test-du-service/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Même si on casse souvent du sucre sur leur dos (retards, site web qui date, pas de données ouvertes, etc), les TCL savent aussi vivre avec leur temps et surtout nous faciliter la vie.</p>
<p>La preuve en est avec le projet e-Tecely, qui arrive enfin dans sa période de beta-test (avant un lancement en mars 2012).</p>
<p>En quoi ca consiste? Pour l&#8217;instant, la possibilité de gérer son abonnement (modifier ses informations, recharger sa carte pour les détenteurs d&#8217;un Pass Partout, le forfait rechargeable au mois) depuis son domicile, de 2 manières :</p>
<ul>
<li>Paiement en ligne puis rechargement direct via un lecteur USB (moins de 10€) branché sur l&#8217;ordinateur</li>
<li>Paiement en ligne puis rechargement via une borne située dans les stations de métro et autres lieux de passage, comme celle-ci :</li>
</ul>
<div id="attachment_803" class="wp-caption aligncenter" style="width: 160px"><a href="http://blog.lahaut.info/wp-content/uploads/2012/01/mardi16aot2011001.jpg"><img class="size-thumbnail wp-image-803" title="Photo d'une borne e-Tecely à la station Charpennes" src="http://blog.lahaut.info/wp-content/uploads/2012/01/mardi16aot2011001-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">Borne e-Tecely</p></div>
<p>Le test se déroulera durant tout le mois de février et je ne manquerais pas de vous faire suivre mes péripéties.</p>
<p>M&#8217;ont été fournis :</p>
<ul>
<li>Un jeu d&#8217;identifiants pour me connecter au site</li>
<li>Un ticket &laquo;&nbsp;collector&nbsp;&raquo; (en raison de sa durée de validité de 11 jours!)</li>
</ul>
<div id="attachment_806" class="wp-caption aligncenter" style="width: 160px"><a href="http://blog.lahaut.info/wp-content/uploads/2012/01/tcl.jpg"><img class="size-thumbnail wp-image-806" title="Ticket TCL valable 11 jours, pour le beta-test e-Tecely" src="http://blog.lahaut.info/wp-content/uploads/2012/01/tcl-150x150.jpg" alt="Ticket TCL valable 11 jours, pour le beta-test e-Tecely" width="150" height="150" /></a><p class="wp-caption-text">Ticket TCL valable 11 jours, pour le beta-test e-Tecely</p></div>
<p>Petite analyse rapide :</p>
<ul>
<li><strong>Pour</strong> :</li>
<ul>
<li>Fini la queue aux bornes TCL, avec des utilisateurs qui ne savent pas s&#8217;en servir, n&#8217;ont pas leur carte bleue, etc</li>
<li>Pratique si on n&#8217;a pas de bornes sur son trajet</li>
</ul>
<li><strong>Contre</strong> :</li>
<ul>
<li>Coût du lecteur (même s&#8217;il reste faible)</li>
<li>Une opération &laquo;&nbsp;en plus du paiement&nbsp;&raquo; reste nécessaire, que cela soit via un lecteur USB ou sur les bornes e-Tecely</li>
<li>Pas de réduction pour les utilisateurs privilégiant la dématérialisation (mais le projet n&#8217;étant pas encore lancé, aucune information à ce sujet)</li>
</ul>
</ul>
<p>Pas d&#8217;analyse ergonomique du site, celui-ci étant en panne à l&#8217;heure ou j&#8217;écris cet article.</p>
<p>(sources : <a title="Sujet du forum Lyon en Ligne parlant de e-Tecely" href="http://www.lyon-en-lignes.org/forum/index.php/topic,11600.msg164453.html#msg164453">Lyon en Lignes</a> pour la photo de la borne )</p>
<p><strong>Questions / Réponses :</strong></p>
<ul>
<li>Pourra-t-on gérer/recharger plusieurs comptes depuis un même ordinateur ?</li>
<ul>
<li>Oui, sans problème</li>
</ul>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2012/01/e-tecely-beta-test-du-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exposition “Poser son regard” par Loïc Tamisier</title>
		<link>http://blog.lahaut.info/2012/01/exposition-poser-son-regard-par-loic-tamisier/</link>
		<comments>http://blog.lahaut.info/2012/01/exposition-poser-son-regard-par-loic-tamisier/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 18:43:32 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Photo]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=786</guid>
		<description><![CDATA[A partir du 17 décembre 2011 jusqu’au 14 janvier 2012 à la bibliothèque de Taluyers, Loïc Tamiser, un de mes amis, photographe en devenir, expose ses clichés sur le thème &#171;&#160;Poser son regard&#160;&#187; Horaires : Mardi : 16h30 à 18h30 &#8230; <a href="http://blog.lahaut.info/2012/01/exposition-poser-son-regard-par-loic-tamisier/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A partir du 17 décembre 2011 jusqu’au 14 janvier 2012 à la bibliothèque de Taluyers, Loïc Tamiser, un de mes amis, photographe en devenir, expose ses clichés sur le thème &laquo;&nbsp;Poser son regard&nbsp;&raquo;</p>
<p><a href="http://blog.lahaut.info/wp-content/uploads/2012/01/LoicTamisier_PoserSonRegard.jpg"><img class="aligncenter size-medium wp-image-787" title="LoicTamisier_PoserSonRegard" src="http://blog.lahaut.info/wp-content/uploads/2012/01/LoicTamisier_PoserSonRegard-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>Horaires : Mardi : 16h30 à 18h30 / Mercredi : 14h30 à 17h00 / Vendredi : 16h30 à 18h00 / Samedi : 10h00 à 12h00</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2012/01/exposition-poser-son-regard-par-loic-tamisier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traduction française actualisée du plugin WordPress &#171;&#160;Search Unleashed&#160;&#187;</title>
		<link>http://blog.lahaut.info/2011/12/traduction-francaise-search-unleashed/</link>
		<comments>http://blog.lahaut.info/2011/12/traduction-francaise-search-unleashed/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 22:43:16 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Traduction]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=754</guid>
		<description><![CDATA[Ayant eu besoin récemment du plugin &#171;&#160;Search Unleashed&#160;&#187; pour un blog WordPress, et constatant que la version dans la langue de Molière n&#8217;était pas à jour, j&#8217;ai donc réalisé la traduction française actualisée du plugin Search Unleashed pour WordPress (décompressez &#8230; <a href="http://blog.lahaut.info/2011/12/traduction-francaise-search-unleashed/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ayant eu besoin récemment du plugin &laquo;&nbsp;<a title="Page du plugin &quot;Search Unleashed&quot; pour WordPress sur WordPress.org" href="http://wordpress.org/extend/plugins/search-unleashed/" target="_blank">Search Unleashed</a>&nbsp;&raquo; pour un blog WordPress, et constatant que la version dans la langue de Molière n&#8217;était pas à jour, j&#8217;ai donc réalisé la <a title="Traduction française actualisée du plugin Search Unleashed pour WordPress" href="http://blog.lahaut.info/wp-content/uploads/2011/12/SearchUnleashed_FR.zip">traduction française actualisée du plugin Search Unleashed pour WordPress</a></p>
<p>(décompressez ce fichier .zip dans le dossier du module)</p>
<p>Merci à <a title="Site de Vincent Granger" href="http://www.pasdepanique.net/" target="_blank">Vincent Granger</a> pour la traduction initiale.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/12/traduction-francaise-search-unleashed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser la navigation à facettes de Prestashop</title>
		<link>http://blog.lahaut.info/2011/12/utiliser-la-navigation-a-facettes-de-prestashop/</link>
		<comments>http://blog.lahaut.info/2011/12/utiliser-la-navigation-a-facettes-de-prestashop/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 22:04:43 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Prestashop]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=692</guid>
		<description><![CDATA[&#160; La navigation à facettes, apparue avec la version 1.4 de Prestashop (mais réellement utilisable à partir de la version 1.4.5), permet d&#8217;une manière assez simple de définir des critères pour filtrer les résultats d&#8217;une catégorie (comme on le retrouve &#8230; <a href="http://blog.lahaut.info/2011/12/utiliser-la-navigation-a-facettes-de-prestashop/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p style="display: inline-block; width: 70%; vertical-align: top;"><span style="display: block; padding-bottom: 10px;">La navigation à facettes, apparue avec la version 1.4 de Prestashop (mais réellement utilisable à partir de la version 1.4.5), permet d&#8217;une manière assez simple de définir des critères pour filtrer les résultats d&#8217;une catégorie (comme on le retrouve sur Pixmania ou d&#8217;autres sites de e-commerce).</span><span style="display: block; padding-bottom: 10px;">Elle fonctionne de la manière suivante : vous allez déterminer des modèles (c&#8217;est à dire un ensemble de critères, comme les caractéristiques (capacité, etc), les marques, l&#8217;état du stock, etc).</span><span style="display: block; padding-bottom: 10px;">Ensuite vous allez pouvoir associer ces modèles à des catégories, par exemple le modèle &laquo;&nbsp;pour les appareils photo&nbsp;&raquo; aux catégories comprenant les appareils photo.</span></p>
<p style="display: inline-block; width: 25%; vertical-align: top;"><a href="http://blog.lahaut.info/wp-content/uploads/2011/12/exemple.png"><img class="size-medium wp-image-693 " title="exemple" src="http://blog.lahaut.info/wp-content/uploads/2011/12/exemple-141x300.png" alt="" width="105" height="225" /></a></p>
<p><span id="more-692"></span></p>
<p>Chaque modèle pourra être utilisé pour autant de catégories que vous le souhaitez.</p>
<p>Pour mettre en place la navigation à facettes sur une catégorie, suivez ces étapes :</p>
<ul>
<li>Dans l&#8217;administration de votre boutique, allez dans Allez dans <strong>Modules</strong> / <strong><strong>Bloc navigation à facettes</strong></strong></li>
<li>Allez dans <strong>Construisez vos propres modèles de filtre</strong> et cochez <strong>spécifiques Catégories (0 sélectionnée(s))</strong> :<br />
<a href="http://blog.lahaut.info/wp-content/uploads/2011/12/1.png"><img class="alignnone size-thumbnail wp-image-719" title="Choix périmètre d'application de la navigation à facettes" src="http://blog.lahaut.info/wp-content/uploads/2011/12/1-150x150.png" alt="" width="150" height="150" /></a></li>
<li>Dans le bloc qui s&#8217;affiche alors, sélectionnez les catégories sur lesquelles vous voulez appliquer ce modèle et cliquez sur <strong>Sauvegarder la sélection</strong> :<br />
<a href="http://blog.lahaut.info/wp-content/uploads/2011/12/2.png"><img class="alignnone size-thumbnail wp-image-720" title="Sélection des catégories pour la navigation à facettes" src="http://blog.lahaut.info/wp-content/uploads/2011/12/2-150x150.png" alt="" width="150" height="150" /></a></li>
<li>Dans la liste des critères qui s&#8217;affiche alors, vous allez pouvoir en sélectionner certains, en les cochant :<br />
<a href="http://blog.lahaut.info/wp-content/uploads/2011/12/3.png"><img class="alignnone size-thumbnail wp-image-723" title="Sélection des critères pour la navigation à facettes" src="http://blog.lahaut.info/wp-content/uploads/2011/12/3-150x150.png" alt="" width="150" height="150" /></a></li>
<li>Donnez ensuite un nom à votre sélection de critères et cliquez sur <strong>Sauvegarder ce modèle de filtres</strong></li>
</ul>
<p>Si on prend l&#8217;exemple ci-dessus, cela donnera coté boutique, seulement pour la catégorie &laquo;&nbsp;Accessoires&nbsp;&raquo;, un bloc de navigation à facettes comme celui-là :<br />
<a href="http://blog.lahaut.info/wp-content/uploads/2011/12/4.png"><img class="alignnone size-full wp-image-724" title="4" src="http://blog.lahaut.info/wp-content/uploads/2011/12/4.png" alt="" width="205" height="174" /></a></p>
<p><strong>Note importante :</strong> <span style="text-decoration: underline;">les critères disponibles sur la droite sont dépendants de la catégorie que vous avez choisi.</span></p>
<p>Dans l&#8217;exemple cité au dessus, aucun produit n&#8217;a de &laquo;&nbsp;caractéristiques&nbsp;&raquo; (au sens Prestashop). Si à l&#8217;inverse je sélectionne la catégorie &laquo;&nbsp;iPods&nbsp;&raquo; qui contient, elle, des produits ayant des &laquo;&nbsp;caractéristiques&nbsp;&raquo;, les choix à notre disposition seront différents :<br />
<a href="http://blog.lahaut.info/wp-content/uploads/2011/12/5.png"><img class="alignnone size-medium wp-image-725" title="Autres critères disponibles pour la navigation à facettes" src="http://blog.lahaut.info/wp-content/uploads/2011/12/5-300x248.png" alt="" width="300" height="248" /></a><!--:--><!--:de--></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/12/utiliser-la-navigation-a-facettes-de-prestashop/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Traduction française actualisée du plugin WordPress &#171;&#160;Custom Field Template&#160;&#187;</title>
		<link>http://blog.lahaut.info/2011/12/traduction-francaise-actualisee-du-plugin-wordpress-custom-field-template/</link>
		<comments>http://blog.lahaut.info/2011/12/traduction-francaise-actualisee-du-plugin-wordpress-custom-field-template/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 12:37:29 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>
		<category><![CDATA[Traduction]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=688</guid>
		<description><![CDATA[Dans un de mes récents projets, j&#8217;ai (re)découvert le plugin &#171;&#160;Custom Field Template&#160;&#187;, qui vous permet de facilement créer des formulaires d&#8217;édition de vos champs personnalisés (en clair, étendre les champs associés à un article, par exemple pour des annonces &#8230; <a href="http://blog.lahaut.info/2011/12/traduction-francaise-actualisee-du-plugin-wordpress-custom-field-template/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dans un de mes récents projets, j&#8217;ai (re)découvert le plugin &laquo;&nbsp;Custom Field Template&nbsp;&raquo;, qui vous permet de facilement créer des formulaires d&#8217;édition de vos champs personnalisés (en clair, étendre les champs associés à un article, par exemple pour des annonces immobilières).</p>
<p>La traduction française fournie avec la dernière version (au 01/12/2011) datant un peu, voici la <a title="Traduction française du plugin &quot;Custom Field Template&quot; pour WordPress" href="https://www.dropbox.com/s/gyauuyf500ot4fk/custom-field-template-fr_FR.zip">traduction française actualisée du plugin Custom Field Template pour WordPress</a></p>
<p>(décompressez le contenu du .zip et copiez-le directement dans le dossier du plugin)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/12/traduction-francaise-actualisee-du-plugin-wordpress-custom-field-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passer de BlogSpirit à WordPress : nouvelle version de l&#8217;importeur !</title>
		<link>http://blog.lahaut.info/2011/11/importer-de-blogspirit-a-wordpress-nouvelle-version/</link>
		<comments>http://blog.lahaut.info/2011/11/importer-de-blogspirit-a-wordpress-nouvelle-version/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 12:22:07 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Petits bouts (de code)]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=683</guid>
		<description><![CDATA[Suite à un commentaire de Capripot, j&#8217;ai découvert son travail sur l&#8217;importeur BlogSpirit vers WordPress que j&#8217;avais moi-même repris à l&#8217;époque. Il a notamment corrigé les problèmes suivants : * importation des article se basant sur la page complète de &#8230; <a href="http://blog.lahaut.info/2011/11/importer-de-blogspirit-a-wordpress-nouvelle-version/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite à un <a title="Commentaire de Capripot signalant sa nouvelle version de l'importeur BlogSpirit vers WordPress" href="http://blog.lahaut.info/outils-divers-et-varies/importer-un-blog-dans-wordpress/comment-page-1/#comment-5831">commentaire de Capripot</a>, j&#8217;ai découvert son travail sur l&#8217;importeur BlogSpirit vers WordPress que j&#8217;avais moi-même repris à l&#8217;époque. Il a notamment corrigé les problèmes suivants :</p>
<p>* importation des article se basant sur la page complète de la liste des articles par catégorie<br />
* « / » en trop à la fin de l’adresse ce qui empêchait l’import des articles d’une catégorie<br />
* bug de version lors de l’import dans wordpress)<br />
* script un peu plus bavard<br />
* choix du nom au départ ou écriture du nom du blog dans NOM_SITE.txt<br />
* dialog.rb renommé en import.rb pour plus de clareté<br />
* non blocage du script à la fin<br />
* correction de l’import des commentaires<br />
* ajout d’un fichier LISEZ-MOI</p>
<p><a href="http://www.capripot.info/Script_import_BlogSpirit-Wordpress.zip">Télécharger nouvelle version importeur BlogSpirit vers WordPress</a></p>
<p>Son site : <a href="http://www.capripot.com/">http://www.capripot.com/</a></p>
<p>Et vous pouvez retrouver l&#8217;outil pour passer d&#8217;OverBlog à WordPress sur la <a title="Comment passer d'OverBlog ou BlogSpirit à WordPress" href="http://blog.lahaut.info/outils-divers-et-varies/importer-un-blog-dans-wordpress/">page dédiée</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/11/importer-de-blogspirit-a-wordpress-nouvelle-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L&#8217;initiative #opendata69 (et petits rappels sur le principe des données ouvertes)</title>
		<link>http://blog.lahaut.info/2011/11/linitiative-opendata69-et-petits-rappels-sur-le-principe-des-donnees-ouvertes/</link>
		<comments>http://blog.lahaut.info/2011/11/linitiative-opendata69-et-petits-rappels-sur-le-principe-des-donnees-ouvertes/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 10:27:57 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[OpenData]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=652</guid>
		<description><![CDATA[Les données ouvertes sont presque devenues le buzz word de la décennie, le passage obligé pour n&#8217;importe quelle administration, politique ou startup. Mais avant d&#8217;être un mot à la mode, qu&#8217;est ce qu&#8217;on appelle l&#8217;Opendata ? Si on se réfère &#8230; <a href="http://blog.lahaut.info/2011/11/linitiative-opendata69-et-petits-rappels-sur-le-principe-des-donnees-ouvertes/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Les <em>données ouvertes</em> sont presque devenues le <em>buzz word</em> de la décennie, le passage obligé pour n&#8217;importe quelle administration, politique ou startup.</p>
<p>Mais avant d&#8217;être un mot à la mode, qu&#8217;est ce qu&#8217;on appelle l&#8217;Opendata ? Si on se réfère à la <a title="Page &quot;Données ouvertes&quot; sur Wikipedia" href="http://fr.wikipedia.org/wiki/Donn%C3%A9es_ouvertes">définition donnée par Wikipedia</a>, &laquo;&nbsp;<em>Une donnée ouverte (en anglais open data) est une information publique brute, qui a vocation à être librement accessible. La philosophie pratique de l&#8217;open data préconise une libre disponibilité pour tous et chacun, sans restriction de copyright, brevets ou d&#8217;autres mécanismes de contrôle</em>.&nbsp;&raquo;</p>
<p>Cette définition n&#8217;est pas parfaite mais elle a le mérite d&#8217;expliquer le principe de base : il s&#8217;agit d&#8217;une donnée (publique,  ou privée, dans le cas d&#8217;entreprises agissant pour le compte des collectivités) pouvant être réutilisée à sa guise par un tiers, cela de manière désintéressée (par les citoyens eux-même ou via une association, etc) ou à des fins commerciales (intégration dans une application payante, par exemple).</p>
<p>Le principe d&#8217;ouverture de l&#8217;Opendata n&#8217;est pas &laquo;&nbsp;l&#8217;ouverture pour l&#8217;ouverture&nbsp;&raquo;, mais correspond à plusieurs objectifs :</p>
<ul>
<li><span style="text-decoration: underline;">Transparence</span> des actions menées par les entités publiques (budget, etc)</li>
<li>Possibilité <span style="text-decoration: underline;">d&#8217;appropriation par le simple citoyen</span> des données publiques, et donc travailler à rétablir ce lien entre lui et l&#8217;administration, à la reprise en main par le &laquo;&nbsp;peuple&nbsp;&raquo; de la politique quotidienne de l&#8217;Etat</li>
<li><span style="text-decoration: underline;">Egalité d&#8217;accès</span> à l&#8217;information, que l&#8217;on soit pauvre ou riche, avec des contacts bien placés ou isolé</li>
<li>Confrontation de l&#8217;information à la réalité du terrain, et donc <span style="text-decoration: underline;">enrichissement</span> en retour <span style="text-decoration: underline;">de cette information</span>, par ses utilisateurs</li>
</ul>
<div>L&#8217;Opendata a énormément d&#8217;applications pratiques. En voici quelques unes (existantes, ou potentielles) :</div>
<div>
<ul>
<li><a title="Application &quot;Budget Plateau&quot; de l'arrondissement &quot;Le Plateau Mont Royal&quot; de Montréal" href="http://budgetplateau.com">Montréal</a> : l&#8217;arrondissement &laquo;&nbsp;Le Plateau Mont-Royal&nbsp;&raquo; a pris le parti d&#8217;interroger ses habitants sur les priorités budgétaires à donner, en leur permettant d&#8217;effectuer visuellement une simulation de leurs choix politiques</li>
<li><a title="Site à destination des handicapés moteurs de la ville de Rennes, pour l'optimisation de leurs déplacements" href="http://www.handimap.org">Rennes</a> : l&#8217;ouverture des données publiques et de transport par Rennes Métropole et Keolis Rennes a permis la réalisation d&#8217;une application à destination des handicapés moteurs, leur permettant de calculer leurs trajets en fonction de l&#8217;accessibilité des lieux</li>
<li>Handicapés visuels : si la liste des feux rouges &laquo;&nbsp;avec vibreur&nbsp;&raquo; était publique, ils pourraient également optimiser leurs trajets en fonction de ce critère</li>
<li><a title="Site des &quot;Transports en Commun Lyonnais&quot;" href="http://www.tcl.fr">Transports en Commun Lyonnais (TCL)</a> : les plans et horaires n&#8217;étant pas disponibles de manière ouverte, il n&#8217;est pas possible de monter une application les utilisant (ou même un site de remplacement ajoutant des fonctionnalités à l&#8217;existant, comme la mémorisation des arrêts favoris). On peut également citer le problème rencontré par &laquo;&nbsp;Check My RATP&nbsp;&raquo;, atttaqué en justice par la RATP pour &laquo;&nbsp;piratage&nbsp;&raquo; des tracés des lignes, donnée pourtant publique.</li>
<li>Revenu moyen par ville/quartier : cette information permettrait aux associations d&#8217;optimiser leurs campagnes de dons</li>
<li>etc</li>
</ul>
</div>
<p>Cependant, on constate au quotidien plusieurs freins à sa mise en place :</p>
<ul>
<li>budget : en effet, collecter ces données, les ordonner et les mettre à disposition a un coût (très variable), d&#8217;où des réticences des administrations concernées</li>
<li>technique : les systèmes informatiques étant très hétérogènes, ou très anciens, formater ces données pour les rendre intelligibles est compliqué et nécessite un gros travail d&#8217;interfaçage (cela peut aller de simples fichiers texte dans le meilleur des cas jusqu&#8217;à des documents papier non numérisés dans la pire des situations)</li>
<li>protectionnisme et hiérarchie : ce vieux principe de &laquo;&nbsp;chasse gardée&nbsp;&raquo;, qui consiste à penser qu&#8217;on garde le pouvoir sur les citoyens en &laquo;&nbsp;gardant pour soi l&#8217;information et en la distribuant comme bon nous semble&nbsp;&raquo;</li>
<li>anonymisation : certaines données personnelles doivent être purgées avant la mise en ligne, et le problème consiste à déterminer ce qui est &laquo;&nbsp;identifiant&nbsp;&raquo; et ce qui ne l&#8217;est pas</li>
</ul>
<div>Quelques initiatives existent déja en France. Citons, entre autres :</div>
<div>
<ul>
<li><a title="Site de l'initiative Opendata de la ville de Rennes" href="http://www.data.rennes-metropole.fr/">Rennes, métropole en accès libre</a></li>
<li><a title="Le Département de Saône-et-Loire libère ses données" href="http://www.opendata71.fr/">Opendata71</a></li>
<li><a title="Mission Etalab (données ouvertes) du gouvernement" href="http://data.gouv.fr">Etalab</a>, mission gouvernementale sur les données ouvertes</li>
<li>Le site <a title="Site &quot;Regards Citoyens&quot;" href="http://www.regardscitoyens.org/">Regards Citoyens</a>, orienté données &laquo;&nbsp;politiques&nbsp;&raquo;</li>
</ul>
<div>On peut également citer le projet <a title="Site français du projet OpenStreetMap" href="http://openstreetmap.fr/">OpenStreetMap</a>, alternative participative à Google Maps</div>
</div>
<div>C&#8217;est à ce niveau-là qu&#8217;intervient l&#8217;initiative<strong> #opendata69</strong> : un groupe informel, avec un panel de profils très variés, mais tous animés par la volonté de promouvoir les données ouvertes dans le Rhône.</div>
<div>La réunion du 2 novembre 2011 à l&#8217;<a title="Site de l'Atelier des médias, espace de co-working à Lyon" href="http://atelier-medias.org/">Atelier des médias</a>, initiée par <a title="Site de Pascale Lagahe, rédactrice Web" href="http://www.editorial-interactif.com/">Pascale Lagahe</a>, a permis de rassembler une assemblée d&#8217;une trentaine de personnes composée entre autres de :</div>
<div>
<ul>
<li>développeurs</li>
<li>responsables politiques</li>
<li>collectivités (Grand Lyon, etc)</li>
<li>universitaires</li>
<li>libristes et activistes citoyens</li>
<li>entrepreneurs</li>
</ul>
<div>Après un rappel des notions évoquées plus haut (définition et utilisations possibles), nous avons évoqué ensemble quels peuvent être les objectifs d&#8217;un tel groupe :</div>
<div>
<ul>
<li>vulgarisation : comme nous l&#8217;avons constaté plusieurs fois, l&#8217;Opendata est un terme qui peut faire &laquo;&nbsp;peur&nbsp;&raquo;. L&#8217;anglicisme et la notion très &laquo;&nbsp;technique&nbsp;&raquo; peuvent rebuter le non-initié : un des buts à atteindre est donc de démocratiser ce principe, afin que le grand public fasse sienne cette cause.</li>
<li>recensement : à quelques exceptions près, les données ouvertes sont peu visibles, car noyées dans la multitude de sites publics. Un axe de travail peut donc être de les lister sous une forme lisible sur un site dédié.</li>
<li>sensibilisation : les acteurs publics ou privés peuvent facilement se sentir perdus devant cette nouveauté qu&#8217;est l&#8217;Opendata. Nous pouvons donc travailler à les accompagner en les informant sur les initiatives existantes, sur les écueils qu&#8217;ils peuvent rencontrer.</li>
<li>applications pratiques : vu les ressources techniques à notre disposition, il est assez simple de réaliser quelques exemples &laquo;&nbsp;du quotidien&nbsp;&raquo; pour montrer comment on peut utiliser les &laquo;&nbsp;données ouvertes&nbsp;&raquo;</li>
</ul>
<div>Nous avons mis en place quelques outils afin de pouvoir commencer à travailler ensemble sur ce projet :</div>
<div>
<ul>
<li>un site dédié : <a title="Site de l'initiative Opendata69" href="Opendata69.org">Opendata69.org</a></li>
<li>un &laquo;&nbsp;hashtag&nbsp;&raquo; Twitter : <a title="Page de recherche Twitter sur le mot-clé #opendata69" href="http://twitter.com/#!/search/%23opendata69">#opendata69</a></li>
<li>un <a title="Forum du site OpenData69.org" href="http://forum.opendata69.org">forum</a></li>
<li>une <a title="Liste de discussion Opendata69" href="https://groups.google.com/forum/?hl=fr#!forum/donneesouvertes69">liste de discussion</a></li>
<li>une adresse e-mail : <a title="Adresse email pour contacter le groupe Opendata69" href="mailto:contact@opendata69.org">contact@opendata69.org</a></li>
</ul>
<div>L&#8217;initiative Opendata69 n&#8217;a bien sur pas prétention d&#8217;être le &laquo;&nbsp;référent données ouvertes&nbsp;&raquo; du Rhône : des initiatives locales existent déja à ce niveau-là. Mais les formaliser et leur permettre de se fédérer efficacement est clairement un objectif que nous allons nous employer à atteindre.</div>
</div>
</div>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/11/linitiative-opendata69-et-petits-rappels-sur-le-principe-des-donnees-ouvertes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rajouter un nouveau hook dans Prestashop 1.4 grace à l&#8217;override</title>
		<link>http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/</link>
		<comments>http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/#comments</comments>
		<pubDate>Sat, 14 May 2011 16:32:25 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>
		<category><![CDATA[D'utilité publique]]></category>
		<category><![CDATA[Photo]]></category>
		<category><![CDATA[Prestashop]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=516</guid>
		<description><![CDATA[Prestashop, dans sa dernière version (de mars 2011), propose une vraie amélioration (parmi beaucoup d&#8217;autres) : l&#8217;override. Avant de rentrer dans les détails de ce système, rappelons comment est architecturé Prestashop : Les classes, dans /classes, définissent le comportement des &#8230; <a href="http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Prestashop, dans sa dernière version (de mars 2011), propose une vraie amélioration (parmi beaucoup d&#8217;autres) : l&#8217;override.</p>
<p>Avant de rentrer dans les détails de ce système, rappelons comment est architecturé Prestashop :</p>
<ul>
<li>Les classes, dans <strong>/classes</strong>, définissent le comportement des fonctionnalités principales (Cart, Order, Customer, etc)</li>
<li>Les modules, dans <strong>/modules</strong>, permettent d&#8217;étendre les possibilités de base (newsletter, alertes email, paiement, etc)</li>
</ul>
<p>Parallèlement, il existe à de nombreux endroits dans Prestashop des hooks (&laquo;&nbsp;crochets&nbsp;&raquo;) qui sont des points dans le code sur lesquels les modules peuvent se brancher (dans les classes, ou même dans les fichiers à la racine, qui gèrent le panier, le compte-client, etc).</p>
<p>Une bonne manière de comprendre le fonctionnement de ces &laquo;&nbsp;hooks&nbsp;&raquo; est de les comparer au déroulement d&#8217;une vie : vous pouvez intervenir à des moments stratégiques de celle-ci, pour modifier ou non le comportement d&#8217;une personne. C&#8217;est un peu pareil avec les hooks : ils permettent aux modules de déclencher des actions à des moments-clés du fonctionnement de Prestashop (à l&#8217;affichage de l&#8217;en-tête, mais aussi au passage d&#8217;une commande ou lors de son annulation, etc). Autre exemple : un développeur peut décider d&#8217;utiliser le hook &laquo;&nbsp;panier&nbsp;&raquo; et d&#8217;afficher à cet emplacement du contenu (par exemple la météo ou des produits associés).</p>
<p>Certains hooks sont &laquo;&nbsp;invisibles&nbsp;&raquo; et sont plus des hooks de calcul ou de traitement (génération de PDF, envoi de mail).</p>
<p>Le problème avec ces hooks est qu&#8217;ils sont pré-existants dans l&#8217;application : en clair, il peut arriver qu&#8217;il en manque un précisément là où il serait nécessaire.</p>
<p><strong>Jusqu&#8217;à Prestashop 1.3.7</strong>, le seul moyen était de le rajouter à la main dans le code, mais <em>avec le risque qu&#8217;à la mise à jour suivante, ces modifications disparaîtraient</em>.</p>
<p><strong>Depuis Prestashop 1.4</strong>, il existe un dispositif qui permet de résoudre ce problème : <strong>l&#8217;override</strong>.</p>
<p>Derrière cet anglicisme se cache tout simplement la possibilité de &laquo;&nbsp;surcharger&nbsp;&raquo; Prestashop, c&#8217;est à dire de redéfinir ce que fait l&#8217;application, et sans craindre de perdre ces changements à la prochaine évolution.</p>
<p>En effet, ces &laquo;&nbsp;surcharges&nbsp;&raquo; se situent dans un répertoire <strong>/override</strong>, vide par défaut dans les versions téléchargeables de l&#8217;outil, donc qui ne sera pas écrasé par une mise à jour.</p>
<hr />
<p>Prenons un exemple pratique, pour voir comment tout cela se décompose.</p>
<p>Pitch : <em>On désire rajouter du contenu avant le footer, dans une zone qu&#8217;on appellera &laquo;&nbsp;surfooter&nbsp;&raquo;, indépendante du bas de page</em>.</p>
<h4>- 1ère étape : Créer le hook dans la base de données</h4>
<p>En effet, pour que Prestashop puisse déclencher une action sur un hook, il faut que celui-ci soit référencé dans la liste des choix possibles.</p>
<p>On va ici utiliser <strong>PHPMyAdmin </strong>pour l&#8217;insérer. Rendez-vous dans la table<strong> ps_hook </strong>(ou toute table finissant par &laquo;&nbsp;_hook&nbsp;&raquo;, selon le préfixe que vous avez utilisé). Cliquez sur <strong>Insérer</strong>, et complétez comme suit l&#8217;écran qui apparaît :</p>
<p><a href="http://blog.lahaut.info/wp-content/uploads/2011/05/02641439271.png"><img class="size-thumbnail wp-image-530 alignleft" title="Insertion hook dans la base de données" src="http://blog.lahaut.info/wp-content/uploads/2011/05/02641439271-150x150.png" alt="" width="150" height="150" /></a>Et cliquez sur <strong>Exécuter</strong>.</p>
<p>Pour les fans du SQL, la commande suivante est équivalente :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> ps_hook <span class="br0">&#40;</span>name,title,position,live_edit<span class="br0">&#41;</span> <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="st0">&#8216;surfooter&#8217;</span>, <span class="st0">&#8216;Hook surFooter&#8217;</span>, <span class="st0">&#8217;1&#8242;</span>, <span class="st0">&#8217;0&#8242;</span><span class="br0">&#41;</span></div>
<h4>- 2ème étape : Positionner le hook dans le code de l&#8217;application</h4>
<p>Dans l&#8217;exemple qu&#8217;on a choisi, le &laquo;&nbsp;surfooter&nbsp;&raquo; doit se déclencher juste avant le &laquo;&nbsp;footer&nbsp;&raquo;. Comment se déclenche le hook &laquo;&nbsp;footer&nbsp;&raquo; ? Regardons dans le fichier <strong>footer.php</strong> (logique, non?) :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="re0">$controller</span> = <span class="kw2">new</span> FrontController<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="re0">$controller</span>-&gt;<span class="me1">displayFooter</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p>Depuis la 1.4, on utilise dans Prestashop des contrôleurs, réunis dans un dossier <strong>/controllers</strong>, qui contiennent les fonctions utilisées dans les différentes pages.</p>
<p>Regardons le code de la fonction displayFooter dans <strong>/controllers/FrontController.php</strong> :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="kw2">public</span> <span class="kw2">function</span> displayFooter<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cookie</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!self::<span class="re0">$initialized</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;HOOK_RIGHT_COLUMN&#8217;</span> =&gt; Module::<span class="me2">hookExec</span><span class="br0">&#40;</span><span class="st0">&#8216;rightColumn&#8217;</span>, <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;cart&#8217;</span> =&gt; self::<span class="re0">$cart</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;HOOK_FOOTER&#8217;</span> =&gt; Module::<span class="me2">hookExec</span><span class="br0">&#40;</span><span class="st0">&#8216;footer&#8217;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;content_only&#8217;</span> =&gt; <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;content_only&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span>_PS_THEME_DIR_.<span class="st0">&#8216;footer.tpl&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//live edit</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>Tools::<span class="me2">isSubmit</span><span class="br0">&#40;</span><span class="st0">&#8216;live_edit&#8217;</span><span class="br0">&#41;</span> AND <span class="re0">$ad</span> = Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span><span class="br0">&#41;</span> AND <span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;liveToken&#8217;</span><span class="br0">&#41;</span> == <a href="http://www.php.net/sha1"><span class="kw3">sha1</span></a><span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span><span class="br0">&#41;</span>._COOKIE_KEY_<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span> =&gt; <span class="re0">$ad</span>, <span class="st0">&#8216;live_edit&#8217;</span> =&gt; <span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span>_PS_ALL_THEMES_DIR_.<span class="st0">&#8216;live_edit.tpl&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tools::<span class="me2">displayError</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
<p>La ligne <strong>HOOK_FOOTER&#8217; =&gt; Module::hookExec(&#8216;footer&#8217;)</strong> permet de déclencher &laquo;&nbsp;les fonctions hookfooter situés dans les modules installés sur la boutique&nbsp;&raquo;. Parallèlement, on retrouve dans le template un bloc <strong>{$HOOK_FOOTER}</strong> qui affichera là ou il est inséré le contenu généré par les fonctions qu&#8217;on vient évoquer.</p>
<p>Pour notre &laquo;&nbsp;surfooter&nbsp;&raquo;, il suffirait donc de rajouter :</p>
<div class="dean_ch" style="white-space: nowrap;">HOOK_SURFOOTER<span class="st0">&#8216; =&gt; Module::hookExec(&#8216;</span>surfooter<span class="st0">&#8216;),</span></div>
<p>Mais (il y a un &laquo;&nbsp;mais&nbsp;&raquo;), comme on l&#8217;a précisé au début de l&#8217;article, ces fichiers du coeur de Prestashop seront écrasés à la prochaine mise à jour. On va donc &laquo;&nbsp;dupliquer&nbsp;&raquo; cette fonction, et créer un fichier <strong>/override/classes/FrontController.php</strong>, contenant :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="co1">//La classe d&#8217;origine située dans /classes/FrontController.php s&#8217;appelle FrontControllerCore, on utilise donc ici FrontController</span><br />
<span class="kw2">class</span> FrontController <span class="kw2">extends</span> FrontControllerCore<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Copie de la fonction displayFooter située dans /classes/FrontController.php, mais avec le &quot;surfooter&quot; en +</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//C&#8217;est la copie qui prendra la main sur la fonction d&#8217;origine appelée dans /footer.php</span><br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> displayFooter<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cookie</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>!self::<span class="re0">$initialized</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">init</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;HOOK_RIGHT_COLUMN&#8217;</span> =&gt; Module::<span class="me2">hookExec</span><span class="br0">&#40;</span><span class="st0">&#8216;rightColumn&#8217;</span>, <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;cart&#8217;</span> =&gt; self::<span class="re0">$cart</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//On rajoute l&#8217;appel à notre nouveau hook</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;HOOK_SURFOOTER&#8217;</span> =&gt; Module::<span class="me2">hookExec</span><span class="br0">&#40;</span><span class="st0">&#8216;surfooter&#8217;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;HOOK_FOOTER&#8217;</span> =&gt; Module::<span class="me2">hookExec</span><span class="br0">&#40;</span><span class="st0">&#8216;footer&#8217;</span><span class="br0">&#41;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8216;content_only&#8217;</span> =&gt; <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;content_only&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span>_PS_THEME_DIR_.<span class="st0">&#8216;footer.tpl&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//live edit</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>Tools::<span class="me2">isSubmit</span><span class="br0">&#40;</span><span class="st0">&#8216;live_edit&#8217;</span><span class="br0">&#41;</span> AND <span class="re0">$ad</span> = Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span><span class="br0">&#41;</span> AND <span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;liveToken&#8217;</span><span class="br0">&#41;</span> == <a href="http://www.php.net/sha1"><span class="kw3">sha1</span></a><span class="br0">&#40;</span>Tools::<span class="me2">getValue</span><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span><span class="br0">&#41;</span>._COOKIE_KEY_<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;ad&#8217;</span> =&gt; <span class="re0">$ad</span>, <span class="st0">&#8216;live_edit&#8217;</span> =&gt; <span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$smarty</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span>_PS_ALL_THEMES_DIR_.<span class="st0">&#8216;live_edit.tpl&#8217;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tools::<span class="me2">displayError</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
<h4>- 3ème étape : &laquo;&nbsp;greffer&nbsp;&raquo; un module sur notre hook</h4>
<p>Que l&#8217;on souhaite être directement connecté au &laquo;&nbsp;surfooter&nbsp;&raquo;, ou qu&#8217;on souhaite les relier ensuite par &laquo;&nbsp;Greffer un module&nbsp;&raquo;, la procédure est la même : il faut déclarer au début du fichier du module que l&#8217;on souhaite s&#8217;y connecter.</p>
<p>Prenons l&#8217;exemple de &laquo;&nbsp;Bloc newsletter&nbsp;&raquo;, (<strong>/modules/blocknewsletter/blocknewsletter.php</strong>) et de sa fonction <strong>install()</strong> (présente dans toutes les extensions Prestashop) :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="kw1">if</span> <span class="br0">&#40;</span>parent::<span class="me2">install</span><span class="br0">&#40;</span><span class="br0">&#41;</span> == <span class="kw2">false</span> OR <span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;leftColumn&#8217;</span><span class="br0">&#41;</span> == <span class="kw2">false</span> OR <span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;header&#8217;</span><span class="br0">&#41;</span> == <span class="kw2">false</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div>
<p>On voit qu&#8217;est utilisée plusieurs fois la fonction <strong>registerHook</strong>, qui permet de se &laquo;&nbsp;référencer&nbsp;&raquo; sur un hook précis. On va donc modifier cette ligne ainsi :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="kw1">if</span> <span class="br0">&#40;</span>parent::<span class="me2">install</span><span class="br0">&#40;</span><span class="br0">&#41;</span> == <span class="kw2">false</span> OR <span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;leftColumn&#8217;</span><span class="br0">&#41;</span> == <span class="kw2">false</span><br />
OR <span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;header&#8217;</span><span class="br0">&#41;</span> == <span class="kw2">false</span> &nbsp;OR <span class="re0">$this</span>-&gt;<span class="me1">registerHook</span><span class="br0">&#40;</span><span class="st0">&#8216;surfooter&#8217;</span><span class="br0">&#41;</span> == <span class="kw2">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;<br />
<span class="br0">&#125;</span></div>
<p>Désormais, à la prochaine installation de ce module (donc par exemple si on le désinstalle/réinstalle), il se branchera sur &laquo;&nbsp;surfooter&nbsp;&raquo; et cherchera à éxécuter sa propre fonction <strong>hooksurfooter()</strong>, qu&#8217;on va créer pour l&#8217;occasion (toujours dans le même fichier <strong>/modules/blocknewsletter/blocknewsletter.php</strong>) :</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="kw2">function</span> hooksurfooter<span class="br0">&#40;</span><span class="re0">$params</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Mettre ici du code à exécuter dans le surfooter</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
<p>Il faudra bien sur rajouter le bout de code nécessaire dans notre template, par exemple:</p>
<div class="dean_ch" style="white-space: nowrap;">&lt;div id=&quot;surfooter&quot;&gt;{$HOOK_SURFOOTER}&lt;/div&gt;</div>
<p><small>(merci à Jérémy Kleinclaus pour la remarque à ce sujet là)</small><br />
Bien sur, comme toute modification importante sur un template et sur la boutique, il peut être nécessaire de vider le cache Prestashop si les changements n&#8217;apparaissent pas.</p>
<p>On peut également utiliser ce procédé pour modifier le fonctionnement d&#8217;une fonction du core de Prestashop, sans nécessairement vouloir rajouter un hook, ou &laquo;&nbsp;surcharger&nbsp;&raquo; un contrôleur, en utilisant le répertoire <strong>/override/controllers</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/05/rajouter-un-nouveau-hook-dans-prestashop-1-4-grace-a-loverride/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Activer le Bureau à distance sur Windows 7 Home Premium</title>
		<link>http://blog.lahaut.info/2011/01/activer-le-bureau-a-distance-sur-windows-7-home-premium/</link>
		<comments>http://blog.lahaut.info/2011/01/activer-le-bureau-a-distance-sur-windows-7-home-premium/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 11:11:39 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=501</guid>
		<description><![CDATA[Depuis sa version 2000, Windows est équipé d&#8217;une fonctionnalité très pratique : le Bureau à distance, qui permet de se connecter à distance sur l&#8217;ordinateur, comme si on se trouvait devant. Mais dans sa dernière édition (Windows 7), seules les &#8230; <a href="http://blog.lahaut.info/2011/01/activer-le-bureau-a-distance-sur-windows-7-home-premium/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Depuis sa version 2000, Windows est équipé d&#8217;une fonctionnalité très pratique : le Bureau à distance, qui permet de se connecter à distance sur l&#8217;ordinateur, comme si on se trouvait devant.</p>
<p>Mais dans sa dernière édition (Windows 7), seules les versions Professionel et Ultimate en sont équipées, ce qui empêche l&#8217;immense majorité des utilisateurs (utilisant la version Home Premium) d&#8217;en bénéficier.</p>
<p>Un <a href="http://thegreenbutton.com/forums/t/79427.aspx?PageIndex=1" target="_blank">bidouilleur</a> a donc eu l&#8217;idée de créer un patch permettant d&#8217;activer cette fonctionnalité.</p>
<p><a href="http://blog.lahaut.info/wp-content/uploads/Concurrent_RDP_patcher.zip">Patch d&#8217;activation du Bureau à distance sur Windows 7 Home Premium</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2011/01/activer-le-bureau-a-distance-sur-windows-7-home-premium/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installation de WordPress en multi domaines</title>
		<link>http://blog.lahaut.info/2010/06/installation-de-wordpress-en-multi-domaines/</link>
		<comments>http://blog.lahaut.info/2010/06/installation-de-wordpress-en-multi-domaines/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 14:18:14 +0000</pubDate>
		<dc:creator>Fetard</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=441</guid>
		<description><![CDATA[Dès le début de l&#8217;année, Automattic (éditeur de WordPress), avait annoncé que la prochaine version de WordPress (3.0) gérerait de manière native le multi-domaines (anciennement assuré par WordPress MU, qui serait donc inclut directement dans WordPress 3). La dernière version &#8230; <a href="http://blog.lahaut.info/2010/06/installation-de-wordpress-en-multi-domaines/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dès le début de l&#8217;année, <a title="Automattic" href="http://automattic.com/" target="_blank">Automattic </a>(éditeur de WordPress), avait annoncé que la prochaine version de WordPress (3.0) gérerait de manière native le multi-domaines (anciennement assuré par WordPress MU, qui serait donc inclut directement dans WordPress 3).</p>
<p>La dernière version disponible (au 20 juin 2010) propose effectivement ce genre de fonctionnalités.</p>
<p>Cependant, de base, WordPress 3 ne propose du multi-sites (terme générique pour désigner ces fonctions) que selon les schémas suivants :</p>
<ul>
<li>X sous-domaines  d&#8217;un nom de domaine : toto.domaine.com, tata.domaine.com, etc</li>
<li>X sous répertoires d&#8217;un nom de domaine : domaine.com/toto, domaine.com/tata, etc.</li>
</ul>
<p>Cela répond à certaines problématiques, notamment pour de la mutualisation à grande échelle, mais dans des cas bien précis comme le mien (hébergement d&#8217;un nombre limité de blogs sur un même serveur dédié), il peut être intéressant de <strong>pouvoir faire tourner plusieurs blogs ayant des noms de domaine séparés sur la même base de code</strong>, notamment pour faciliter les mises à jour.</p>
<p>WordPress 3 ne le gère pas de manière &laquo;&nbsp;intuitive&nbsp;&raquo; mais nous allons voir ensemble qu&#8217;il est possible tout de même, au prix de quelques manipulations, de le faire fonctionner parfaitement dans cette configuration.</p>
<p>Pré-requis :</p>
<ul>
<li><a title="Fichiers d'installation de WordPress 3" href="http://fr.wordpress.org/" target="_blank">les fichiers d&#8217;installation de WordPress 3</a></li>
<li>les fichiers pour la mutualisation : <a title="Plugin de domain mapping pour WordPress 3" href="http://plugins.svn.wordpress.org/wordpress-mu-domain-mapping/trunk/domain_mapping.php" target="_blank">domain_mapping.php</a> et <a title="Fichier de fonctions &quot;sunrise&quot;" href="http://plugins.svn.wordpress.org/wordpress-mu-domain-mapping/trunk/sunrise.php" target="_blank">sunrise.php</a></li>
<li>un nom de domaine &laquo;&nbsp;principal&nbsp;&raquo; pointant vers votre hébergement (dans notre exemple, <a title="Site d'exemple" href="http://www.geekcherchegeekette.fr" target="_blank">www.geekcherchegeekette.fr</a>)</li>
<li>un ou des noms de domaine pointant vers le même hébergement</li>
</ul>
<p><strong>1/ Installation de WordPress 3</strong></p>
<p>Celle-ci est identique à celle des versions précédentes, mis à part que vous pouvez maintenant <em>choisir le mot de passe de l&#8217;utilisateur principal dès l&#8217;installation</em>.</p>
<p><strong>2/ Activation du mode multi-sites</strong></p>
<p>Il vous suffit de rajouter les lignes :<br />
<code>define('WP_ALLOW_MULTISITE', true);<br />
</code><code>define('MULTISITE', true);</code></p>
<p>juste après<br />
<code>define('WP_DEBUG', false);</code></p>
<p>dans votre fichier wp-config.php (à la racine de votre installation de WordPress)</p>
<p>Si vous vous reconnectez sur votre blog &laquo;&nbsp;principal&nbsp;&raquo;, vous verrez alors apparaître un menu <strong>Outils </strong>/ <strong>Réseau </strong>sur lequel il vous faudra cliquer :</p>
<p style="text-align: center;"><img class="aligncenter" title="Activation menu Réseau" src="http://blog.lahaut.info/wp-content/uploads/images/tuto_wp3/activation_reseau.png" alt="" width="159" height="126" /></p>
<p>Cette page permet de créer un réseau de sites (en d&#8217;autres termes, de mutualiser les fichiers de WordPress entre plusieurs sites).</p>
<p style="text-align: center;"><a href="http://blog.lahaut.info/wp-content/uploads/2010/06/creation_reseau.png"><img class="size-thumbnail wp-image-455 aligncenter" title="creation_reseau" src="http://blog.lahaut.info/wp-content/uploads/2010/06/creation_reseau-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Vous remarquez qu&#8217;il n&#8217;y a aucun mention du cas qui nous intéresse : ce n&#8217;est pas grave, nous allons contourner ce problème :</p>
<ul>
<li>Sélectionnez l&#8217;option <strong>Sous-dossiers</strong></li>
<li>Remplissez les cases <strong>Nom du réseau</strong> et <strong>Adresse de contact de l&#8217;administrateur</strong></li>
<li>Validez</li>
</ul>
<p>La page suivante vous indique les modifications à effectuer sur vos fichiers <strong>wp-config.php</strong> et <strong>.htaccess</strong> : pensez à en faire une sauvegarde avant !<br />
Pensez également à créer un sous-dossier <strong>blogs.dir</strong> dans votre dossier <strong>wp-content</strong>.</p>
<p style="text-align: center;"><a href="http://blog.lahaut.info/wp-content/uploads/2010/06/creation_reseau_ok.png"><img class="aligncenter size-thumbnail wp-image-459" title="creation_reseau_ok" src="http://blog.lahaut.info/wp-content/uploads/2010/06/creation_reseau_ok-150x150.png" alt="" width="150" height="150" /></a></p>
<p style="text-align: left;">Cliquez ensuite sur <strong>Se connecter</strong> en bas de la page et reconnectez-vous avec vos identifiants du blog qu&#8217;on vient de créer.</p>
<p style="text-align: left;">Un menu <strong>Super Admin</strong> est désormais présent en haut de la page :</p>
<p style="text-align: center;"><a href="http://blog.lahaut.info/wp-content/uploads/2010/06/menu_super_admin.png"><img class="aligncenter size-thumbnail wp-image-462" title="menu_super_admin" src="http://blog.lahaut.info/wp-content/uploads/2010/06/menu_super_admin-150x150.png" alt="" width="150" height="150" /></a></p>
<p style="text-align: left;">
<p style="text-align: left;"><strong>3/ Paramétrage du multi domaines</strong></p>
<p style="text-align: left;">Entrent maintenant en jeu le plugin domain_mapping : déposez le fichier <strong>domain_mapping.php</strong> récupéré au début dans un sous-dossier <strong>mu-plugins</strong> que vous aurez créé dans /<strong>wp-content</strong>.</p>
<p style="text-align: left;">Déposez ensuite le fichier <strong>sunrise.php</strong> directement dans le dossier /<strong>wp-content</strong>.</p>
<p style="text-align: left;">Rajoutez ensuite la ligne</p>
<p><code>define( 'SUNRISE', 'on' );</code><br />
dans wp-config.php juste après les lignes que vous venez d&#8217;y rajouter.</p>
<p>Ces deux manipulations ont pour effet d&#8217;activer le menu <strong>Domain Mapping</strong> dans <strong>Super Admin</strong>. Dans cet écran, précisez l&#8217;IP du serveur hébergeant votre/vos site(s), cochez les 2e et 3e cases et validez :</p>
<p style="text-align: center;"><a href="http://blog.lahaut.info/wp-content/uploads/2010/06/mapping_domain.png"><img class="aligncenter size-thumbnail wp-image-465" title="mapping_domain" src="http://blog.lahaut.info/wp-content/uploads/2010/06/mapping_domain-150x150.png" alt="" width="150" height="150" /></a></p>
<p><strong>4/ Création effective des domaines</strong></p>
<p>Avant tout, rendez vous dans <strong>Super Admin</strong> / <strong>Options</strong> et choisissez <strong>Français</strong> comme langue par défaut.</p>
<p>Ensuite, on va se rendre dans <strong>Super Admin</strong> / <strong>Sites</strong> : comme indiqué plus haut, WordPress 3 ne gérant pas de manière native les multi domaines, nous allons devoir ruser.</p>
<p>Dans le formulaire <strong>Ajouter un site</strong>, saisissez le nom du site que vous voulez créer (sans les www et extension, en fait, peu importe ce que vous saisissez ici)</p>
<p>Complétez les champs <strong>Titre du site</strong> et <strong>Adresse de contact de l&#8217;administrateur</strong> (vous remarquerez que j&#8217;ai utilisé l&#8217;adresse principale, pour pouvoir me reconnecter facilement sur le nouveau blog).</p>
<p>Validez : notre nouveau blog est maintenant accessible depuis www.domaineprincipal.com/nomdusite.</p>
<p>Rendez-vous alors sur ce blog (via le bouton <strong>Afficher</strong> sous sa ligne dans la page des sites).</p>
<p>Il faut maintenant donner son URL propre à ce blog : allez sur la page d&#8217;administration du sous-blog (de la forme www.domaineprincipal.com/nomdusite/wp-admin).</p>
<p>Vous devriez normalement être connecté automatiquement (d&#8217;où l&#8217;intéret d&#8217;utiliser le même mail pour l&#8217;utilisateur principal).</p>
<p>Dans <strong>Super Admin</strong> / <strong>Domains </strong>/ <strong>New Domain</strong>, saisissez le &laquo;&nbsp;Site ID&nbsp;&raquo; (à récupérer dans la page <strong>Sites </strong>du blog de base) et son domaine associé : <strong>votre sous-blog est désormais accessible par sa propre URL</strong> !</p>
<p><strong><span style="color: #ff0000;">Limitations :</span></strong></p>
<ul>
<li>les thèmes doivent être activés par un utilisateur &laquo;&nbsp;Super Admin&nbsp;&raquo; et ne peuvent être modifiés de manière unilatérale : en clair, si je modifie un thème, il est modifié pour tous les blogs qui l&#8217;utilisent</li>
<li>dans cette configuration, tous les blogs utilisent la même base de données (je prépare un second article plus spécifique pour une solution permettant de découpler les blogs à ce niveau là).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2010/06/installation-de-wordpress-en-multi-domaines/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

