<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>532Pixel - Le blog</title>
	
	<link>http://blog.532pixel.com</link>
	<description />
	<lastBuildDate>Thu, 08 Dec 2011 15:28:54 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/532pixel" /><feedburner:info uri="532pixel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Où trouver des themes Drupal</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/LAnpf9NXsDU/</link>
		<comments>http://blog.532pixel.com/2011/12/08/ou-trouver-des-themes-drupal/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 15:28:54 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[theming]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=285</guid>
		<description><![CDATA[J&#8217;ai du faire des recherches sur les différentes places de marché (ou Market-Places) de themes Drupal. Voila le résultat synthétisé sur un page : Themes Drupal, places de marché &#38; annuaires. N’hésitez pas à remonter vos remarques &#38; suggestions dans les commentaires ! Bonne lecture &#8230;]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai du faire des recherches sur les différentes places de marché (ou Market-Places) de themes Drupal. Voila le résultat synthétisé sur un page : <a href="http://blog.532pixel.com/themes-pour-drupal/">Themes Drupal, places de marché &amp; annuaires</a>. N’hésitez pas à remonter vos remarques &amp; suggestions dans les commentaires !</p>
<p>Bonne lecture &#8230;</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/LAnpf9NXsDU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/12/08/ou-trouver-des-themes-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/12/08/ou-trouver-des-themes-drupal/</feedburner:origLink></item>
		<item>
		<title>SEO Camp Nantes</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/pKy0Hb1elkA/</link>
		<comments>http://blog.532pixel.com/2011/10/30/seo-camp-nantes/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 10:38:05 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[referencement]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=265</guid>
		<description><![CDATA[Hier, le 29 Octobre 2011, s&#8217;est déroulé à Nantes le SEO Camp Day. Un regroupement de passionné de SEO, autours de conférence aux sujets variés. Cet évenement à été organisé par Ronan CHARDONNEAU de l&#8217;Agence INEXTCOM et l&#8217;association SEO Camp. Un grand merci à lui, ainsi qu&#8217;a l&#8217;Epitech pour ses locaux (que nous avons eu [...]]]></description>
			<content:encoded><![CDATA[<p>Hier, le 29 Octobre 2011, s&#8217;est déroulé à Nantes le SEO Camp Day. Un regroupement de passionné de SEO, autours de conférence aux sujets variés. Cet évenement à été organisé par <a href="http://twitter.com/inextcomronan">Ronan CHARDONNEAU</a> de l&#8217;Agence <a href="http://www.inextcom.fr">INEXTCOM</a> et l&#8217;association <a href="http://www.seo-camp.org">SEO Camp</a>. Un grand merci à lui, ainsi qu&#8217;a l&#8217;<a href="http://www.epitech.eu/ecole-informatique-nantes-pays-de-la-loire/">Epitech</a> pour ses locaux (que nous avons eu la chance d&#8217;occuper pour le DrupalCamp de Janvier dernier).</p>
<p>Ronan m&#8217;avait contacté pour introduire l&#8217;optimisation SEO les sites Drupal, dans le cadre d&#8217;une conférence sur l&#8217;optimisation des CMS OpenSource, à savoir Drupal, WordPress et Magento. En fin d&#8217;article, le pdf et les slides de ma présentation.<br />
Un grand bravo à mes &#8220;co-présentateurs&#8221;, <a href="https://twitter.com/rochdaniel">Daniel Roch</a> de <a href="http://www.seomix.fr">SEOMix</a> pour WordPress, et <a href="https://twitter.com/#!/afilluzeau">Alexandre Filluzeau</a> pour Magento. J&#8217;ai trouvé leur présentations riches et dynamiques.</p>
<p>On a aussi bien rigolé avec la présentation du SEO Black Hat par <a href="https://twitter.com/#!/Seoblackout">Paul Sanches</a> et <a href="https://twitter.com/#!/clip6">Kaddiern Sauvage</a>. Bien ficelée, constructive et décalée. Parfait ! Après un temps d&#8217;échange, je n&#8217;ai pas pu assisté aux 2 présentations suivantes (Monétisation de site web par <a href="https://twitter.com/#!/thibaultvincent">Thibault Vincent</a>, et Rédaction web &amp; Google News par <a href="https://twitter.com/#!/eseoref">Nicolas Robineau</a>). La journée s&#8217;est terminée par la présentation de Ronan Himself, sur l&#8217;utilisation avancée de Google Analytics pour le référencement. Ronan publiera en décembre un livre sur ce sujet.</p>
<p>Au final, de chouettes orateurs présents. J&#8217;ai encore beaucoup à apprendre pour être aussi à l&#8217;aise avec un micro, devant un parterre de passionnés&#8230;</p>
<p>Si tout va bien, les présentations seront publiées en vidéo prochainement. Encore bravo et merci à l&#8217;équipe du SEO Camp. On trouve un très bon <a href="http://bomboleriot.tumblr.com/post/12088842297/seocampnantes">compte rendu du SEO Camp</a> sur le site d&#8217;<a href="http://twitter.com/#!/AurelienBleriot">Aurélien Blériot</a>.</p>
<p>&#8212;-</p>
<div id="__ss_9946540" style="width: 425px; margin: 0 auto;">
<iframe src="http://www.slideshare.net/slideshow/embed_code/9946540" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> </p>
<p>Le <a title="Seocamp Nantes 2011 : CMS Open-Source Drupal " href="http://www.slideshare.net/olivierpierre/seocamp-nantes-2011-cms-opensource-drupal" target="_blank">slideshare</a> et le <a href="http://www.532px.com/seocamp/seocamp_drupal_2011.pdf">pdf</a>.</p>
</div>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/pKy0Hb1elkA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/10/30/seo-camp-nantes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/10/30/seo-camp-nantes/</feedburner:origLink></item>
		<item>
		<title>Module drupal context_vocabulary</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/X7rVLj2qo2I/</link>
		<comments>http://blog.532pixel.com/2011/10/10/module-drupal-context_vocabulary/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 15:54:09 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[egotrip]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=259</guid>
		<description><![CDATA[Billet rapide, pour signaler la création d&#8217;un module drupal nommé &#8220;Context vocabulary&#8220;. Ce module propose un nouveau type de condition pour le module Context. Très proche de la réaction &#8220;taxonomy&#8221; présente de base dans context, Context Vocabulary permet de déclencher la condition quand n&#8217;importe quel terme du vocabulaire séléctionné est attaché au node affiché. C&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p>Billet rapide, pour signaler la création d&#8217;un module drupal nommé &#8220;<a href="http://drupal.org/project/context_vocabulary">Context vocabulary</a>&#8220;.</p>
<p>Ce module propose un nouveau type de condition pour le module <a href="http://drupal.org/project/context">Context</a>. Très proche de la réaction &#8220;taxonomy&#8221; présente de base dans context, Context Vocabulary permet de déclencher la condition quand n&#8217;importe quel terme du vocabulaire séléctionné est attaché au node affiché. C&#8217;est assez pratique dans le cas d&#8217;un vocabulaire non figé.</p>
<p>Voila, c&#8217;est mon premier module sur drupal.org, et je dois bien avouer que j&#8217;en suis assez fier !</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/X7rVLj2qo2I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/10/10/module-drupal-context_vocabulary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/10/10/module-drupal-context_vocabulary/</feedburner:origLink></item>
		<item>
		<title>Réduire la bande passante d’un programme sous Ubuntu</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/X9cRzrVrNqc/</link>
		<comments>http://blog.532pixel.com/2011/07/11/controler-bande-passante-programme-ubuntu/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 10:19:54 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Bloc-note]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=235</guid>
		<description><![CDATA[Je cherchais ça depuis quelques temps déja, une manière de controler (et limiter surtout) la bande passante d&#8217;un programme. L&#8217;idée derrière tout ca était surtout de pouvoir tester l&#8217;intégration HTML/CSS d&#8217;un site web avec une faible connexion. Le programme trickle permet de faire tout ça: trickle -s -d 50 /usr/bin/firefox le parametre -d permet ici [...]]]></description>
			<content:encoded><![CDATA[<p>Je cherchais ça depuis quelques temps déja, une manière de controler (et limiter surtout) la bande passante d&#8217;un programme. L&#8217;idée derrière tout ca était surtout de pouvoir tester l&#8217;intégration HTML/CSS d&#8217;un site web avec une faible connexion.<br />
Le programme trickle permet de faire tout ça:</p>
<pre>trickle -s -d 50 /usr/bin/firefox</pre>
<p>le parametre -d permet ici de limiter le débit descendant (download) pour firefox à 50ko/s. On trouve aussi le parametre -u, pour le débit montant (upload). Trickle est disponible dans les dépots, donc vous pouvez l&#8217;installer facilement depuis la console avec:</p>
<pre>sudo apt-get install trickle</pre>
<p>C&#8217;est aussi simple que ca! Astuce trouvée sur <a href="http://astuces-ubuntu.blogspot.com">Astuces Ubuntu</a> : <a href="http://astuces-ubuntu.blogspot.com/2008/12/limiter-la-bande-passante-dun-programme.html">http://astuces-ubuntu.blogspot.com/2008/12/limiter-la-bande-passante-dun-programme.html</a></p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/X9cRzrVrNqc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/07/11/controler-bande-passante-programme-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/07/11/controler-bande-passante-programme-ubuntu/</feedburner:origLink></item>
		<item>
		<title>DrupalCamp Paris 2011</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/8VKGDJPsUdY/</link>
		<comments>http://blog.532pixel.com/2011/06/21/drupalcamp-paris-2011/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 08:48:31 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[barcamp]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=216</guid>
		<description><![CDATA[Le 18 Juin 2011 à eu lieu à Paris un DrupalCamp (= un barcamp Drupal), dans les locaux de Linagora. D&#8217;abord un remerciement à tous les sponsors qui ont permis que cet évènement ait eu lieu. Comme j&#8217;ai eu la chance d&#8217;y participer, je me sens obligé d&#8217;en faire un rapide compte-rendu. Première session animée par Maxime [...]]]></description>
			<content:encoded><![CDATA[<p>Le 18 Juin 2011 à eu lieu à Paris un <a href="http://drupalcamp.fr/">DrupalCamp</a> (= un barcamp Drupal), dans les locaux de Linagora. D&#8217;abord un remerciement à tous les <a href="http://drupalcamp.fr/sponsors">sponsors</a> qui ont permis que cet évènement ait eu lieu. Comme j&#8217;ai eu la chance d&#8217;y participer, je me sens obligé d&#8217;en faire un rapide compte-rendu.</p>
<h2>Première session animée par <a href="http://twitter.com/#!/mtopolov">Maxime Topolov</a> en <a href="http://twitter.com/#!/asplamagnifique/status/82002757069979648">crocs</a>: Sites à haut trafic, systèmes de cache&#8230;</h2>
<p>2 Types de sites (et de traffic):  Trafic anonyme vs Trafic connecté.</p>
<p>Un fort trafic anonyme permet l&#8217;utilisation de cache statique, comme <a href="http://www.varnish-cache.org/">Varnish</a>. Pour ce dernier, pas besoin de module drupal. C&#8217;est un soft à installer sur son serveur; Il vient se placer sur le port 80, et intercepte les requêtes destinée à Apache pour servir une version caché, et donc beaucoup plus rapidement.<br />
Pour Varnish, on peut utiliser le standard ESI, permettant de definir une durée de vie (TTL) par zone de la page. Par exemple, un header/footer avec une grande durée de vie, mais le bloc &#8220;derniers articles&#8221; avec une courte durée de vie. Le module <a href="http://drupal.org/project/esi">ESI</a> permet de mettre ca en place.<br />
On peut également utiliser le module <a href="http://drupal.org/project/boost">Boost</a>, qui enregistre &#8220;physiquement&#8221; sur le serveur les pages HTML  pour les servir au visiteur. Boost est moins performant que varnish car, étant un module, il implemente necessairement le bootstrap drupal.</p>
<p><a href="http://drupal.org/project/memcache">Memcache</a>: Le module <a href="http://drupal.org/project/cacherouter">cach﻿e_router</a> permet de déporter les tables de cache de drupal (cache_*) en mémoire vive, afin de décharger le serveur SQL. (Il s&#8217;utilise quel que soit le type de trafic.)</p>
<p><a href="http://www.mongodb.org/">MongoDB</a>: Base de donnée orientée document (clé|valeur), No SQL. Le module <a href="http://drupal.org/project/mongodb">Drupal MongoDB</a> existe, mais necessite du code custom. On peut, par exemple, stocker l&#8217;intégralité d&#8217;un node, avec ces champs, comme un document MongoDB. (ca reste assez flou pour moi;)</p>
<p>2 modules à tester pour cacher les pages avec un trafic connecté: <a href="http://drupal.org/project/authcache">authcache</a> et <a href="http://drupal.org/project/easy_authcache">easy_authcache</a></p>
<h2><a href="http://drupal.org/project/easy_authcache"></a>HTML5 &amp; mobilité dans drupal</h2>
<p>On retrouve l&#8217;initiative Drupal-HTML5 : <a href="http://groups.drupal.org/html5">http://groups.drupal.org/html5</a></p>
<p>Le problème fondamental est celui qu&#8217;on avait (ou qu&#8217;on a toujours) en desktop, soit les differences de rendu entre les differents navigateurs. Le web mobile est visible sur un encore plus grand nombre de terminaux. Lors de cette session, nous nous sommes mis d&#8217;accord pour ne parler ni de WAP/WML, ni d&#8217;appli native (iOS, Android), mais bien de web: HTML &amp; CSS (et donc HTML5 &amp; CSS3)</p>
<p><strong>Theming: </strong>2 manières de faire ont été abordées, soit un changement de thème, en fonction du user-agent (<a href="http://drupal.org/project/mobile_tools">mobile tools</a>, ou <a href="http://drupal.org/project/themekey">themeKey</a>), soit un theme adaptatif à base de <a href="http://mediaqueri.es/">@media-queries</a>. A noter que mobile_tools s&#8217;integre à context, et permetterait de jouer sur les blocs en fonction du terminal de lecture. On pourrait aussi jouer sur les profiles image_cache (ou style d&#8217;image, en D7) afin d&#8217;envoyer au client des images d&#8217;un taille adaptée à son lecteur (mobile, tablette, desktop, wide-screen..)</p>
<p>Coté HTML5/CSS3, afin de savoir quelle propriété est disponible sur quel navigateur, on peut noter le site <a href="http://caniuse.com/">http://caniuse.com/</a></p>
<p>Reflexion interessante sur l&#8217;aspect business: Avant, on trouvait des agences web, et des agences mobiles. Ces dernières avaient une grande expertise pour le developpement d&#8217;application mobile, WAP ou natives. Maintenant que le web s&#8217;améliore de ce coté la, les agences web &#8220;traditionnelles&#8221; peuvent s&#8217;attaquer au marché mobile, en proposant des applications riches basées sur des languages web (HTML5/CSS3/JS)</p>
<p><strong>Liens en vrac:</strong> <a href="http://jquerymobile.com/">jQuery mobile</a>, <a href="http://www.appcelerator.com/">titanium</a>, <a href="http://www.expertisemobile.com/2010/11/18/bkrender-what-is-bkml/">bkml</a>, <a href="http://www.numerama.com/magazine/18984-le-financial-times-abandonne-l-app-store-au-profit-du-html5.html">le Financial Times abandonne les applications natives pour proposer une application HTML5</a>,</p>
<h2><strong>Staging, Déployement</strong></h2>
<p>Eternel problème avec Drupal, on fait face à 2 problèmes: La migration de la configuration, et la migration des contenus.</p>
<h3>Migration de configuration</h3>
<p><a href="http://drupal.org/project/features">Features</a>, <a href="http://api.drupal.org/api/drupal/developer--hooks--install.php/function/hook_update_N/6">hook_update</a>, <a href="http://drupal.org/project/backup_migrate">backup_migrate</a>, le tout avec <a href="http://drupal.org/project/drush">drush</a>, et des <a href="http://www.google.fr/search?q=script+bash">scripts bash</a>.</p>
<p>Features (enfin en version stable!) permet de packager un ensemble fonctionnel sous la forme d&#8217;un module drupal (des types de contenus, de la taxonomie, des menus, des vues, des profiles imagecache &#8230;).<br />
Les hook_updates permettent d&#8217;effectuer des actions en base de données qui n&#8217;ont pu être exportées avec une feature. En gros les &#8220;cases a cocher&#8221; dans l&#8217;interface d&#8217;admin de drupal.<br />
Backup&#8217;n'migrate, avec des profils spécifiques, permet d&#8217;exporter uniquement quelques tables. C&#8217;est utile, par exemple, pour les tables de la traduction, ou pour la table des permissions. De l&#8217;avis général, on utilise backup_migrate en dernier recours.</p>
<h3>Migration de contenu</h3>
<p>Pour la migration de contenu d&#8217;une instance à une autre, on utilise les modules <a href="http://drupal.org/project/feeds">Feeds</a>, <a href="http://drupal.org/project/migrate">Migrate</a>, ou <a href="http://drupal.org/project/deploy">Deploy</a>. Ces modules peuvent aussi être utilisé pour migrer d&#8217;un autre CMS à Drupal.</p>
<h2><strong>i18n, multilinguisme</strong></h2>
<p>Info sur le module <a href="http://drupal.org/project/translation_table">translation_table</a>, qui propose une meilleure UI pour l&#8217;interface de traduction de drupal6.</p>
<p>Drupal7 propose la traduction des nodes par champ (translatable fields), avec d&#8217;avoir un seul et unique nid par contenu multilingue. Intéressant car le body est devenu un field en D7; Reste le problème du titre, car $node-&gt;title n&#8217;est pas un champ.</p>
<p>Une bonne pratique à été conseillée: Toujours mettre l&#8217;anglais comme langue par défaut, même si on veut le français comme langue par défaut sur le front. En effet, avoir autre chose que l&#8217;anglais comme défaut posait des problème pour la traduction de certains éléments (label de champs, termes et vocabulaire, nom de menus&#8230;)</p>
<h2>En vrac</h2>
<ul>
<li>Un module de gestion des médias, utilisé par radio-france: <a href="http://drupal.org/project/scald">Scald</a></li>
<li>Des montages photos sensationnels : <a href="http://www.flickr.com/photos/julien-dubois/5849562651/in/photostream/">http://www.flickr.com/photos/julien-dubois/5849562651/in/photostream/</a></li>
<li>La migration D6 -&gt; D7 n&#8217;est pas si simple (<a href="https://twitter.com/#!/asplamagnifique/status/82106274430464000">citation</a>), et c&#8217;est éventuellement le moment de faire une refonte fonctionelle du site, afin de n&#8217;avoir qu&#8217;une migration de contenu à faire.</li>
<li>La défense, un samedi matin, quand il bruine, c&#8217;est triste !</li>
</ul>
<p>Si j&#8217;ai raconté des conneries, ou s&#8217;il faut que je complète certaines infos, n&#8217;hesitez pas, les commentaires sont fait pour ça! (Egalement en cas de faute d&#8217;orthographe qui fait saigner les yeux)</p>
<p><a href="http://www.flickr.com/photos/julien-dubois/5849562651/in/photostream/"></a></p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/8VKGDJPsUdY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/06/21/drupalcamp-paris-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/06/21/drupalcamp-paris-2011/</feedburner:origLink></item>
		<item>
		<title>Afficher le numero de page dans la balise title avec Drupal</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/LCGE3_V7itw/</link>
		<comments>http://blog.532pixel.com/2011/06/03/afficher-numero-page-balise-title-drupal/#comments</comments>
		<pubDate>Fri, 03 Jun 2011 09:32:58 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Bloc-note]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[referencement]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=212</guid>
		<description><![CDATA[Une chose que Drupal ne gère pas nativement, c&#8217;est d&#8217;afficher le numero de page (pour les vues avec pagination par exemple) dans la balise &#60;title&#62;. Cela evite d&#8217;avoir X pages avec le meme &#60;title&#62;, ce qui n&#8217;est pas top d&#8217;un point de vue SEO. C&#8217;est pourtant assez simple de mettre ca en place. Dans le [...]]]></description>
			<content:encoded><![CDATA[<p>Une chose que Drupal ne gère pas nativement, c&#8217;est d&#8217;afficher le numero de page (pour les vues avec pagination par exemple) dans la balise &lt;title&gt;. Cela evite d&#8217;avoir X pages avec le meme &lt;title&gt;, ce qui n&#8217;est pas top d&#8217;un point de vue SEO.</p>
<p>C&#8217;est pourtant assez simple de mettre ca en place. Dans le fichier template.php de votre thème, dans un hook_preprocess_page, ajoutez le bout de code suivant:</p>
<pre>if (isset($_GET['page']) &amp;&amp; $_GET['page'] != '') {
  $head_title = explode(' | ', $variables['head_title']);
  $head_title[0] .= ', page '.($_GET['page'] + 1);
  $variables['head_title']        = implode(' | ', $head_title);
}</pre>
<p>et voila, quick&#8217;n'dirty !</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/LCGE3_V7itw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/06/03/afficher-numero-page-balise-title-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/06/03/afficher-numero-page-balise-title-drupal/</feedburner:origLink></item>
		<item>
		<title>Modifier la liste déroulante d’un champ nodereference dans drupal 6</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/HnOl1N1Jbc8/</link>
		<comments>http://blog.532pixel.com/2011/02/19/modifier-liste-deroulante-champ-nodereference-drupal/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 16:58:03 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[after_build]]></category>
		<category><![CDATA[cck]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=198</guid>
		<description><![CDATA[Nodereference (inclus dans CCK) est un module très pratique. Il permet simplement d&#8217;effectuer des relations entre différents nodes. Je ne reviens pas sur l&#8217;utilisation de ce module, Marie-Hélène s&#8217;en est chargée avec brio. Un des widgets possible d&#8217;un champ nodereference est la liste déroulante (select list, ou combo-box), qui permet de choisir un node parmi [...]]]></description>
			<content:encoded><![CDATA[<p>Nodereference (inclus dans CCK) est un module très pratique. Il permet simplement d&#8217;effectuer des relations entre différents nodes. Je ne reviens pas sur l&#8217;utilisation de ce module, <a title="Drupalistic: Autour du node reference" href="http://www.drupalistic.net/etudesdecas/autour-du-node-reference">Marie-Hélène s&#8217;en est chargée avec brio</a>.</p>
<p>Un des widgets possible d&#8217;un champ nodereference est la liste déroulante (select list, ou combo-box), qui permet de choisir un node parmi plusieurs dans une liste. Cette liste déroulante nous affiche les titres des nodes référençables, mais cela manque parfois de détail et on aimerait pouvoir l&#8217;altérer afin d&#8217;y ajouter d&#8217;autres informations.<br />
Notre exemple, volontairement très simple, consiste à ajouter le nid du node à coté de son titre.</p>
<p>Comme pour toute altération de formulaire, on utilise le <a href="http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_alter/6"><em>hook_form_alter()</em></a>. Le champ nodereference (ici &#8216;field_noderef&#8217;) est fourni par cck, et si on le regarde au moment du form_alter ($form['field_noderef']), on ne verra pas l&#8217;état final du champ. En effet, CCK s&#8217;occupe de ses champs après la construction du formulaire (le &#8216;build&#8217;). Pour les modifier, il faut passer après (&#8216;after_build&#8217;)</p>
<pre>function monmodule_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  // assurons nous d'être dans le formulaire correspondant à notre type de contenu
  if ($form_id == 'mycontenttype_node_form') {

    // ajoutons une fonction d' #after_build à notre champ nodereference
    $form['field_noderef']['#after_build'][] = 'customnoderef_select';
  }
}
</pre>
<p>Il nous reste à écrire notre fonction:</p>
<pre>function customnoderef_select($form_element, &amp;$form_state) {

  // #columns contient le type de clé du champ nodereference: nid (node), ou uid (user)
  $column = $form_element['#columns'][0];

  // Récupération des options par defaut
  $default_options = $form_element[$column][$column]['#options'];

  /** Alteration
   * La clé du tableau ($k) représente le nid
   * La valeur ($v) représente le titre
   */
  foreach($default_options as $k =&gt; $v) {
    $default_options[$k] = '[' . $k . '] '. $v;
  }

  // Ecriture des options altérées
  $form_element[$column][$column]['#options'] = $default_options;

  // renvoi de l'élément du formulaire
  return $form_element;
}
</pre>
<p>Et voila, il a suffit de ces 2 hooks pour altérer le widget d&#8217;un champ nodereference. La stratégie est la même pour modifier les autres types de champs CCK (En anglais, <a title="OSSolutions: Alter CCK filefield elements" href="http://ossolutions.org/article/alter-cck-filefield-elements">l&#8217;altération d&#8217;un champ filefield</a>)</p>
<p>Notre altération reste très simple, le but de l&#8217;article étant de montrer le principe de base. En réalité, on cherchera généralement à afficher d&#8217;autres informations sur le node, comme son type, sa date de création&#8230; Dans ces cas, il faut passer par une étape de récupération d&#8217;information (Requête sur la base de données).</p>
<p>Sources:<br />
<a href="http://drupal.org/node/935088">http://drupal.org/node/935088</a><br />
<a href="http://ossolutions.org/article/alter-cck-filefield-elements">http://ossolutions.org/article/alter-cck-filefield-elements</a></p>
<p>Comme d&#8217;habitude, je suis preneur d&#8217;autres techniques, d&#8217;alternatives, de critiques constructives, de correction de typo&#8230;</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/HnOl1N1Jbc8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2011/02/19/modifier-liste-deroulante-champ-nodereference-drupal/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2011/02/19/modifier-liste-deroulante-champ-nodereference-drupal/</feedburner:origLink></item>
		<item>
		<title>Désactiver l’envoi d’email aux utilisateurs qui s’inscrivent sans approbation dans drupal</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/CcSnvIw33fA/</link>
		<comments>http://blog.532pixel.com/2010/10/21/desactiver-envoi-email-utilisateurs-sans-approbation-drupal/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 12:53:15 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=193</guid>
		<description><![CDATA[Derrière ce super long titre, un très court article !  Pour un projet, je devais désactiver l&#8217;email habituellement envoyé aux nouveaux utilisateurs d&#8217;un drupal réglé sur &#8220;Les visiteurs peuvent créer leur propre compte sans approbation de l&#8217;administrateur.&#8221; ( dans admin/user/settings) Par défault, drupal ne propose pas cette option. Ce comportement est géré par la variable [...]]]></description>
			<content:encoded><![CDATA[<p>Derrière ce super long titre, un très court article !  Pour un projet, je devais désactiver l&#8217;email habituellement envoyé aux nouveaux utilisateurs d&#8217;un drupal réglé sur &#8220;Les visiteurs peuvent créer leur propre compte sans approbation de l&#8217;administrateur.&#8221; ( dans admin/user/settings)</p>
<p>Par défault, drupal ne propose pas cette option. Ce comportement est géré par la variable interne user_mail_register_no_approval_required_notify.</p>
<p>Il suffit donc d&#8217;ajouter cette variable comme élément du formulaire &#8220;Paramètres des utilisateurs&#8221;. J&#8217;ai choisi d&#8217;ajouter mon element à coté du champ d&#8217;edition de l&#8217;email qu&#8217;on ne souhaite pas envoyer. C&#8217;est le fieldset &#8220;Paramètres du courriel utilisateurs&#8221; &gt; &#8220;Bienvenue, pas d&#8217;approbation requise&#8221;.</p>
<p>Voila le code de mon form_alter:</p>
<pre>function MYMODULE_form_user_admin_settings_alter(&amp;$form, &amp;$form_state) {
  // allow admin to choose if a notification mail is sent to user (who register without approval)
  $form['email']['no_approval_required']['user_mail_register_no_approval_required_notify'] = array(
    '#type' =&gt; 'checkbox',
    '#title' =&gt; t('Send'),
    '#default_value' =&gt; variable_get('user_mail_register_no_approval_required_notify', true),
  );
}
</pre>
<p>Avec ca, on dispose d&#8217;une case a cocher &#8220;Envoyer&#8221;, qui permet d&#8217;activer/desactiver l&#8217;envoi de ces emails.</p>
<p><em>Comme d&#8217;hab, correction/remarques/insultes/bisous dans les commentaires&#8230;</em></p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/CcSnvIw33fA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2010/10/21/desactiver-envoi-email-utilisateurs-sans-approbation-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2010/10/21/desactiver-envoi-email-utilisateurs-sans-approbation-drupal/</feedburner:origLink></item>
		<item>
		<title>opiSimpleSlideshow : un slideshow simple pour jQuery</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/UbW_JPd99wA/</link>
		<comments>http://blog.532pixel.com/2010/10/07/opisimpleslideshow-un-slideshow-simple-pour-jquery/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 12:57:02 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Projets]]></category>
		<category><![CDATA[egotrip]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=181</guid>
		<description><![CDATA[Aujourd&#8217;hui, je suis content, je lance mon premier script jQuery. Modestement nommé &#8220;opiSimpleSlideshow&#8221;, c&#8217;est donc un script léger de slideshow pour jQuery. En plus de pouvoir me servir dans certains de mes projets, le but avoué de ce script est pour moi l&#8217;apprentissage des bonnes pratiques de codage jQuery, sous forme de plugin, avec gestion [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui, je suis content, je lance mon premier script jQuery. Modestement nommé &#8220;opiSimpleSlideshow&#8221;, c&#8217;est donc un script léger de slideshow pour jQuery.</p>
<p>En plus de pouvoir me servir dans certains de mes projets, le but avoué de ce script est pour moi l&#8217;apprentissage des bonnes pratiques de codage jQuery, sous forme de plugin, avec gestion de parametres.</p>
<p>Vous pouvez trouver ce script sur sa page dédiée : <a href="http://opisimpleslideshow.532px.com">http://opisimpleslideshow.532px.com</a>, et sur son dépot gitHub : <a href="http://github.com/opi/opiSimpleSlideshow">http://github.com/opi/opiSimpleSlideshow</a>.</p>
<p>Je ne me prétends pas expert jQuery, ni expert codeur, ni expert tout court, alors n&#8217;hesitez pas à laisser des remarques dans les commentaires de cet article, ainsi que dans la section &#8220;<a href="http://github.com/opi/opiSimpleSlideshow/issues">issues</a>&#8221; du dépot gitHub.</p>
<p>Voila, en plus d&#8217;etre une <a href="http://drupal.org/drupal-7.0-beta1">bonne journée pour tout le monde</a>, c&#8217;est une bonne journée pour moi! J&#8217;espere sortir bien d&#8217;autres petits plugins jQuery&#8230; a suivre.</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/UbW_JPd99wA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2010/10/07/opisimpleslideshow-un-slideshow-simple-pour-jquery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2010/10/07/opisimpleslideshow-un-slideshow-simple-pour-jquery/</feedburner:origLink></item>
		<item>
		<title>Utiliser des événements shift+click, alt+click, ctrl+click avec jquery</title>
		<link>http://feedproxy.google.com/~r/532pixel/~3/Saupu_Fjtec/</link>
		<comments>http://blog.532pixel.com/2010/09/17/utiliser-evenements-ctrl-alt-shift-click-jquery/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 09:54:31 +0000</pubDate>
		<dc:creator>opi</dc:creator>
				<category><![CDATA[Bloc-note]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.532pixel.com/?p=174</guid>
		<description><![CDATA[Pour les besoins d&#8217;une interface d&#8217;administration (ou backoffice, backend pour se la raconter), j&#8217;avais besoin d&#8217;avoir une action differente sur le shift+click sur un lien; comprenez le clic sur un lien en maintenant appuyée un touche de modification, comme shift, ctrl ou alt. Dans mon cas il s&#8217;agissait d&#8217;ouvrir le lien dans un lightbox sur [...]]]></description>
			<content:encoded><![CDATA[<p>Pour les besoins d&#8217;une interface d&#8217;administration (ou backoffice, backend pour se la raconter), j&#8217;avais besoin d&#8217;avoir une action differente sur le shift+click sur un lien; comprenez le clic sur un lien en maintenant appuyée un touche de modification, comme shift, ctrl ou alt.<br />
Dans mon cas il s&#8217;agissait d&#8217;ouvrir le lien dans un lightbox sur le shift+click, l&#8217;ouverture restant classique sur un clic classique.</p>
<p>Voila comment procéder avec jQuery :</p>
<pre>$('a').bind('click', function(e){
    if (e.shiftKey) {
       e.preventDefault(); 
       //  mon action 
   }
});</pre>
<p>Les événements utilisables sont  &#8220;shiftKey&#8221;, &#8220;altKey&#8221; et &#8220;ctrlKey&#8221;.<br />
e.preventDefault() permet d&#8217;empecher le comportement classique lors du click sur le lien.</p>
<p>On peut meme utiliser des combinaisons, comme ctrl+shift+click,  ctrl+alt+click&#8230;  en utilisant l&#8217;event   &#8220;e.modifiers&#8221;. Pour plus d&#8217;info sur cet événement, voir <a href="http://www.javascripter.net/faq/ctrl_alt.htm">cette page</a>.</p>
<p>Comme mon cas d&#8217;utilisation était pour une interface d&#8217;admin (utilisée par des gens &#8220;compétents&#8221;), j&#8217;ai testé le bon fonctionnement uniquement dans Firefox &amp; Chrome/Chromium. Merci de laisser un commentaire si vous constatez que ca fonctionne aussi avec ce cher IE5.5</p>
<p>N&#8217;hésitez pas à laisser en commentaires des exemples d&#8217;utilisations, et toutes vos remarques.</p>
<img src="http://feeds.feedburner.com/~r/532pixel/~4/Saupu_Fjtec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.532pixel.com/2010/09/17/utiliser-evenements-ctrl-alt-shift-click-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.532pixel.com/2010/09/17/utiliser-evenements-ctrl-alt-shift-click-jquery/</feedburner:origLink></item>
	</channel>
</rss>

