<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://planete.drupalfr.org" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>planete drupalfr -</title>
 <link>http://planete.drupalfr.org/frontpage</link>
 <description>The basic front page view.</description>
 <language>en</language>
<item>
 <title>Le module Drupal de la semaine : &#039;Me&#039; Aliases</title>
 <link>http://planete.drupalfr.org/node/212</link>
 <description>&lt;p&gt;Je commence cette rubrique qui consiste à mettre en avant un nouveau module chaque semaine avec un tout petit module assez peu connu.&lt;br /&gt;
&lt;a href=&quot;http://drupal.org/project/me&quot; rel=&quot;nofollow&quot;&gt;&#039;Me&#039; Aliases&lt;/a&gt; ne fera surement jamais parti de la liste des modules &quot;indispensables&quot; et pourtant il pourra vous rendre de grands services.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ineation.com/node/60&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/268">Alexandre Eisenchteter</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/170">module</category>
 <pubDate>Thu, 15 May 2008 23:23:12 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">212 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Drupal au CodeFest 2.1 de PHP Québec</title>
 <link>http://planete.drupalfr.org/node/211</link>
 <description>&lt;p&gt;En fin de semaine, &lt;a href=&quot;http://www.phpquebec.org/&quot; rel=&quot;nofollow&quot;&gt;PHP Québec&lt;/a&gt; organise &lt;a href=&quot;http://www.codefest.ws/tiki-index.php&quot; rel=&quot;nofollow&quot;&gt;CodeFest 2.1&lt;/a&gt;, un évènement où programmeurs de tous horizons et de tous niveaux seront accueillis pour participer au développement de leur logiciel libre préféré. Une très belle occasion de découvrir les techniques employées par différents projets, de rencontrer d&#039;autres programmeurs et, d&#039;une manière générale, de simplement se motiver à se jeter à l&#039;eau avec un projet!&lt;/p&gt;
&lt;p&gt;L&#039;un des thèmes de l&#039;évènement concerne l&#039;implémentation de test automatisés, un thème qui tombe à point compte tenu de la récente intégration de la plateforme de tests automatisés &lt;a href=&quot;http://drupal.org/simpletest&quot; rel=&quot;nofollow&quot;&gt;SimpleTest&lt;/a&gt; dans le noyau du futur Drupal 7.&lt;/p&gt;
&lt;p&gt;CodeFest 2.1 arrive alors que je n&#039;ai même pas encore eu le temps de conclure sur le récent &lt;a href=&quot;http://www.davidlesieur.com/en-direct-du-minnesota&quot; rel=&quot;nofollow&quot;&gt;sprint de recherche&lt;/a&gt; auquel j&#039;ai eu la chance de participer, mais je compte bien utiliser ce nouvel évènement comme prétexte pour compléter quelques tests en rapport avec le moteur de recherche de &lt;a href=&quot;http://drupal.org&quot; rel=&quot;nofollow&quot;&gt;Drupal&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Je serai donc présent samedi et heureux d&#039;aider quiconque souhaiterait mettre la main à la pâte avec Drupal 7! &lt;a href=&quot;http://drupal.org/user/160468&quot; rel=&quot;nofollow&quot;&gt;Patrick Fournier&lt;/a&gt;, mon associé à &lt;a href=&quot;http://whiskyechobravo.com&quot; rel=&quot;nofollow&quot;&gt;Whisky Echo Bravo&lt;/a&gt;, sera  aussi sur place.&lt;/p&gt;
&lt;p&gt;L&#039;évènement est tenu simultanément à Montréal et Sherbrooke. Même si j&#039;aime beaucoup la ville &lt;a href=&quot;http://www.usherbrooke.ca/&quot; rel=&quot;nofollow&quot;&gt;où j&#039;ai étudié&lt;/a&gt;, pour des raisons pratique c&#039;est bien sûr à Montréal que je serai. ;)&lt;/p&gt;
&lt;p&gt;Si l&#039;évènement vous intéresse, n&#039;hésitez pas à vous inscrire sur la &lt;a href=&quot;http://groups.drupal.org/node/11194&quot; rel=&quot;nofollow&quot;&gt;fiche Drupal de l&#039;événement&lt;/a&gt;!&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/249">Communauté</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/252">Logiciel libre</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/266">Montréal</category>
 <pubDate>Thu, 15 May 2008 19:08:14 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">211 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Ma critique: Building powerful and robust websites with Drupal 6</title>
 <link>http://planete.drupalfr.org/node/210</link>
 <description>&lt;p&gt;&lt;img src=&quot;http://www.ineation.com/sites/default/files/bookdrupal6.jpg&quot; height=&quot;180px&quot; alt=&quot;La couverture du Livre Building...Drupal6&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Synthèse : Un livre efficace, bien écrit mais légèrement prématuré&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ce livre m&#039;a agréablement surpris, il va au delà de la simple introduction à Drupal et permet à ceux qui découvrent le CMS une prise en main rapide et efficace. Les sujets traités sont bien expliqués et les petits détails complexes et irritants n&#039;ont pas été oubliés.&lt;/p&gt;
&lt;p&gt;Mon principal reproche ?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ineation.com/livre_building_website_drupal_6&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/268">Alexandre Eisenchteter</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/281">drupal6</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/124">formation</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/280">livre</category>
 <pubDate>Tue, 13 May 2008 21:51:58 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">210 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Deux thèmes premium prometteurs pour Drupal et un concept très original</title>
 <link>http://planete.drupalfr.org/node/200</link>
 <description>&lt;p&gt;Voici un petit article consacré aux thèmes qui illustrera pourquoi un thème doit être &quot;spécialisé&quot; et &quot;cohérent&quot;. &lt;/p&gt;
&lt;p&gt;Drupal, à mon humble avis, manque singulièrement de bons thèmes. Il y a de bonnes explications à cet état de fait mais il n&#039;empêche que la pauvreté de l&#039;offre en thèmes pour Drupal est un véritable frein à l&#039;adoption de ce CMS par un plus grand nombre. C&#039;est pour cela que je souhaite signaler l&#039;arrivée de deux thèmes très prometteurs. Autant vous prévenir tout de suite, ils sont payants... Mais c&#039;est justifié par le fait que ces deux thèmes sont plus qu&#039;une simple enveloppe graphique et qu&#039;ils sont en fait de véritables sites prêt à l&#039;emploi.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.ineation.com/sites/default/files/efficient_preview.jpg&quot; height=&quot;180px&quot; alt=&quot;Le thème efficient pour Drupal&quot; /&gt; &lt;img src=&quot;http://www.ineation.com/sites/default/files/drupal-publisher-theme1.jpg&quot; height=&quot;180px&quot; alt=&quot;Le thème Publisher pour Drupal&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ineation.com/node/58&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/268">Alexandre Eisenchteter</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/282">thème</category>
 <pubDate>Mon, 12 May 2008 08:14:58 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">200 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Groupe Marketing et Doc : un point sur l&#039;avancée des travaux</title>
 <link>http://planete.drupalfr.org/node/198</link>
 <description>&lt;p&gt;Suite à l&#039;excellent DrupalCamp Paris 2, nous avons formés deux groupes de travail : Marketing et Documentation.&lt;/p&gt;
&lt;p&gt;De bonnes discussions ont été commencées sur ce site, vous les trouverez &lt;a href=&quot;http://groups.drupal.org/node/11177&quot; rel=&quot;nofollow&quot;&gt;ici pour la documentation&lt;/a&gt; et &lt;a href=&quot;http://groups.drupal.org/node/10844&quot; rel=&quot;nofollow&quot;&gt;ici pour le marketing&lt;/a&gt;. Cela nous a permit d&#039;initier une dynamique super positive et de commencer à taper dans le dur c-a-d la rédaction de la doc et des argumentaires.&lt;/p&gt;
&lt;p&gt;Je tiens à remercier tout ceux qui ont déjà donné leurs idées et débattu sur le sujet. La discussion est riche et intéressante...&lt;/p&gt;
&lt;p&gt;Nous nous sommes vite aperçu des limites de groups.drupal pour créer du contenu collaboratif. C&#039;est pour cela que j&#039;ai ouvert &lt;a href=&quot;http://wiki.ineation.com/index.php/Main_Page&quot; rel=&quot;nofollow&quot;&gt;un wiki&lt;/a&gt; afin de mettre à notre disposition un outils adapté à cette activité. Ce wiki est séparé en deux sections : &lt;a href=&quot;http://wiki.ineation.com/index.php/Documentation&quot; rel=&quot;nofollow&quot;&gt;la documentation&lt;/a&gt; (avec les manuels du &lt;a href=&quot;http://wiki.ineation.com/index.php/Le_manuel_du_d%C3%A9butant&quot; rel=&quot;nofollow&quot;&gt;débutant&lt;/a&gt;, de &lt;a href=&quot;http://wiki.ineation.com/index.php?title=Le_manuel_de_l%27administrateur&amp;amp;action=edit&quot; rel=&quot;nofollow&quot;&gt;l&#039;administrateur&lt;/a&gt; et du &lt;a href=&quot;http://wiki.ineation.com/index.php/Le_manuel_du_designer&quot; rel=&quot;nofollow&quot;&gt;designer&lt;/a&gt;) et le &lt;a href=&quot;http://wiki.ineation.com/index.php/Marketing&quot; rel=&quot;nofollow&quot;&gt;marketing&lt;/a&gt; (avec &lt;a href=&quot;http://wiki.ineation.com/index.php/L%27argumentaire&quot; rel=&quot;nofollow&quot;&gt;l&#039;argumentaire&lt;/a&gt; et &lt;a href=&quot;http://wiki.ineation.com/index.php/Les_%C3%A9tudes_de_cas&quot; rel=&quot;nofollow&quot;&gt;la liste des études de cas&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Nous avons donc tout en place pour travailler, cependant le nombre des contributeurs n&#039;est pas suffisant, nous n&#039;avons pas la masse critique suffisante pour maintenir un rythme d&#039;écriture constant. Je fais donc un appel à toutes les bonnes volontés, afin que chacun contribue à la constitution de la documentation. Vous pouvez écrire ne serait-ce que 1 paragraphe car plus on sera plus la tache sera facile pour chacun des contributeurs...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bref on vous attends tous sur &lt;a href=&quot;http://wiki.ineation.com&quot; title=&quot;http://wiki.ineation.com&quot; rel=&quot;nofollow&quot;&gt;http://wiki.ineation.com&lt;/a&gt;. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Et n&#039;oubliez pas, contribuer renforce votre santé et améliore votre équilibre psychique, l&#039;institut des affaires Drupalienne recommande d&#039;avaler une dose de contribution chaque jour ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://groups.drupal.org/france&quot; rel=&quot;nofollow&quot;&gt;France&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/231">ineation</category>
 <pubDate>Sun, 11 May 2008 08:40:05 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">198 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>En direct du Minnesota</title>
 <link>http://planete.drupalfr.org/node/197</link>
 <description>&lt;p&gt;&lt;img src=&quot;http://www.davidlesieur.com/files/_dsc2041.jpg&quot; title=&quot;North Star Blankets&quot; alt=&quot;North Star Blankets&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ces jours-ci, la mention &amp;laquo;&lt;em&gt;live from the Minnesota Search Sprint&lt;/em&gt;&amp;raquo; (en direct du sprint de recherche du Minnesota) apparaît régulièrement en en-tête des &lt;a href=&quot;http://drupal.org/project/issues?projects=3060&amp;amp;versions=156281&amp;amp;components=search.module&amp;amp;categories=bug,task,feature&amp;amp;states=1,16,8,13,14,15,2,4&quot; rel=&quot;nofollow&quot;&gt;soumissions de modifications&lt;/a&gt; apportées au moteur de recherche de &lt;a href=&quot;http://drupal.org&quot; rel=&quot;nofollow&quot;&gt;Drupal&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;En effet, tel que je l&#039;avais &lt;a href=&quot;http://www.davidlesieur.com/doter-drupal-d-un-moteur-de-recherche-plus-performant&quot; rel=&quot;nofollow&quot;&gt;annoncé récemment&lt;/a&gt;, une petite équipe de programmeurs (&lt;a href=&quot;http://drupal.org/user/23325&quot; rel=&quot;nofollow&quot;&gt;Earnest Berry&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/user/5449&quot; rel=&quot;nofollow&quot;&gt;Robert Douglass&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/user/10297&quot; rel=&quot;nofollow&quot;&gt;Chad Fennell&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/user/29191&quot; rel=&quot;nofollow&quot;&gt;Doug Green&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/user/9170&quot; rel=&quot;nofollow&quot;&gt;Djun Kim&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/user/24450&quot; rel=&quot;nofollow&quot;&gt;Blake Lucchesi&lt;/a&gt; et &lt;a href=&quot;http://drupal.org/user/17157&quot; rel=&quot;nofollow&quot;&gt;moi-même&lt;/a&gt;) se trouve maintenant en plein &amp;laquo;sprint&amp;raquo; de programmation pour enrichir le module &lt;em&gt;search&lt;/em&gt; de Drupal. Notre centre d&#039;opérations se trouve sur l&#039;immense campus de l&#039;&lt;a href=&quot;http://www.umn.edu&quot; rel=&quot;nofollow&quot;&gt;Université du Minnesota&lt;/a&gt; à Minneapolis, où Chad Fennell a gentiment pris soin de la logistique.&lt;/p&gt;
