<?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 ! &#187; Catégorie: Bricolage</title>
	<atom:link href="http://blog.lahaut.info/category/bricolage/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lahaut.info</link>
	<description>De tout et de rien</description>
	<lastBuildDate>Fri, 27 Apr 2012 21:02:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>[Astuce] Ne pas coder &#171;&#160;en dur&#160;&#187; la variable id_lang dans les modules Prestashop</title>
		<link>http://blog.lahaut.info/2012/03/astuce-ne-pas-coder-en-dur-la-variable-id_lang-dans-les-modules-prestashop/</link>
		<comments>http://blog.lahaut.info/2012/03/astuce-ne-pas-coder-en-dur-la-variable-id_lang-dans-les-modules-prestashop/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 11:49:23 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>
		<category><![CDATA[Prestashop]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=952</guid>
		<description><![CDATA[En effet, entre Prestashop 1.4 et 1.5, les valeurs par défaut de la table ps_lang ont changé. Donc la valeur de id_lang pour le français est passé de 2 à 4. Evitez donc de la coder en dur dans vos &#8230; <a href="http://blog.lahaut.info/2012/03/astuce-ne-pas-coder-en-dur-la-variable-id_lang-dans-les-modules-prestashop/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En effet, entre Prestashop 1.4 et 1.5, les valeurs par défaut de la table ps_lang ont changé. Donc la valeur de id_lang pour le français est passé de 2 à 4.</p>
<p>Evitez donc de la coder en dur dans vos modules (c&#8217;est-à-dire mettre la valeur numérique dans vos requêtes, du style &laquo;&nbsp;WHERE id_lang=2&#8243;) et privilégiez plutôt :</p>
<p><strong><code>$cookie-&gt;id_lang</code></strong> pour Prestashop 1.4</p>
<p><strong><code>Context::getContext()-&gt;language-&gt;id</code></strong> pour Prestashop 1.5</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2012/03/astuce-ne-pas-coder-en-dur-la-variable-id_lang-dans-les-modules-prestashop/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" rel="lightbox[692]" title="exemple"><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" rel="lightbox[692]" title="Choix périmètre d'application de la navigation à facettes"><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" rel="lightbox[692]" title="Sélection des catégories pour la navigation à facettes"><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" rel="lightbox[692]" title="Sélection des critères pour la navigation à facettes"><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" rel="lightbox[692]" title="4"><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" rel="lightbox[692]" title="Autres critères disponibles pour la navigation à facettes"><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>17</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>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" rel="lightbox[516]" title="Insertion hook dans la base de données"><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>24</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>DropBox se ferme au lancement sous Ubuntu 9.04</title>
		<link>http://blog.lahaut.info/2009/10/dropbox-se-ferme-au-lancement-sous-ubuntu-9-04/</link>
		<comments>http://blog.lahaut.info/2009/10/dropbox-se-ferme-au-lancement-sous-ubuntu-9-04/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 15:49:45 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=427</guid>
		<description><![CDATA[Ayant récemment découvert DropBox, un système pratique de disque dur en ligne, j&#8217;ai entrepris de l&#8217;installer sur un ordinateur Ubuntu 9.04 de l&#8217;équipe FrenchBirds (présente aux JDLL 2009). Cependant, même si DropBox se lançait bien, dès qu&#8217;on essayait de cliquer &#8230; <a href="http://blog.lahaut.info/2009/10/dropbox-se-ferme-au-lancement-sous-ubuntu-9-04/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ayant récemment découvert DropBox, un système pratique de disque dur en ligne, j&#8217;ai entrepris de l&#8217;installer sur un ordinateur Ubuntu 9.04 de l&#8217;équipe FrenchBirds (présente aux JDLL 2009).<br />
Cependant, même si DropBox se lançait bien, dès qu&#8217;on essayait de cliquer sur son icône, il se plantait lamentablement.<br />
Après quelques recherches sur le forum dédié, j&#8217;ai trouvé une solution très simple :<br />
- couper la connexion réseau via un clic droit sur l&#8217;icône correspondante dans la zone de notification d&#8217;Ubuntu<br />
- lancer DropBox et le paramétrer<br />
- relancer la connexion réseau</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2009/10/dropbox-se-ferme-au-lancement-sous-ubuntu-9-04/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Scripts d&#8217;import BlogSpirit et OverBlog vers WordPress</title>
		<link>http://blog.lahaut.info/2009/07/scripts-dimport-blogspirit-et-overblog-vers-wordpress/</link>
		<comments>http://blog.lahaut.info/2009/07/scripts-dimport-blogspirit-et-overblog-vers-wordpress/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 11:58:49 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=391</guid>
		<description><![CDATA[Suite à la volonté de notre chère Véro de migrer son blog chez Over-Blog vers une version tournant sous WordPress, j&#8217;avais cherché un moyen d&#8217;importer les billets entre les deux plate-formes. J.R. Courtois avait développé il y a quelques mois &#8230; <a href="http://blog.lahaut.info/2009/07/scripts-dimport-blogspirit-et-overblog-vers-wordpress/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Suite à la volonté de notre chère Véro de migrer son blog chez Over-Blog vers une version tournant sous WordPress, j&#8217;avais cherché un moyen d&#8217;importer les billets entre les deux plate-formes.</p>
<p>J.R. Courtois avait développé il y a quelques mois un script Ruby d&#8217;import Over-Blog vers WordPress, mais celui-ci ne fonctionnait plus correctement : il a donc fallu réadapter le code aux modifications apportées aux squelettes OB.</p>
<p>Parallèlement, à l&#8217;occasion de &laquo;&nbsp;<a title="Blog de Fadila Brahimi" href="http://www.blogpersonalbranding.com/">l&#8217;affaire Fadila Brahimi</a>&nbsp;&raquo; (sur laquelle je ne reviendrais pas ici), j&#8217;avais adapté le script ci-dessus aux articles hébergés par BlogSpirit.</p>
<p>Vous retrouverez désormais cet outil sympathique sur une page dédiée, <a title="Importer un blog Over-Blog ou BlogSpirit dans WordPress" href="http://blog.lahaut.info/outils-divers-et-varies/importer-un-blog-dans-wordpress/" target="_self">Importer un blog (Over-Blog ou BlogSpirit) dans WordPress</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2009/07/scripts-dimport-blogspirit-et-overblog-vers-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Plugin &#171;&#160;Pages Connexes &#160;&#187; (related) pour Dotclear 1.2.x</title>
		<link>http://blog.lahaut.info/2009/07/plugin-pages-connexes-related-pour-dotclear-1-2-x/</link>
		<comments>http://blog.lahaut.info/2009/07/plugin-pages-connexes-related-pour-dotclear-1-2-x/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 08:00:57 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=378</guid>
		<description><![CDATA[Sur Lyon-Blog, on utilisait depuis très longtemps le plugin &#171;&#160;Pages connexes&#160;&#187; de Dotclear pour afficher notre liste des blogs. Mais pour sécuriser notre serveur, nous avons du désactiver certaines fonctions comme parse_ini_file(). Or celle-ci est à la base de &#171;&#160;Pages &#8230; <a href="http://blog.lahaut.info/2009/07/plugin-pages-connexes-related-pour-dotclear-1-2-x/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sur Lyon-Blog, on utilisait depuis très longtemps le plugin &laquo;&nbsp;Pages connexes&nbsp;&raquo; de Dotclear pour afficher notre liste des blogs.</p>
<p>Mais pour sécuriser notre serveur, nous avons du désactiver certaines fonctions comme parse_ini_file(). Or celle-ci est à la base de &laquo;&nbsp;Pages connexes&nbsp;&raquo; !</p>
<p>Voici donc un patch du plugin pour contourner ce problème : <a title="Version 0.56 du plugin Related - Pages connexes pour Dotclear 1.2.x" href="http://blog.lahaut.info/wp-content/uploads/files/plugin-related-0.56.pkg.gz" target="_blank">version 0.56 du plugin Related &#8211; Pages connexes pour Dotclear 1.2.x</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2009/07/plugin-pages-connexes-related-pour-dotclear-1-2-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ultramon 3.0.5 en français !</title>
		<link>http://blog.lahaut.info/2009/07/ultramon-3-0-5-en-francais/</link>
		<comments>http://blog.lahaut.info/2009/07/ultramon-3-0-5-en-francais/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 12:50:51 +0000</pubDate>
		<dc:creator>Samy</dc:creator>
				<category><![CDATA[Bricolage]]></category>
		<category><![CDATA[traduction]]></category>

		<guid isPermaLink="false">http://blog.lahaut.info/?p=375</guid>
		<description><![CDATA[Le double-écran, pour un geek comme moi, c&#8217;est très pratique&#8230;mais avoir une seule barre des tâches pour gérer les deux moniteurs, ca l&#8217;est moins &#8230; Mais heureusement RealTime Soft a créé Ultramon, qui, entre autres fonctionnalités avancées, permet de générer &#8230; <a href="http://blog.lahaut.info/2009/07/ultramon-3-0-5-en-francais/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Le double-écran, pour un geek comme moi, c&#8217;est très pratique&#8230;mais avoir une seule barre des tâches pour gérer les deux moniteurs, ca l&#8217;est moins &#8230;</p>
<p>Mais heureusement RealTime Soft a créé <a title="Ultramon 3.0.5 download page" href="http://www.realtimesoft.com/ultramon/download_beta.asp" target="_blank">Ultramon</a>, qui, entre autres fonctionnalités avancées, permet de générer une barre des tâches sur chaque écran, de dupliquer un écran sur un autre, etc.</p>
<p>Et accessoirement, Ultramon 3.0.5 est maintenant traduit en français (programme et aide)!</p>
<p>Pour le récupérer : <a title="Ultramon language packs" href="http://www.realtimesoft.com/ultramon/addons.asp#LangPacks" target="_blank">page des packs de langue</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lahaut.info/2009/07/ultramon-3-0-5-en-francais/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: blog.lahaut.info @ 2012-05-18 23:57:17 -->