&lt;p&gt;Notre principal défi consiste à atteindre un bon équilibre entre les réalisations concrètes et la vision globale du projet. Établir une feuille de route pour l&#039;avenir est important, mais dans l&#039;univers du logiciel libre, la seule chose vraie c&#039;est le code! Les plans à long terme sont particulièrement difficiles à tenir dans cet univers, puisque Drupal évolue avec les disponibilités des contributeurs et les priorités des projets qui financent leur travail. La vélocité même du développement de Drupal en fait une cible particulièrement mouvante.&lt;/p&gt;
&lt;p&gt;Par conséquent, ces deux derniers jours nous avons alterné entre la réalisation de tâches simples (pour les résultats concrets) et les remue-méninges (pour les enjeux de plus grande envergure), avec un souci d&#039;aligner même les tâches mineures sur les objectifs plus importants, histoire d&#039;aller dans la bonne direction, petit pas par petit pas. Il s&#039;agit d&#039;un réel puzzle; des pièces insignifiantes en elles-mêmes prendront, une fois accolées aux autres, tout leur sens.&lt;/p&gt;
&lt;h3&gt;Quelques pistes...&lt;/h3&gt;
&lt;p&gt;Voici quelques-unes des pistes que nous explorons dans ce sprint&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unification du processus d&#039;analyse lexicale appliqué à l&#039;indexage et lors de la recherche.&lt;/li&gt;
&lt;li&gt;Analyse lexicale au moyen d&#039;une chaîne de traitements personnalisable, basée sur la même architecture que les filtres d&#039;entrée de Drupal.&lt;/li&gt;
&lt;li&gt;Varier l&#039;analyse lexicale en fonction de paramètres tels la langue ou le format du contenu. Par exemple, des algorithmes de lexémisation distincts s&#039;appliqueraient en fonction de la langue.&lt;/li&gt;
&lt;li&gt;Calcul de classement des résultats extensible. Hormis les facteurs de base déjà prévus pour établir le classement des résultats, de nouveaux facteurs pourront être programmés dans des modules tiers et activés à la demande par l&#039;administrateur d&#039;un site. Par exemple, un site de commerce électronique pourrait rehausser le classement d&#039;un produit en fonction de son volume de ventes.&lt;/li&gt;
&lt;li&gt;Possibilité d&#039;activer ou de désactiver différents modules de recherche séparément. Dans Drupal 5 et 6, activer le module &lt;em&gt;search&lt;/em&gt; active toutes les fonctions de recherche, sur les noeuds et les utilisateurs, même si toutes ne sont pas pertinentes au site.&lt;/li&gt;
&lt;li&gt;Abstraire la représentation des résultats pour éventuellement permettre la construction de facettes à partir d&#039;un ensemble arbitraire de noeuds, qu&#039;ils proviennent, par exemple, d&#039;une recherche ou d&#039;une vue.&lt;/li&gt;
&lt;li&gt;Utiliser un objet plus &amp;laquo;intelligent&amp;raquo; qu&#039;une chaîne de caractères pour représenter la requête, tout au long du processus de recherche. Cet objet pourrait être construit via une interface de programmation (accessible à n&#039;importe quel module) ou via une chaîne de caractères. Il pourrait également produire la chaîne de caractères qui lui correspond en sortie, pour génération d&#039;hyperliens. Présentement, les modules &lt;a href=&quot;http://drupal.org/project/faceted_search&quot; rel=&quot;nofollow&quot;&gt;Faceted Search&lt;/a&gt; et &lt;a href=&quot;http://drupal.org/project/apachesolr&quot; rel=&quot;nofollow&quot;&gt;ApacheSolr&lt;/a&gt; ont tous deux des éléments qui s&#039;approchent de ceci. Ultimement, si cet objet pouvait représenter une requête du module &lt;a href=&quot;http://drupal.org/project/views&quot; rel=&quot;nofollow&quot;&gt;Views&lt;/a&gt;, un grand pas serait accompli pour que des facettes puissent se rattacher directement à une vue...&lt;/li&gt;
&lt;li&gt;Scinder la logique d&#039;indexation de la logique de recherche. Les fonctions de recherche de base sont un fardeau inutile pour les site utilisant Faceted Search ou les filtres de recherche de Views 2 &amp;mdash; ces modules utilisent l&#039;index de base, mais implémentent leur propre logique de recherche.&lt;/li&gt;
&lt;li&gt;Unifier la recherche d&#039;éléments hétérogènes dans une seule page de résultats. Ceci pourrait rendre particulièrement utile l&#039;éventuelle indexation d&#039;éléments comme les blocs, les vues (du module Views) et les panneaux (du module Panels).&lt;/li&gt;
&lt;li&gt;Indexer des données qui sont présentement omises de l&#039;index afin d&#039;augmenter la pertinence des résultats&amp;nbsp;: Chemin (URL) du contenu, nom de l&#039;élément de menu associé au contenu, etc.&lt;/li&gt;
&lt;li&gt;Abstraire le système d&#039;indexation des contenus afin de pouvoir lui substituer l&#039;indexation par un moteur externe, par exemple &lt;a href=&quot;http://lucene.apache.org/solr/&quot; rel=&quot;nofollow&quot;&gt;Solr&lt;/a&gt; ou &lt;a href=&quot;http://www.sphinxsearch.com/&quot; rel=&quot;nofollow&quot;&gt;Sphinx&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Participer, en savoir plus...&lt;/h3&gt;
&lt;p&gt;Que vous soyez sur place ou non, il est facile de participer à ces travaux ou de les suivre de plus près! Il suffit d&#039;examiner les &lt;a href=&quot;http://drupal.org/project/issues?projects=3060&amp;amp;versions=156281&amp;amp;components=search.module&amp;amp;categories=bug,task,feature&amp;amp;states=1,16,8,13,14,15,2,4&quot; rel=&quot;nofollow&quot;&gt;propositions&lt;/a&gt;, les réviser, les tester, les commenter!&lt;/p&gt;
&lt;p&gt;Demain sera, déjà, la dernière journée du sprint. En plus de poursuivre certaines des pistes présentées ci-haut, nous comptons examiner les questions de performance d&#039;exécution. À suivre!&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/249">Communauté</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/250">Moteurs de recherche</category>
 <pubDate>Sun, 11 May 2008 04:49:40 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">197 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Se mettre à la place du client...</title>
 <link>http://planete.drupalfr.org/node/195</link>
 <description>&lt;p&gt;Bon imaginez vous à la place d&#039;un chef de projet travaillant pour un grand groupe de média.&lt;/p&gt;
&lt;p&gt;En gros il hésite entre deux solutions open sources Ez publish et Drupal pour la refonte de son site web.&lt;/p&gt;
&lt;p&gt;Là il va sur &lt;a href=&quot;http://ez.no/&quot; title=&quot;http://ez.no/&quot; rel=&quot;nofollow&quot;&gt;http://ez.no/&lt;/a&gt; et il voit en gros sur la page d&#039;accueil : &quot;eZ for the Media Industry&quot;, + tous le matériel marketing de ez publish pour cette cible.&lt;br /&gt;
Ensuite il va sur drupal.org ou sur drupalf pour la première fois et là il se dit quoi ?&lt;br /&gt;
&quot;Ou suis je ?&quot; non ?&lt;/p&gt;
&lt;p&gt;Je crois que cet exemple comparatif permet de mesurer tout l&#039;intérêt de travailler le marketing de Drupal.&lt;br /&gt;
Et ce qui est marrant c&#039;est que malgré tout, Drupal arrive quand même à se hisser en challenger sur ce marché des médias.&lt;/p&gt;
&lt;p&gt;ya t&#039;il des gens qui savent vendre ou qui ont déjà réussi à vendre Drupal par rapport à Ez publish ici ?&lt;/p&gt;
&lt;p&gt;Je serais intéressé même par une petite conversation téléphonique, n&#039;hésitez pas à me contacter... ou à poster des arguments de vente qui vous semble percutants.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://groups.drupal.org/france&quot; rel=&quot;nofollow&quot;&gt;France&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/267">Julien Marboutin</category>
 <pubDate>Fri, 09 May 2008 16:20:09 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">195 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Refonte du groupe france</title>
 <link>http://planete.drupalfr.org/node/196</link>
 <description>&lt;p&gt;Grâce aux nouvelles fonctionnalités des groupes (&lt;a href=&quot;http://groups.drupal.org/node/10445&quot; title=&quot;http://groups.drupal.org/node/10445&quot; rel=&quot;nofollow&quot;&gt;http://groups.drupal.org/node/10445&lt;/a&gt;), on peut envisager de se refaire un site plus sympa pour travailler ensemble.&lt;br /&gt;
Ci dessous un bon exemple d&#039;utilisation : &lt;a href=&quot;http://groups.drupal.org/drupal-dojo&quot; title=&quot;http://groups.drupal.org/drupal-dojo&quot; rel=&quot;nofollow&quot;&gt;http://groups.drupal.org/drupal-dojo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et puisqu&#039;on a identifié 2 groupes de travail (&quot;documentation&quot; et &quot;marketing&quot;) à l&#039;intérieur de la communauté française au cours du dernier barcamp, pourquoi ne pas créeer simplement deux nouveaux onglets correspondants ?&lt;/p&gt;
&lt;p&gt;Qu&#039;en pensez vous ?&lt;br /&gt;
Manager du groupe es tu là ?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://groups.drupal.org/france&quot; rel=&quot;nofollow&quot;&gt;France&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/267">Julien Marboutin</category>
 <pubDate>Fri, 09 May 2008 15:59:38 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">196 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Journée portes ouvertes Design Montréal</title>
 <link>http://planete.drupalfr.org/node/194</link>
 <description>&lt;p&gt;Montréal vivait hier sa seconde édition des &lt;a href=&quot;http://ville.montreal.qc.ca/pls/portal/url/page/design_mtl_v2_fr/rep_portes_ouvertes_design_montreal/portes_ouvertes_design_mtl&quot; rel=&quot;nofollow&quot;&gt; journées portes ouvertes Design Montréal&lt;/a&gt;. Grâce à l&#039;agence de création, cliente et amie, &lt;a href=&quot;http://bluesponge.com&quot; rel=&quot;nofollow&quot;&gt;Bluesponge&lt;/a&gt;, j&#039;ai eu la chance de participer à l&#039;évènement! En effet, depuis l&#039;automne dernier, mon associé au sein de &lt;a href=&quot;http://whiskyechobravo.com&quot; rel=&quot;nofollow&quot;&gt;Whisky Echo Bravo&lt;/a&gt; (notre nouvelle boite de développement Drupal) et moi-même sommes &amp;laquo;colocs&amp;raquo; de Bluesponge qui, après son succès de l&#039;année dernière, ne pouvait manquer l&#039;occasion d&#039;ouvrir grandes ses portes aux visiteurs.&lt;/p&gt;
&lt;p&gt;Samedi, tandis que toute l&#039;équipe de Bluesponge s&#039;éclatait à transformer la salle de réunion en terrain de &lt;a href=&quot;http://www.sportsaveugles.qc.ca/asaq/boulingrin_description.php&quot; rel=&quot;nofollow&quot;&gt;boulingrin&lt;/a&gt;, un bureau en autel de prière en faveur des &lt;a href=&quot;http://canadiens.nhl.com/fr/&quot; rel=&quot;nofollow&quot;&gt;Canadiens&lt;/a&gt; ou à mettre au point l&#039;une des multiples installations interactives, nous avons, de notre côté, transformé un coin du bureau en point de rencontre avec &lt;a href=&quot;http://drupal.org&quot; rel=&quot;nofollow&quot;&gt;Drupal&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Nous avons monté une petite forêt de ballons d&#039;hélium auxquels étaient attachées de petites bribes d&#039;information à propos de Drupal... Les curieux pouvaient tirer sur la corde retenant un ballon pour découvrir le propos qui y était rattaché. Quelques exemples&amp;nbsp;: &amp;laquo;drupal vous rend autonome pour gérer votre site web&amp;raquo;, &amp;laquo;drupal est un logiciel libre&amp;raquo;, &amp;laquo;plus de 250&amp;nbsp;000 sites reposent sur Drupal&amp;raquo;, &amp;laquo;drupal vous permet d&#039;innover&amp;raquo;, &amp;laquo;drupal favorise la collaboration&amp;raquo;, et bien d&#039;autres...&lt;/p&gt;
&lt;p&gt;Dimanche, les visiteurs sont venus en grand nombre (malgré la pluie) découvrir notre milieu de travail quelque peu transformé, tout en se délectant de pancakes aux bleuets offertes par Bluesponge... Nous espérons que notre installation fut intéressante pour un public n&#039;ayant même jamais entendu le nom &amp;laquo;Drupal&amp;raquo; auparavant et, en cette journée ludique, pas nécessairement intéressé à plonger dans des détails techniques ou à s&#039;asseoir devant un écran d&#039;ordinateur. &lt;/p&gt;
&lt;p&gt;Chose certaine, &lt;a href=&quot;http://drupal.org/druplicon&quot; rel=&quot;nofollow&quot;&gt;Druplicon&lt;/a&gt; a charmé beaucoup de monde, puisque nos macarons à son effigie se sont envolés comme de petits pains chauds! Voici quelques images de l&#039;évènement... On peut s&#039;attendre à en voir plus bientôt sur le blogue des &amp;laquo;&lt;em&gt;&lt;a href=&quot;http://www.epongebleue.com/&quot; rel=&quot;nofollow&quot;&gt;Spongies&lt;/a&gt;&lt;/em&gt;&amp;raquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://davidlesieur.com/files/_dsc1929.jpg&quot; title=&quot;Macarons Druplicon&quot; alt=&quot;Macarons Druplicon&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1930.jpg&quot; title=&quot;Ballons&quot; alt=&quot;Ballons&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1931.jpg&quot; title=&quot;Ballons&quot; alt=&quot;Ballons&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1961.jpg&quot; title=&quot;Ballons&quot; alt=&quot;Ballons&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1942.jpg&quot; title=&quot;Bureaux&quot; alt=&quot;Bureaux&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1960.jpg&quot; title=&quot;Bureaux&quot; alt=&quot;Bureaux&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1949.jpg&quot; title=&quot;Écriture avec un contrôleur Wii&quot; alt=&quot;Écriture avec un contrôleur Wii&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1936.jpg&quot; title=&quot;Projection vidéo&quot; alt=&quot;Projection vidéo&quot; /&gt;&lt;br /&gt;
&lt;img src=&quot;http://davidlesieur.com/files/_dsc1968.jpg&quot; title=&quot;Boulingrin intérieur&quot; alt=&quot;Boulingrin intérieur&quot; /&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/253">Design</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/266">Montréal</category>
 <pubDate>Mon, 05 May 2008 21:47:53 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">194 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Le point sur l&#039;artisanat local</title>
 <link>http://planete.drupalfr.org/node/187</link>
 <description>&lt;p&gt;
  Petit billet à destination de ceux qui s&#039;intéressent aux productions libres disponibles sur ce site.
&lt;/p&gt;
&lt;p&gt;
  Dans la catégorie &quot;généralités&quot;, j&#039;ai vaguement torpillé le module Drupal contrib &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://drupal.org/project/project&quot; rel=&quot;nofollow&quot;&gt;Project&lt;/a&gt; pour le faire un peu mieux coller à mes besoins. La présentation des projets est maintenant sur une seule page, avec un ensemble de sections standard :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Licences&lt;/li&gt;
&lt;li&gt;Téléchargement des versions binaires&lt;/li&gt;
&lt;li&gt;Documentation (s&#039;il y en a une &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Accès aux sources via Subversion&lt;/li&gt;
&lt;li&gt;Liste des anomalies par projet et soumission de nouvelles (il faut avoir un compte)&lt;/li&gt;
&lt;li&gt;Liste des fonctionnalités demandées et soumission de nouvelles (il faut avoir un compte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
  Ça se passe donc dans Artisanat , par le menu en haut du site, à côté de thèmes dont voici les nouveautés et choses à venir.
&lt;/p&gt;
&lt;p&gt;&lt;h2&gt;TuxDroid&lt;/h2&gt;
&lt;p&gt;
  Ce matin, j&#039;ai mis à jour l&#039;ami TuxDroid avec une moyenne bonne surprise. Le démon TTS (parole) semble avoir changé et l&#039;API ne peut plus s&#039;y connecter. J&#039;ai modifié le reste pour qu&#039;il fonctionne avec le démon tuxd (mouvements, senseurs, etc) et là tout est revenu à la normale, mais pour le langage, il va falloir que je me penche un peu plus avant sur la question de ce qui a bougé et donc sur le nouveau démon fournit dans TuxSetup 1.3.&amp;lt;.p&amp;gt;&lt;/p&gt;
&lt;p&gt;
  Donc pour ceux qui voudraient utiliser le reste, la version &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://dev.artisan.karma-lab.net/node/1265&quot; rel=&quot;nofollow&quot;&gt;trunk&lt;/a&gt; est mise à jour, il faut juste recompiler. &lt;/p&gt;
&lt;p&gt;
   Au passage, suite à pas mal de cris, j&#039;ai viré Maven2 du système de construction, pour repasser à un bon vieux ANT. J&#039;ai aussi rajouté une note (Merci à Garf de me l’avoir fait remarquer) pour ne pas oublier de télécharger aussi les sources de &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://dev.artisan.karma-lab.net/node/1283&quot; rel=&quot;nofollow&quot;&gt;Java Commons Library&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  Pour finir sur le Tux, une nouvelle sympatoche, en plus d’avoir (enfin) reçu mon TShirt TuxDroid officiel, j&#039;ai été contacté par la &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://www.tuxisalive.com/&quot; rel=&quot;nofollow&quot;&gt;société Kysoh&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
 Leur équipe de développement est en train de réaliser un nouvelle architecture de démons qui communiqueraient un peu dans la ligne de ce dont on avait longuement &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://artisan.karma-lab.net/node/1233&quot; rel=&quot;nofollow&quot;&gt;discuté avec Jaguarondi&lt;/a&gt;, l&#039;auteur de ce qu&#039;il y a dans le ventre du tux (Rémi, c&#039;est la conversation dont je te parlais et sur laquelle je ne mettais plus la souris). Donc, à priori, les démons ne seront non plus accessibles en Socket/Trames Binaire mais plus simplement par HTTP/XML. Grande évolution qui va en gros diviser par 10 le code de l&#039;API &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt; et surtout permettre de réaliser des API à la chaîne pour des langages plus diversifiés (y compris Javascript).
&lt;/p&gt;
&lt;p&gt;
  De mon côté je vais donc, en plus de la nouvelle API Java qu&#039;il va falloir porter vers la nouvelle architecture, développer pour Kysoh, mais en modèle libre, une partie de mon ancien TuxletManager vers la nouvelle API des Gadgets. Le tout devant s&#039;intégrer dans un GadgetManager... tout en Java &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  Voilà. Fin des niouses pour le Pingouin mécaniques &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;Java Commons Library&lt;/h2&gt;
&lt;p&gt;
  J&#039;ai été surpris d&#039;apprendre que je n&#039;étais pas le seul à l&#039;utiliser. Comme beaucoup des choses se trouvant dans la catégorie Artisanat Locale, la raison d&#039;origine qui m&#039;avait fait publier ce code était de forcer un peu mes clients à contribuer au libre lorsqu’ils étaient content que j’arrive avec des briques toutes faites pour leur projet. Et comme ces pages sont goulûment mangées par google, ces derniers ne pouvaient pas soutenir ensuite que les dites librairies leur appartenait… Ne riez pas, cela m&#039;est arrivé une fois, j&#039;ai du tout ré-écrire &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/arf.gif&quot; title=&quot;Arf&quot; alt=&quot;Arf&quot; /&gt; ).&lt;/p&gt;
&lt;p&gt;
    Mais si d’autres l’utilisent, ça change un peu la donne et j&#039;ai donc décidé de la couper en deux. J&#039;ai extrait au maximum les choses trop  bancales, pour n&#039;y laisser que les fonctionnalités les plus pérennes (librairies Shell et XML notamment). J’ai mis la liste des changements à jour pour refléter cette évolution.
&lt;/p&gt;
&lt;p&gt;
  En tout cas, heureux de voir que cette librairie puisse être utile à certains !!
&lt;/p&gt;
&lt;/p&gt;
&lt;h2&gt;Drupal WEBDav Module&lt;/h2&gt;
&lt;p&gt;
  Si le support&lt;br /&gt;
        &lt;a target=&quot;_blank&quot; href=&quot;http://fr.wikipedia.org/wiki/Special:Search?search=WEBDAV&quot; rel=&quot;nofollow&quot;&gt;&lt;br /&gt;
        WEBDAV&lt;br /&gt;
        &lt;/a&gt; pour Drupal donné par ce module est dors et déjà opérationnel, il est encore lent et buggé. J&#039;avais été contacté en Novembre dernier par quelqu&#039;un devant m&#039;aider sur le projet. Mais comme cela m’est arrivé trop souvent, le garçon c’est un peu éclipsé au milieu du gué… Là je vais donc tenter de fusionner et achever ses modifications et en profiter pour optimiser le tout et basculer un système de hooks permettant à la communauté Drupal de développer des supports WebDav pour tout et n’importe quoi.
&lt;/p&gt;
&lt;h2&gt;La librairie perl &quot;Suza&quot;&lt;/h2&gt;
&lt;p&gt;
  A l&#039;origine cette librairie regroupais deux trois choses que j&#039;utilisais régulièrement en perl, sorte de boite à outils Perl.  Lorsque j&#039;ai travaillé en Décembre avec Dab sur la distribution française pour Zaurus, &lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://forum.zaurusfr.org/viewtopic.php?p=3718&quot; rel=&quot;nofollow&quot;&gt;ZaurusFR&lt;/a&gt; (qui marche du feu de dieu d&#039;ailleurs, chapeau Dab !!), cette librairie a pas mal évolué. Mais vu que j&#039;utilise Perl de moins en moins, je pense que le projet va simplement « voler » pour être définitivement intégré à la distribution de Dab. Cela ferra une dépendance en moins &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt;
&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
Voilà, fin des niouses sur le sujet des productions locales, ne reste plus qu’à faire son marché &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt;
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/215">drupalfr.org</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/283">En Bref</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/256">Java</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/264">Perl</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/206">PHP</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/216">Planet Libre</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/214">Ulhume</category>
 <pubDate>Sat, 03 May 2008 21:35:24 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">187 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Mon premier module Drupal: Woopra</title>
 <link>http://planete.drupalfr.org/node/163</link>
 <description>&lt;p&gt;Je viens juste de sortir mon premier module pour drupal: &lt;a href=&quot;http://drupal.org/project/woopra&quot; rel=&quot;nofollow&quot;&gt;woopra&lt;/a&gt;. Ça fait plaisir d&#039;enfin avoir la possibilité de mettre en œuvre la &quot;bidouille&quot; que j&#039;ai découverte en montant ce blog.&lt;br /&gt;
Ce module permet d&#039;ajouter le support pour le nouveau système de web statistiques du même nom: &lt;a href=&quot;http://www.woopra.com&quot; rel=&quot;nofollow&quot;&gt;Woopra&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je serais peut-être aussi en train de réfléchir a une deuxième idée mais ce ne serait peut-être bien qu&#039;une rumeur.&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/178">tom</category>
 <pubDate>Wed, 23 Apr 2008 00:02:47 +0200</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">163 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Compe-rendu du DrupalCampParis 2</title>
 <link>http://planete.drupalfr.org/node/164</link>
 <description>&lt;p&gt;
Avant hier, le deuxième DrupalCamp a eu lieu à Paris et ça a été un franc succès.
&lt;/p&gt;
&lt;p class=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/elv/2427442403/in/set-72157604636207072/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2128/2427442403_d0fb0c3d73.jpg?v=0&quot; alt=&quot;DrupalCamp Paris 2&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Photo prise par &lt;a href=&quot;http://www.flickr.com/photos/elv/&quot; rel=&quot;nofollow&quot;&gt;elv&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Tout d&#039;abord, un grand merci à toutes les personnes qui ont rendu cet événement possible, notamment les organisateurs et les sponsors, mais aussi les participants (toutes les coordonnées sont sur &lt;a href=&quot;http://barcamp.org/DrupalCampParis2Participants&quot; title=&quot;http://barcamp.org/DrupalCampParis2Participants&quot; rel=&quot;nofollow&quot;&gt;http://barcamp.org/DrupalCampParis2Participants&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
L&#039;événement s&#039;est déroulé à &lt;a href=&quot;http://www.lacantine.org/&quot; rel=&quot;nofollow&quot;&gt;la Cantine&lt;/a&gt;, un lieu pas trop bruyant, avec plusieurs espaces de discussion distincts et du WiFi partout. C&#039;était particulièrement adapté à ce genre d&#039;événement.
&lt;/p&gt;
&lt;p&gt;
Il y avait beaucoup plus de monde que lors du &lt;a href=&quot;http://drupalfrance.com/node/71&quot; rel=&quot;nofollow&quot;&gt;premier DrupalCamp Paris&lt;/a&gt;. Le site officiel annonce plus de 80 inscrits ; ce chiffre est difficile à vérifier mais on devait être pas loin de ce nombre-là de participants.
&lt;/p&gt;
&lt;p&gt;
Selon le principe du BarCamp, plusieurs sessions se sont organisées autour de différentes thématiques comme &amp;quot;Découvrir Drupal&amp;quot;, &amp;quot;Le staging d&#039;un site Drupal&amp;quot;, &amp;quot;L&#039;organisation de la communauté Drupal francophone&amp;quot;... Plusieurs compte-rendus ont été publiés en ligne [impossible de trouver une URL, mais je sais qu&#039;il y avait un wiki sur lequel plusieurs personnes ont posté au cours de la journée]. Vous trouverez également des photos dans l&#039;album &lt;a href=&quot;http://www.flickr.com/photos/elv/sets/72157604636207072/&quot; rel=&quot;nofollow&quot;&gt;DrupalCamp Paris 08&lt;/a&gt; sur Flickr.
&lt;/p&gt;
&lt;p&gt;
J&#039;ai finalement réussi à faire une interview vidéo de Michel Lévy Provençal sur l&#039;utilisation de Drupal à &lt;a href=&quot;http://www.france24.com/&quot; rel=&quot;nofollow&quot;&gt;France 24&lt;/a&gt;, je la publierai dans les prochains jours. D&#039;autres personnes que j&#039;aurais souhaité interviewer étaient présentes, mais nous n&#039;avons malheureusement pas trouvé le temps...
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/175">Actualité Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/171">Vincent Caillierez</category>
 <pubDate>Mon, 21 Apr 2008 14:24:32 +0200</pubDate>
 <dc:creator>damz</dc:creator>
 <guid isPermaLink="false">164 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>DrupalCampParis2, c&#039;est dans 2 jours</title>
 <link>http://planete.drupalfr.org/node/161</link>
 <description>&lt;p&gt;
Ce post rapide pour vous rappeler que le &lt;a href=&quot;http://barcamp.org/DrupalCampParis2&quot; rel=&quot;nofollow&quot;&gt;DrupalCampParis2&lt;/a&gt;, c&#039;est dans 2 jours (samedi 19 avril), à Paris donc.
&lt;/p&gt;
&lt;p&gt;
Peut-être pour être en conformité avec la tradition du &lt;a href=&quot;http://fr.wikipedia.org/wiki/BarCamp&quot; rel=&quot;nofollow&quot;&gt;BarCamp&lt;/a&gt; (&amp;quot;pas de spectateurs, tous participants&amp;quot;), aucun programme précis n&#039;a été annoncé. On sait simplement que plusieurs membres de l&#039;&amp;quot;équipe dirigeante&amp;quot; de Drupal seront présents (Dries Buytaert, Karoli Negyesi...). A ce jour, il y a déjà plus de 60 inscrits, dont plusieurs personnes venant de &amp;quot;grosses boîtes&amp;quot; (Atos, EDF, Microsoft...). A priori, ce BarCamp devrait donc être un beau succès.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/175">Actualité Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/171">Vincent Caillierez</category>
 <pubDate>Thu, 17 Apr 2008 15:39:09 +0200</pubDate>
 <dc:creator>damz</dc:creator>
 <guid isPermaLink="false">161 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>&quot;Building Powerful and Robust Websites with Drupal 6&quot; de David Mercer - Avis sur le livre</title>
 <link>http://planete.drupalfr.org/node/160</link>
 <description>&lt;p&gt;
Je viens de terminer la lecture du livre &amp;quot;&lt;a href=&quot;http://www.amazon.fr/Building-Powerful-Robust-Websites-Drupal/dp/1847192971/&quot; rel=&quot;nofollow&quot;&gt;Building Powerful and Robust Websites with Drupal 6&lt;/a&gt;&amp;quot; de David Mercer et j&#039;ai trouvé ça pas mal du tout.
&lt;/p&gt;
&lt;h2&gt;Résumé du livre&lt;/h2&gt;
&lt;p&gt;
Voici le contenu du livre dans les grandes lignes. Pour un sommaire plus détaillé (en anglais), je vous renvoie au &lt;a href=&quot;http://www.packtpub.com/drupal-6-create-powerful-websites/book&quot; rel=&quot;nofollow&quot;&gt;site de l&#039;éditeur&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;Chapitre 1 - Introduction à Drupal&lt;/h3&gt;
&lt;p&gt;
Historique de Drupal, principales fonctionnalités, exemples de sites qu&#039;on peut réaliser avec Drupal.&lt;br /&gt;
Présentation de la communauté et de la licence Drupal.
&lt;/p&gt;
&lt;h3&gt;Chapitre 2 - Installer l&#039;environnement de développement&lt;/h3&gt;
&lt;p&gt;
Installer Apache, PHP et MySQL, puis Drupal lui-même.&lt;br /&gt;
S&#039;assurer que Drupal est correctement configuré et résoudre les problèmes les plus fréquents.&lt;br /&gt;
Créer sa première page.
&lt;/p&gt;
&lt;h3&gt;Chapitre 3 - Les fonctionnalités de base&lt;/h3&gt;
&lt;p&gt;
Télécharger, installer et configurer des modules.&lt;br /&gt;
Manipuler les blocs.&lt;br /&gt;
Menus, liens primaires et secondaires.
&lt;/p&gt;
&lt;h3&gt;Chapitre 4 - Configuration du site&lt;/h3&gt;
&lt;p&gt;
URLs simplifiées, rapports d&#039;erreur, upload de fichiers, logs, mode &amp;quot;maintenance&amp;quot;.
&lt;/p&gt;
&lt;h3&gt;Chapitre 5 - Contrôle d&#039;accès&lt;/h3&gt;
&lt;p&gt;
Mettre en place une politique de contrôle d&#039;accès.&lt;br /&gt;
Les rôles, les permissions, les utilisateurs, les règles d&#039;accès.
&lt;/p&gt;
&lt;h3&gt;Chapitre 6 - Contenu - Les bases&lt;/h3&gt;
&lt;p&gt;
Explication des &amp;quot;types&amp;quot; de contenu.&lt;br /&gt;
Manipuler les types de contenu, créer du contenu, administrer le contenu.&lt;br /&gt;
Modules liés au contenu : aggregator et book.
&lt;/p&gt;
&lt;h3&gt;Chapitre 7 - Contenu - Fonctionnalités avancées&lt;/h3&gt;
&lt;p&gt;
La taxonomie.&lt;br /&gt;
CCK.&lt;br /&gt;
Publier du HTML et du PHP via Drupal (les formats d&#039;entrée).
&lt;/p&gt;
&lt;h3&gt;Chapitre 8 - L&#039;interface de Drupal&lt;/h3&gt;
&lt;p&gt;
Planifier son interface.&lt;br /&gt;
CSS.&lt;br /&gt;
Les thèmes : comprendre les thèmes, configurer un thème, personnaliser un thème (images, couleurs, régions de la page).
&lt;/p&gt;
&lt;h3&gt;Chapitre 9 - Fonctionnalités avancées&lt;/h3&gt;
&lt;p&gt;
S&#039;identifier sur son site Drupal avec OpenID.&lt;br /&gt;
Déclencher une action particulière lorsqu&#039;un événement donné se produit (&amp;quot;Actions and Triggers&amp;quot;). Ex : envoi d&#039;un e-mail quand un nouvel utilisateur crée un compte.&lt;br /&gt;
Gestion du multilingue.&lt;br /&gt;
Gestion des performances (cache).&lt;br /&gt;
Utilisation de JavaScript dans Drupal (jQuery et code JavaScript maison).
&lt;/p&gt;
&lt;h3&gt;Chapitre 10 - Gérer votre site web&lt;/h3&gt;
&lt;p&gt;
Les sauvegardes.&lt;br /&gt;
Le CRON et les tâches planifiées.&lt;br /&gt;
Tâches diverses : renommer les URLs (pathauto), désinstaller des modules, gérer les utilisateurs, optimiser le site pour les moteurs de recherche.&lt;br /&gt;
Mettre à jour Drupal et les modules.
&lt;/p&gt;
&lt;h3&gt;Annexe A - Déploiement&lt;/h3&gt;
&lt;p&gt;
Comment transférer votre site depuis le serveur de développement vers le serveur de production.
&lt;/p&gt;
&lt;h2&gt;Ce que j&#039;ai bien aimé&lt;br /&gt;
&lt;/h2&gt;
&lt;p&gt;
Le livre est complet et aborde tous les points importants, en passant le temps nécessaire sur chacun, ni trop ni trop peu. Le style est clair et les copies d&#039;écran pertinentes. Les exemples sont parlants et faciles à reproduire sur sa propre installation.
&lt;/p&gt;
&lt;p&gt;
On sent que Mercer connaît bien Drupal car il insiste sur les points particulièrement délicats pour les débutants. Par exemple, il répète souvent que ce qu&#039;on voit sur une page dépend énormément des modules installés et des permissions dont on dispose. Dit comme ça, cela paraît tout bête mais les débutants sont souvent déroutés lorsqu&#039;ils reviennent sur la même page après avoir changé un paramètre ou activé un module dans l&#039;administration et qu&#039;elle a un aspect complètement différent. Même chose selon qu&#039;ils consultent le site en tant qu&#039;utilisateur &amp;quot;anonyme&amp;quot; ou en tant que &amp;quot;superadmin&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
En expliquant la philosophie Drupal (comment fonctionnent les modules dans Drupal, comment fonctionnent les thèmes dans Drupal...) plutôt qu&#039;en s&#039;attachant à des modules ou des thèmes particuliers, Mercer donne aux webmasters des &amp;quot;clés&amp;quot; réutilisables qui leur permettront de poursuivre seuls - et au-delà du livre - leur découverte de Drupal. C&#039;est un pas vers l&#039;autonomie.
&lt;/p&gt;
&lt;h2&gt;Ce que j&#039;ai moins aimé&lt;/h2&gt;
&lt;p&gt;
En 362 pages, Mercer délivre le maximum d&#039;informations possible sans être indigeste. Cela dit, on peut regretter que certaines problématiques &amp;quot;classiques&amp;quot; n&#039;aient pas été abordées car le webmaster Drupal est quasi certain d&#039;y être confronté : l&#039;utilisation du module Views (pas encore disponible pour Drupal 6 au moment de l&#039;écriture du livre), l&#039;organisation du contenu dans un &amp;quot;vrai&amp;quot; site (Mercer explique le système de menu de Drupal ainsi que la taxonomie mais il ne détaille pas de solution clé en main pour organiser le contenu de son site en rubriques/sous-rubriques, une problématique ultra-fréquente).
&lt;/p&gt;
&lt;p&gt;
D&#039;une façon générale, Mercer explique parfaitement &amp;quot;Drupal out-of-the-box&amp;quot;, c&#039;est-à-dire Drupal tel qu&#039;il fonctionne avec ses modules par défaut, mais on peut regretter qu&#039;il ne mentionne pas quelques modules contribs incontournables (par exemple, l&#039;éditeur WYSIWYG TinyMCE, certains modules liés au contrôle d&#039;accès, ou les modules permettant de faire des liens &amp;quot;proprement&amp;quot; d&#039;une page à une autre...).
&lt;/p&gt;
&lt;p&gt;
Enfin, la concision donnera peut-être à certains le sentiment que Mercer va un peu trop vite. Connaissant bien Drupal, il est difficile pour moi d&#039;évaluer ce point, mais j&#039;ai parfois eu l&#039;impression que certaines explications auraient pu être un chouia plus développées.
&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
Avec ce livre, David Mercer a fait un meilleur travail qu&#039;avec le précédent (&lt;a href=&quot;http://www.amazon.fr/Drupal-Creating-Portals-Community-Websites/dp/1904811809/&quot; rel=&quot;nofollow&quot;&gt;Drupal: Creating Blogs, Forums, Portals, And Community Websites&lt;/a&gt;) : il couvre plus de terrain et aborde des sujets essentiels (CCK, la personnalisation du thème...) dans un style plus compact et plus efficace. Ce livre donne les connaissances de base nécessaires à toute personne souhaitant construire un site avec Drupal et qui ne connaît pas encore cet outil. Ce livre s&#039;adresse en priorité aux webmasters (pour les développeurs, je recommanderais plutôt &lt;a href=&quot;http://www.amazon.fr/Pro-Drupal-Development-John-Vandyk/dp/1590597559/&quot; rel=&quot;nofollow&quot;&gt;Pro Drupal Development&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Si ce livre était traduit en français, il pourrait être le chaînon manquant (et tant attendu) qui permettrait de réduire la courbe d&#039;apprentissage et favoriser l&#039;entrée de nouveaux membres dans la communauté Drupal francophone.
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/246">Livre Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/171">Vincent Caillierez</category>
 <pubDate>Wed, 16 Apr 2008 16:27:45 +0200</pubDate>
 <dc:creator>damz</dc:creator>
 <guid isPermaLink="false">160 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Changer le thème de drupal, avec le cache</title>
 <link>http://planete.drupalfr.org/node/141</link>
 <description>&lt;p&gt;
   Dans le volet précédent de la saga &quot;&lt;a class=&quot;external&quot; target=&quot;_blank&quot; href=&quot;http://artisan.karma-lab.net/node/1509&quot; rel=&quot;nofollow&quot;&gt;Comment changer dynamiquement de thème Drupal&lt;/a&gt;, notre module souffrait d&#039;un défaut de taille : Il fallait désactiver le cache pour qu&#039;il fonctionne. Nous allons voir maintenant comment le modifier pour que la même chose soit possible sans perte de performances.
&lt;/p&gt;
&lt;h2&gt;Gestion du cache&lt;/h2&gt;
&lt;p&gt;
  Le cache de page sous Drupal est un mécanisme bête et efficace. S&#039;il est actif, on commence avant d&#039;afficher quoi que ce soit, par vérifier qu&#039;il n&#039;existe pas un enregistrement correspondant à l&#039;URL demandée dans la table cache_page. Si c&#039;est le cas, les données de cet enregistrement sont directement expédiées sur le navigateur client et le traitement s&#039;arrête là. Le cache de page contient donc toute la page, thème compris. Et c&#039;est bien là notre problème.
&lt;/p&gt;
&lt;p&gt;
  Ce cache peut être soit désactivé, soit en mode &quot;normal&quot;, soit en mode &quot;agressif&quot;. En mode agressif, aucun module ne peut intervenir et le site est quasiment &quot;statique&quot;. C&#039;est pour cela qu&#039;il est assez rarement utilisé. En mode normal, certains modules dits &quot;bootstrap&quot; (voir l&#039;article précédent) peuvent avoir une action sur le contenu, c&#039;est ce que nous allons exploiter.
  &lt;/p&gt;
&lt;p&gt;Bien évidement, une page mise en cache n&#039;est pas valide à vie. Il y a un paramètre que vous pouvez modifier dans les performances indiquant de durée de validité des enregistrements. Passé ce temps, la page est refabriquée et vient écraser l&#039;ancienne version en base.
&lt;/p&gt;
&lt;p&gt;
  Un autre aspect important à connaître sur ce cache de page, c&#039;est qu&#039;il est désactivé pour tout utilisateur connecté. Ce qui peut poser un problème de performance dans le cas où votre site n’a que des utilisateurs authentifiés. En gros, le cache n&#039;agit que sur la version anonyme du site et c&#039;est un aspect à ne pas négliger car lorsque l&#039;on développe, nous sommes souvent connectés, et le comportement n&#039;est plus du tout le même...
&lt;/p&gt;
&lt;p&gt;
  Donc pour créer un thème dynamique en fonction du navigateur cible, avec un cache en mode &quot;normal&quot;, on va tomber sur le problème du &quot;premier qui gagne&quot;. Si un navigateur IE6 passe avant les autres, c&#039;est le thème IE6 qui va finir dans le cache et tout le monde sera logé à la même enseigne. Pire, vu qu&#039;il y a un enregistrement par page, et donc à la rubrique/billet affiché, on aurait rapidement un site &quot;arlequin&quot; avec un thème qui change de manière aléatoire d&#039;une page à l&#039;autre.
&lt;/p&gt;
&lt;p&gt;
  La seule solution pour régler ce problème est donc de modifier la stratégie de gestion du cache.
&lt;/p&gt;
&lt;h2&gt;Stratégie de cache&lt;/h2&gt;
&lt;p&gt;
  Malheureusement il n&#039;y a pas de hooks que l&#039;on puisse implémenter pour changer la manière dont fonctionne le cache. Il va donc nous falloir modifier les sources du coeur de Drupal. Prenez donc soin d&#039;en faire une copie préalable.
&lt;/p&gt;
&lt;p&gt;
  Le principe général est assez simple. Drupal retrouve le bon enregistrement d&#039;une page dans le cache en fonction d&#039;une clef. Cette clef est simplement l&#039;URL de la page à afficher. Il va donc nous falloir changer un peu cela pour que la nouvelle clef soit cette fois l&#039;URL additionnée du thème $custom_theme.
&lt;/p&gt;
&lt;p&gt;
  La stratégie du cache de page est pris en charge dans le module includes/bootstrap.inc, dans la fonction _drupal_cache_init. C&#039;est là que sont appelés nos kooks _init et _exit. Et c&#039;est aussi là qu&#039;est fait la distinction entre les trois modes du cache.
  &lt;/p&gt;
&lt;p&gt;Le problème est que le hook _init est appelé après récupération de la page en cache. Et du coup notre clef va être fausse. Il faut donc modifier la fonction pour faire appel à notre module avant que le cache ne soit lu. Malheureusement il n&#039;existe pas de fonction dans l&#039;API de cache pour vérifier qu&#039;un enregistrement existe avant de le charger effectivement. Et si l&#039;on continue d&#039;utiliser le hook _init, on prend le risque qu&#039;il soit appelé deux fois de suite : une fois avant la lecture en cache, et une fois de plus s&#039;il n&#039;y avait pas d&#039;enregistrement en cache pour cette page. Ce n&#039;est pas un problème pour notre module mais cela risque d&#039;en devenir un pour les autres modules &quot;bootstrap&quot; utilisant init/exit. Nous allons donc éviter le problème en créant notre propre hook, _preinit, et en l&#039;invoquant avant la récupération des données en cache. Cela nous donne la fonction de remplacement suivante :&lt;br /&gt;
  includes/bootstrap.inc
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;function _drupal_cache_init&amp;#40;$phase&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; require_once variable_get&amp;#40;&#039;cache_inc&#039;, &#039;./includes/cache.inc&#039;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; if &amp;#40;$phase == DRUPAL_BOOTSTRAP_EARLY_PAGE_CACHE &amp;amp;&amp;amp; variable_get&amp;#40;&#039;page_cache_fastpath&#039;, 0&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; if &amp;#40;page_cache_fastpath&amp;#40;&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/exit&quot; rel=&quot;nofollow&quot;&gt;exit&lt;/a&gt;&amp;#40;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; elseif &amp;#40;$phase == DRUPAL_BOOTSTRAP_LATE_PAGE_CACHE&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;variable_get&amp;#40;&#039;cache&#039;, CACHE_DISABLED&amp;#41; == CACHE_AGGRESSIVE&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;$cache = page_get_cache&amp;#40;&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; drupal_page_cache_header&amp;#40;$cache&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/exit&quot; rel=&quot;nofollow&quot;&gt;exit&lt;/a&gt;&amp;#40;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;#125;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; elseif &amp;#40;variable_get&amp;#40;&#039;cache&#039;, CACHE_DISABLED&amp;#41; == CACHE_NORMAL&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; require_once &#039;./includes/module.inc&#039;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bootstrap_invoke_all&amp;#40;&#039;preinit&#039;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;$cache = page_get_cache&amp;#40;&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bootstrap_invoke_all&amp;#40;&#039;init&#039;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; drupal_page_cache_header&amp;#40;page_get_cache&amp;#40;&amp;#41;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bootstrap_invoke_all&amp;#40;&#039;exit&#039;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/exit&quot; rel=&quot;nofollow&quot;&gt;exit&lt;/a&gt;&amp;#40;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; require_once &#039;./includes/module.inc&#039;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
  Ensuite, nous allons modifier le module de l&#039;article précédent pour renommer _init en _preinit, et créer une nouvelle fonction _init qui sera cette fois vide.
&lt;/p&gt;
&lt;h2&gt;Lecture et écriture du cache&lt;/h2&gt;
&lt;p&gt;
  Maintenant nous allons modifier les fonctions qui lisent et qui écrivent dans le cache pour ajouter le thème dans la clef. La lecture tout d&#039;abord, se trouve dans includes/bootstrap.inc, fonction page_get_cache. La modification est enfantine, elle consiste juste à déclarer en global notre variable $custom_theme et ajouter cette référence dans la clef de lecture du cache :&lt;br /&gt;
    includes/bootstrap.inc, fonction page_get_cache
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;function page_get_cache&amp;#40;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; // { Premiere modification&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/global&quot; rel=&quot;nofollow&quot;&gt;global&lt;/a&gt; $user, $base_root, $custom_theme;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; // }&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; $cache = NULL;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; if &amp;#40;!$user-&amp;gt;uid &amp;amp;&amp;amp; $_SERVER&amp;#91;&#039;REQUEST_METHOD&#039;&amp;#93; == &#039;GET&#039; &amp;amp;&amp;amp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/count&quot; rel=&quot;nofollow&quot;&gt;count&lt;/a&gt;&amp;#40;drupal_set_message&amp;#40;&amp;#41;&amp;#41; == 0&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; // { Deuxième modification&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; $cache = cache_get&amp;#40;$base_root . request_uri&amp;#40;&amp;#41;.&amp;quot;___&amp;quot;.$custom_theme, &#039;cache_page&#039;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; // }&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; if &amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/empty&quot; rel=&quot;nofollow&quot;&gt;empty&lt;/a&gt;&amp;#40;$cache&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/ob_start&quot; rel=&quot;nofollow&quot;&gt;ob_start&lt;/a&gt;&amp;#40;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; return $cache;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;#125; &lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
  Enfin, il ne nous reste plus qu&#039;à modifier la fonction de sauvegarde de la page, qui elle se trouve dans includes/common.inc, fonction page_set_cache. Et c&#039;est le même type d&#039;altération :&lt;br /&gt;
    includes/bootstrap.inc, fonction page_get_cache
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;function page_set_cache&amp;#40;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; // { première modification&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/global&quot; rel=&quot;nofollow&quot;&gt;global&lt;/a&gt; $user, $base_root, $custom_theme;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; // }&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; if &amp;#40;!$user-&amp;gt;uid &amp;amp;&amp;amp; $_SERVER&amp;#91;&#039;REQUEST_METHOD&#039;&amp;#93; == &#039;GET&#039; &amp;amp;&amp;amp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/count&quot; rel=&quot;nofollow&quot;&gt;count&lt;/a&gt;&amp;#40;drupal_get_messages&amp;#40;NULL, FALSE&amp;#41;&amp;#41; == 0&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; // This will fail in some cases, see page_get_cache() for the explanation.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; if &amp;#40;$data = &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/ob_get_contents&quot; rel=&quot;nofollow&quot;&gt;ob_get_contents&lt;/a&gt;&amp;#40;&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; $cache = TRUE;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/function_exists&quot; rel=&quot;nofollow&quot;&gt;function_exists&lt;/a&gt;&amp;#40;&#039;gzencode&#039;&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // We do not store the data in case the zlib mode is deflate.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // This should be rarely happening.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/zlib_get_coding_type&quot; rel=&quot;nofollow&quot;&gt;zlib_get_coding_type&lt;/a&gt;&amp;#40;&amp;#41; == &#039;deflate&#039;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $cache = FALSE;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else if &amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/zlib_get_coding_type&quot; rel=&quot;nofollow&quot;&gt;zlib_get_coding_type&lt;/a&gt;&amp;#40;&amp;#41; == FALSE&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $data = &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/gzencode&quot; rel=&quot;nofollow&quot;&gt;gzencode&lt;/a&gt;&amp;#40;$data, 9, FORCE_GZIP&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // The remaining case is &#039;gzip&#039; which means the data is&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // already compressed and nothing left to do but to store it.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/ob_end_flush&quot; rel=&quot;nofollow&quot;&gt;ob_end_flush&lt;/a&gt;&amp;#40;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#40;$cache &amp;amp;&amp;amp; $data&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // { seconde modification&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cache_set&amp;#40;$base_root . request_uri&amp;#40;&amp;#41;.&amp;quot;___&amp;quot;.$custom_theme, &#039;cache_page&#039;, $data, CACHE_TEMPORARY, drupal_get_headers&amp;#40;&amp;#41;&amp;#41;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // }&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
  Et voilà, c&#039;est terminé. Il ne reste plus qu&#039;à vider le &quot;vieux&quot; cache en passant par votre base de donnée et en exécutant un delete from cache_page. Maintenant, vous pouvez ré-activer le cache (en mode normal, pas agressif !!) et tester. En base de donnée, un select cid from page_cache vous confirme que les nouvelles clefs sont prise en compte.
&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
  Outre une meilleure compréhension du système de cache de Drupal, nous avons maintenant un module de changement dynamique de thème qui fonctionne parfaitement avec le cache, sans perte de performances. Le seul impacte est donc un doublement du volume du cache en base, ce qui n&#039;est pas un problème en soit. Alors certes cela s&#039;est fait au prix d&#039;une modification mineure du Coeur mais le résultat est là. Maintenant il est toujours possible de rendre cette modification plus générique en introduisant un hook _get_cache_page_key qui prendrait en paramètre la clef d&#039;origine et qui renverrait la clef modifiée. Cela réduirait considérablement l&#039;impacte sur le coeur de Drupal. Pour une prochaine fois peut-être &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt;
  &lt;/p&gt;
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/215">drupalfr.org</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/216">Planet Libre</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/284">Tutoriels</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/214">Ulhume</category>
 <pubDate>Fri, 14 Mar 2008 10:58:37 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">141 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Changer de thème Drupal en fonction du navigateur</title>
 <link>http://planete.drupalfr.org/node/140</link>
 <description>&lt;p&gt;
   Rendre un thème compatible avec cette horreur d&#039;IE6 a un coût certain et je n&#039;avais pas, mais alors pas du tout envie de me lancer dans l&#039;aventure pour le nouveau look d&#039;artisan. La solution qui m&#039;est paru plus saine, vu que ce brouteur est de toute façon en fin de vie (dieu merci), c&#039;est d&#039;utiliser spécifiquement pour lui, le vieux thème du site et ainsi laisser par défaut le nouveau pour ceux qui respectent un tant soit peu les standards. Et tout cela en restant dans un module, sans modifier le code de Drupal de préférence.
&lt;/p&gt;
&lt;h2&gt;Stratégie de cache&lt;/h2&gt;
&lt;p&gt;
  Comme vous devez le savoir, Drupal dispose de trois niveaux de cache allant de désactiver à agressif. Le cache des pages permet d&#039;améliorer énormément les performances sur un site à fort trafic en court-circuitant de manière plus ou moins profonde tout traitement en PHP. Ce cache n&#039;est utilisé que pour les connexions anonymes.
&lt;/p&gt;
&lt;p&gt;
  Le problème est que le cache étant par essence une version pré calculée d&#039;une page, il va rentrer clairement en conflit avec notre module de changement de thème. Cependant, pour rester progressif, je vous propose d&#039;abord une version qui implique de désactiver le cache. Nous verrons ensuite, dans un prochain article, comment modifier ce module pour qu&#039;il puisse aussi fonctionner en mode &quot;haute performance&quot;.
&lt;/p&gt;
&lt;h2&gt;Le module de base&lt;/h2&gt;
&lt;p&gt;
   Pour construire notre module, nous allons comme d&#039;habitude créer un dossier du genre sites/all/modules/mes_modules/ie6_theme_hack et y ajouter le fichier de description :&lt;br /&gt;
ie_theme_hack.info
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = &amp;quot;IE Theme Hack&amp;quot;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;description &amp;nbsp;= &amp;quot;IE Theme Hack&amp;quot;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;package &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;quot;karma-lab&amp;quot;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;version &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;quot;5.x-1.0&amp;quot;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;project &amp;nbsp; &amp;nbsp; &amp;nbsp;= &amp;quot;ie_theme_hack&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
Ceci fait, créons un deuxième fichier, le module à proprement parler, avec pour l&#039;instant juste ce qu&#039;il faut pour l&#039;activer :&lt;br /&gt;
ie_theme_hack.module
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;lt;?php&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;function ie_theme_hack_help($section) {&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; switch ($section) {&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case &#039;admin/modules#description&#039; :&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return t(&#039;IE Theme Hack&#039;);&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
  Comme d&#039;habitude, un petit tour dans ?q=/admin/build/modules, on coche le nouveau module et on enregistre.
&lt;/p&gt;
&lt;h2&gt;Changement dynamique de thèmes&lt;/h2&gt;
&lt;p&gt;
  Changer un thème sous Drupal est très simple. Le panneau de configuration ?q=/admin/build/themes permet de sélectionner autant de thème &quot;actifs&quot; que l&#039;on désire et en choisir un &quot;par défaut&quot;. Il vous suffit donc de cocher votre thème &quot;spécial IE6&quot; pour le rendre disponible mais non actif par défaut.
&lt;/p&gt;
&lt;p&gt;
  Ensuite, le &quot;truc&quot; réside en une variable globale non documentée dans Drupal, $custom_theme. Lorsque elle est renseignée, son contenu vient écraser le non de thème par défaut. Une chose que nous pourrions faire dans le hool_menu de notre menu. Mais ce n&#039;est pas &quot;si&quot; simple &lt;img src=&quot;http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/wink2.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
  En effet, la seule chose un peut délicate est que cette variable doit être renseignée très tôt dans le cycle de vie d&#039;une page Drupal, bien avant que n&#039;importe quel hook ne soit appelé sur notre module.
&lt;/p&gt;
&lt;p&gt;
  N&#039;importe quel hook, sauf heureusement hook_init et hook_exit. Si un module possède ces deux fonctions, il sera considéré par Drupal comme prioritaire (aussi appelé module &quot;bootstrap&quot;) et ces méthodes seront appelées avant même que le cache ne soit initialisé. Nous allons donc utiliser ces deux hooks dans notre nodule :&lt;br /&gt;
a la suite de ie6_theme_hack.module
&lt;ol&gt;
&lt;li class=&quot;li1&quot;&gt;function ie_theme_hack_init&amp;#40;&amp;#41;&amp;#123;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/global&quot; rel=&quot;nofollow&quot;&gt;global&lt;/a&gt; $custom_theme;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; $userAgent= $_SERVER&amp;#91;&#039;HTTP_USER_AGENT&#039;&amp;#93;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; if &amp;#40;&amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/strpos&quot; rel=&quot;nofollow&quot;&gt;strpos&lt;/a&gt;&amp;#40;$userAgent, &#039;MSIE 6&#039;&amp;#41; !== false&amp;#41; || &amp;#40;&lt;a target=&quot;blank&quot; href=&quot;http://www.php.net/strpos&quot; rel=&quot;nofollow&quot;&gt;strpos&lt;/a&gt;&amp;#40;$userAgent, &#039;MSIE 5&#039;&amp;#41; !== false&amp;#41;&amp;#41; &amp;#123;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $custom_theme = &#039;theme_pour_ie6&#039;;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;#125;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;function ie_theme_hack_exit&amp;#40;&amp;#41;&amp;#123;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
  Comme vous le voyez, hook_exit n&#039;est pas utilisé mais il doit être présent pour que le module soit déclaré comme prioritaire. Le corps du hook_init est lui assez simple. Une petite interrogation de la variable $_SERVER[&#039;HTTP_USER_AGENT&#039;] nous permet de déterminer s&#039;il s&#039;agit d&#039;un IE5 ou IE6, et si c&#039;est le cas, on positionne la variable $custom_theme avec le nom du thème alternatif, celui qui vous avez coché en plus du thème par défaut.
&lt;/p&gt;
&lt;p&gt;
  Il ne reste alors plus qu&#039;à sauver. Pour tester, prenez soin de déconnecter le cache dans la section performances de l&#039;administration. Ensuite, en fonction du navigateur soit c&#039;est le thème par défaut qui sera utilisé, sinon c&#039;est celui spécifique au navigateur cible.
&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
  Les deux hooks &quot;init&quot; et &quot;exit&quot; définissant un module &quot;bootstrap&quot; sont très précieux pour effectuer des opérations très bas niveau sans pour autant torpiller systématiquement le code de Drupal, en restant dans le cadre d&#039;un module distribuable. Ceci dit, même si l&#039;on cherche généralement à l&#039;éviter, il n&#039;est pas toujours possible d&#039;éviter la modification du coeur de Drupal, c&#039;est ce que nous allons voir au prochain épisode pour pouvoir réactiver le cache.
&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/215">drupalfr.org</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/206">PHP</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/216">Planet Libre</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/284">Tutoriels</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/214">Ulhume</category>
 <pubDate>Thu, 13 Mar 2008 20:29:29 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">140 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Drupal 6.0</title>
 <link>http://planete.drupalfr.org/node/123</link>
 <description>&lt;p&gt;Ca y est ! tomdeb.org tourne maintenant sur drupal 6.0.&lt;/p&gt;
&lt;p&gt;Quelques modules manquent encore a l&#039;appel mais j&#039;avais trop envie de mettre a jour. &lt;/p&gt;
&lt;p&gt;Pour ceux que ca interesse, la &#039;press release&#039; pour Drupal 6 est disponible sur &lt;a href=&quot;http://drupal.org/press/drupal-6.0/fr&quot; rel=&quot;nofollow&quot;&gt;drupal.org&lt;/a&gt;. Pour ceux qui n&#039;ont pas le temps, en voici un extrait:&lt;/p&gt;
&lt;p&gt;13 février 2008 - Le projet Drupal a annoncé ce jour le lancement officiel de Drupal 6, la plus récente version de sa plateforme de gestion de contenus primée. Cette nouvelle version intègre des centaines de perfectionnements, parmi lesquels un processus de publication et une simplicité d&#039;utilisation améliorés, l&#039;intégration d&#039;AJAX et du support multilingue, l&#039;adoption du standard d&#039;authentification OpenID, des possibilités et une flexibilité accrues pour la création de thèmes visuels personnalisés, et des outils d&#039;administration plus ergonomiques. Drupal 6 est un logiciel libre placé sous la licence GNU (General Public License), disponible au téléchargement sur &lt;a href=&quot;http://drupal.org/drupal-6.0&quot; title=&quot;http://drupal.org/drupal-6.0&quot; rel=&quot;nofollow&quot;&gt;http://drupal.org/drupal-6.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Toutes mes felicitations a toute la communaute de Drupal!&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/179">site</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/178">tom</category>
 <pubDate>Sun, 24 Feb 2008 16:45:13 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">123 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Drupal 6 est sorti !</title>
 <link>http://planete.drupalfr.org/node/119</link>
 <description>&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://www.narno.com/files/drupal.png&quot; alt=&quot;&quot; /&gt;Apr&amp;egrave;s 3 release candidates, &lt;a href=&quot;http://drupal.org/drupal-6.0&quot; rel=&quot;nofollow&quot;&gt;Drupal 6 est officiellement t&amp;eacute;l&amp;eacute;chargeable&lt;/a&gt; et exploitable en production.&lt;/p&gt;
&lt;p&gt;Les nouveaut&amp;eacute;s majeures par rapport &amp;agrave; la branche 5.x sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&#039;installation simplifi&amp;eacute;e, via un assistant vraiment complet&lt;/li&gt;
&lt;li&gt;L&#039;administration des blocs et autres menus en drag-and-drop pour une ergonomie vraiment am&amp;eacute;lior&amp;eacute;e et confortable&lt;/li&gt;
&lt;li&gt;Am&amp;eacute;lioration de la gestion multilangues, que ce soit au niveau de l&#039;interface ou des contenus (y compris pour les langues &amp;quot;invers&amp;eacute;es&amp;quot; tel que l&#039;Arable)&lt;/li&gt;
&lt;li&gt;Refonte du syst&amp;egrave;me de template donnant d&#039;avantage de libert&amp;eacute; aux &amp;quot;themers&amp;quot;&lt;/li&gt;
&lt;li&gt;Int&amp;eacute;gration par d&amp;eacute;faut de modules de r&amp;eacute;f&amp;eacute;rences, tel que : Actions, Triggers, Update satus, OpenID, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus de d&amp;eacute;tails dans l&#039;&lt;a href=&quot;http://drupal.org/drupal-6.0&quot; rel=&quot;nofollow&quot;&gt;annonce officielle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; j&#039;ai d&amp;eacute;ploy&amp;eacute; un site de d&amp;eacute;monstration sur ma Dedibox : &lt;a href=&quot;http://drupal6.narno.net&quot; rel=&quot;nofollow&quot;&gt;http://drupal6.narno.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A lire &amp;eacute;galement :&lt;/strong&gt; &lt;a href=&quot;http://drupal.org/press/drupal-6.0/fr&quot; rel=&quot;nofollow&quot;&gt;le communiqu&amp;eacute; de presse sur la sortie de Drupal 6.0 (fran&amp;ccedil;ais)&lt;/a&gt;&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/160">Narno</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/206">PHP</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/162">Planète Drupal</category>
 <pubDate>Thu, 14 Feb 2008 19:35:56 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">119 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Mon module Gravatar pour Drupal</title>
 <link>http://planete.drupalfr.org/node/114</link>
 <description>&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://www.narno.com/files/gavatar.jpg&quot; alt=&quot;Logo Gravatar&quot; /&gt;Et hop encore un module pour &lt;a title=&quot;Tag Drupal&quot; href=&quot;http://www.narno.com/tags/drupal&quot; rel=&quot;nofollow&quot;&gt;Drupal&lt;/a&gt; !&lt;/p&gt;
&lt;p&gt;En effet, &amp;ccedil;a fait maintenant un peu plus d&#039;un mois que je bosse plus ou moins r&amp;eacute;guli&amp;egrave;rement sur un &lt;a href=&quot;http://drupal.org/project/gravatar&quot; rel=&quot;nofollow&quot;&gt;module Gravatar pour Drupal&lt;/a&gt;. La release disponible est toujours en d&amp;eacute;veloppement, mais elle est fonctionnelle.&lt;/p&gt;
&lt;p&gt;Son principe est simple : apr&amp;egrave;s avoir install&amp;eacute; le module et d&amp;eacute;termin&amp;eacute; les droits d&#039;acc&amp;egrave;s (en fonction des r&amp;ocirc;les utilisateurs, par exemple anonyme ou enregistr&amp;eacute;), le Gravatar de l&#039;internaute est automatiquement ins&amp;eacute;r&amp;eacute; dans son commentaire (en fonction de son e-mail, plus de d&amp;eacute;tails sur &lt;a href=&quot;http://site.gravatar.com&quot; rel=&quot;nofollow&quot;&gt;Gravatar.com&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;L&#039;int&amp;eacute;gration du Gravatar peut se faire de 2 mani&amp;egrave;res diff&amp;eacute;rentes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;directement dans le texte du commentaire&lt;/li&gt;
&lt;li&gt;ou de mani&amp;egrave;re plus &amp;quot;propre&amp;quot;, dans la balise DIV du commentaire si le template utilis&amp;eacute; supporte le module Gravatar&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;D&#039;autre part, l&#039;administrateur a la possbilit&amp;eacute; de d&amp;eacute;terminer le rating des Gravatars autoris&amp;eacute;s.&lt;/p&gt;
&lt;p&gt;Enfin, les utilisateurs enregistr&amp;eacute;s peuvent choisir d&#039;utiliser ou non leur Gravatar, afin d&#039;utiliser leur profil personnalis&amp;eacute; offert par Drupal par exemple.&lt;/p&gt;
&lt;p&gt;Pour la suite, sans doute avec Drupal 6, j&#039;envisage d&#039;&amp;eacute;tendre ce module Gravatar au profil utilisateur et &amp;agrave; d&#039;autres types de contenu (node, forum, etc.).&lt;/p&gt;
&lt;p&gt;Le lien pour &lt;a href=&quot;http://drupal.org/project/gravatar&quot; rel=&quot;nofollow&quot;&gt;t&amp;eacute;l&amp;eacute;charger le module Gravatar pour Drupal&lt;/a&gt;.&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/198">Gravatar</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/170">module</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/167">Modules Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/160">Narno</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/162">Planète Drupal</category>
 <pubDate>Mon, 21 Jan 2008 22:48:44 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">114 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Wikio vote : module de vote pour Drupal</title>
 <link>http://planete.drupalfr.org/node/113</link>
 <description>&lt;p&gt;&lt;img align=&quot;right&quot; src=&quot;http://www.narno.com/files/wikio.gif&quot; alt=&quot;&quot; /&gt;Je viens de terminer la premi&amp;egrave;re release (de d&amp;eacute;veloppement) de mon nouveau module pour Drupal : &lt;em&gt;&lt;a href=&quot;http://drupal.org/project/wikiovote&quot; rel=&quot;nofollow&quot;&gt;Wikio vote&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Il s&#039;agit d&#039;un module de vote comparable &amp;agrave; &lt;em&gt;&lt;a href=&quot;http://drupal.org/project/scooperceci&quot; rel=&quot;nofollow&quot;&gt;Scooper Ceci&lt;/a&gt;&lt;/em&gt;, pour le site de publication de news &lt;a href=&quot;http://www.wikio.fr&quot; rel=&quot;nofollow&quot;&gt;Wikio&lt;/a&gt;. &lt;em&gt;Wikio vote&lt;/em&gt; vous permet d&#039;ins&amp;eacute;rer un bouton de vote dans 2 formats diff&amp;eacute;rents (gros bouton ou bouton en ligne), de d&amp;eacute;terminer son poids dans le node, dans quel type de contenu l&#039;afficher et enfin sa visibilit&amp;eacute; (dans l&#039;aper&amp;ccedil;u, dans la page compl&amp;egrave;te ou dans les 2).&lt;/p&gt;
&lt;p&gt;Le code est bas&amp;eacute; sur mon module &lt;em&gt;&lt;a href=&quot;http://drupal.org/project/scooperceci&quot; rel=&quot;nofollow&quot;&gt;Scooper Ceci&lt;/a&gt;&lt;/em&gt; (lui m&amp;ecirc;me insipr&amp;eacute; de &lt;a href=&quot;http://drupal.org/project/diggthis&quot; rel=&quot;nofollow&quot;&gt;&lt;em&gt;Digg This&lt;/em&gt;&lt;/a&gt;) et du code du &lt;a href=&quot;http://www.wikio.fr/addtoyoursite?id=3992&quot; rel=&quot;nofollow&quot;&gt;plugin de vote Wikio d&amp;eacute;di&amp;eacute; &amp;agrave; Dotclear 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour le t&amp;eacute;l&amp;eacute;chargement et les remarques, &amp;ccedil;a se passe ici : &lt;strong&gt;&lt;a href=&quot;http://drupal.org/project/wikiovote&quot; rel=&quot;nofollow&quot;&gt;Wikio vote pour Drupal&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Note : le bouton n&#039;est visible qu&#039;&amp;agrave; partir du moment o&amp;ugrave; votre article &amp;agrave; &amp;eacute;t&amp;eacute; publi&amp;eacute; (contrainte de l&#039;algo fourni par Wikio).&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/170">module</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/167">Modules Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/160">Narno</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/162">Planète Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/197">vote</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/196">Wikio</category>
 <pubDate>Sun, 13 Jan 2008 22:04:53 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">113 at http://planete.drupalfr.org</guid>
</item>
<item>
 <title>Sur la route de drupal6</title>
 <link>http://planete.drupalfr.org/node/111</link>
 <description>&lt;p&gt;Drupal 6 approche a grands pas, a pas de géants même. La liste des &lt;a href=&quot;http://drupal.org/drupal-6.0-beta1&quot; rel=&quot;nofollow&quot;&gt;améliorations et nouveautés est longue.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les premiers tests de migration de tomdeb.org vers drupal6 ont été concluants bien que problématiques. En effet, le système de theme a été grandement modifie, y compris le moteur de thème phptemplate lui-même. Heureusement, toutes les modifications sont bien &lt;a href=&quot;http://drupal.org/node/132442&quot; rel=&quot;nofollow&quot;&gt;documentées&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le problème majeur de mon theme (si on peut vraiment appeler ça un problème) c&#039;est qu&#039;il est base sur l&#039;excellent theme zen. Je dis que c&#039;est un problème parce que si je voulais continuer a me baser sur zen, il me faudrait attendre qu&#039;il y ait une version adaptée a drupal6. C&#039;est pour ca que j&#039;ai decide de baser mon prochain thème sur garland. Il n&#039;y aura pas de grande difference au niveau du design, mais comme garland est le thème de Drupal par défaut, je n&#039;ai pas besoin d&#039;attendre pour commencer a mettre a jour le thème.&lt;/p&gt;
&lt;p&gt;Quant aux modules, certains modules essentiels tels que image, views et content construction kit (CCK) n&#039;ont pas encore été mis a jour. Des qu&#039;une version sera disponible pour D6, je mettrai a jour ce site.&lt;/p&gt;
</description>
 <category domain="http://planete.drupalfr.org/taxonomy/term/100" />
 <category domain="http://planete.drupalfr.org/taxonomy/term/114">Drupal</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/179">site</category>
 <category domain="http://planete.drupalfr.org/taxonomy/term/178">tom</category>
 <pubDate>Mon, 10 Dec 2007 17:14:40 +0100</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">111 at http://planete.drupalfr.org</guid>
</item>
</channel>
</rss>
