{"id":1484,"date":"2010-03-18T01:04:52","date_gmt":"2010-03-18T00:04:52","guid":{"rendered":"http:\/\/flaven.fr\/?p=1484"},"modified":"2013-11-27T07:07:27","modified_gmt":"2013-11-27T06:07:27","slug":"drupal-personnaliser-variables-creer-des-variables-sur-mesure-dans-drupal-6","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2010\/03\/drupal-personnaliser-variables-creer-des-variables-sur-mesure-dans-drupal-6\/","title":{"rendered":"Drupal, Personnaliser, Variables &#8211; Cr\u00e9er des variables sur mesure dans Drupal 6"},"content":{"rendered":"<p>\t<!-- Drupal, Personnaliser, Variables - Cr\u00e9er des variables sur mesure dans Drupal 6  --><br \/>\n\t<!--  Drupal, Template, Drupal 6, Variables, Personnaliser, Int\u00e9gration, html, CSS, XHTML, PHP, MySQL, sur mesure --><br \/>\nL&#8217;id\u00e9e est de cr\u00e9er des variables sur mesure dans votre th\u00e8me Drupal 6 afin de nettoyer votre code pour qu&#8217;il soit plus facile \u00e0 manipuler et \u00e0 comprendre. C&#8217;est aussi une mani\u00e8re de cr\u00e9er ce que nous nommons ironiquement chez Hecube un th\u00e8me &#8220;couture&#8221;, c&#8217;est \u00e0 dire sur-mesure, qui s&#8217;\u00e9loigne progressivement des th\u00e8mes &#8220;pr\u00eat \u00e0 porter&#8221; que chacun utilise.<!--more--> Des th\u00e8mes qui jusqu&#8217;\u00e0 un certain point nous satisfont \u00e0 court terme mais qui rapidement se trouvent d\u00e9pass\u00e9s par de nouveaux besoins graphiques, fonctionnelles et \u00e9ditoriaux li\u00e9es \u00e0 l&#8217;\u00e9volution du site.<\/p>\n<p><b>La manucure consiste en une action assez simple : enlever du code et de la logique \u00e9crite en <code>php<\/code> du fichier <code>page.tpl.php<\/code> pour le transvaser vers un fichier de scripting pur et dur <code>template.php<\/code>. On va pour cela augmenter ou amender le code du fichier \u00e0 l&#8217;aide d&#8217;une <code>preprocess function<\/code>.<\/b><\/p>\n\t\t\t\t\t<div class=\"textwidget-unique text\">\n\n\t\t\t\t\t        <div class=\"textwidget-photo\">\n\t\t\t\t\t                <a href=\"https:\/\/flaven.fr\/books\/leveraging-drupal-getting-your-site-done-right\/\" class=\"photo\" title=\"Leveraging Drupal: Getting Your Site Done Right\"><img loading=\"lazy\" decoding=\"async\" alt=\"Leveraging Drupal: Getting Your Site Done Right\" src=\"http:\/\/ecx.images-amazon.com\/images\/I\/41gnzk7TYDL._SL160_.jpg\" width=\"121\" height=\"160\"><\/a>\n\t\t\t\t\t            <\/div>\n\t\t\t\t\t\t<div class=\"info half\">\n\t\t\t\t\t\t\t<h2 class=\"product-title\"><a class=\"head\" href=\"https:\/\/flaven.fr\/books\/leveraging-drupal-getting-your-site-done-right\/\" title=\"Leveraging Drupal: Getting Your Site Done Right\">Leveraging Drupal: Getting Your Site Done Right<\/a><\/h2>\n\t\t\t\t\t\t\t\n\t\t\t\t\t        <p class=\"product-excerpt\">Un excellent livre sur le CMS Drupal, qui prend vraiment le partie d'une approche pragmatique et efficace. Rien n'est laiss\u00e9 de c\u00f4t\u00e9 sur la compr\u00e9hension de Drupal (th\u00e8me, module...etc) mais il n'y a rien de superflu non plus. Par ailleurs, une chose rare qui m\u00e9rite d'\u00eatre signal\u00e9e c'est une application concr\u00e8te de la m\u00e9thode Agile avec \"User storie\", \"Acceptance Test\" pour mener \u00e0 bien le d\u00e9veloppement d'un site sous Drupal. Un livre tr\u00e8s complet.<\/p>\n\t\t\t\t\t\t\t\tGenre(s) : <a href=\"https:\/\/flaven.fr\/book-type\/agile\/\" rel=\"tag\">Agile<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/agile-scrum\/\" rel=\"tag\">Agile Scrum<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/ajax\/\" rel=\"tag\">Ajax<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/api\/\" rel=\"tag\">API<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/apis\/\" rel=\"tag\">APIs<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/applications\/\" rel=\"tag\">Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/cms\/\" rel=\"tag\">CMS<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/development\/\" rel=\"tag\">Development<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/direction-de-projet-agile\/\" rel=\"tag\">Direction de projet<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/drupal\/\" rel=\"tag\">Drupal<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/javascript\/\" rel=\"tag\">Javascript<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/jquery\/\" rel=\"tag\">jQuery<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/jquery-ui\/\" rel=\"tag\">jQuery UI<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/open-source-agile-developpement\/\" rel=\"tag\">Open Source<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php\/\" rel=\"tag\">PHP<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/php-applications\/\" rel=\"tag\">PHP Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/theme-2\/\" rel=\"tag\">Theme<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/user-stories\/\" rel=\"tag\">User stories<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/website\/\" rel=\"tag\">Website<\/a><br>Auteur(s) : <a href=\"https:\/\/flaven.fr\/book-author\/victor-kane\/\" rel=\"tag\">Victor Kane<\/a><br>Edition(s) : <a href=\"https:\/\/flaven.fr\/book-description\/john-wiley-sons\/\" rel=\"tag\">John Wiley &amp; Sons<\/a><br>\n\t\t\t\t\t<div class=\"but-wrap\"><a href=\"http:\/\/www.amazon.fr\/Leveraging-Drupal-Getting-Your-Right\/dp\/0470410876%3FSubscriptionId%3DAKIAJYB2QGGQOTHQLRPA%26tag%3Dhecubenet-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0470410876\" class=\"button\"><span><i class=\"more\"><\/i>+ d'infos<\/span><\/a><\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\n<h4>Augmenter la logique de votre fichier <code>template.php<\/code><\/h4>\n<blockquote><p>\nPreprocess functions only apply to theming hooks implemented as templates. The main role of the preprocessor is to setup variables to be placed within the template (.tpl.php) files. Plain theme functions do not interact with preprocessors.\n<\/p><\/blockquote>\n<h4>La fonction&#8230; <code>phptemplate_preprocess_page<\/code><\/h4>\n<p><code>phptemplate_preprocess_page<\/code><br \/>\nOn garde ce <code>hook<\/code> g\u00e9n\u00e9rique, c&#8217;est \u00e0 dire disponible pour l&#8217;ensemble des th\u00e8mes Drupal 6 que l&#8217;on pourrait utiliser sur notre site ce qui suppose que l&#8217;intitul\u00e9 de votre fonction commence de la sorte <code>phptemplate_preprocess_<\/code>. <\/p>\n<p><i>Si vous souhaitez rendre ce <code>hook<\/code> disponible uniquement pour un th\u00e8me, il vous suffit d&#8217;indiquer le nom du th\u00e8me. Dans un article pr\u00e9c\u00e9dent on avait cr\u00e9er un th\u00e8me nomm\u00e9 <code>singapore<\/code>, on aurait donc la fonction <code>singapore_preprocess_<\/code><\/i><\/p>\n<ul>\n<li><a href=\"http:\/\/social.hecube.net\/blog\/2010\/02\/16\/drupal-theme-creer-un-theme-drupal-6-a-partir-dune-page-html\/\" target=\"_blank\">Drupal, Theme &#8211; Cr\u00e9er un th\u00e8me Drupal 6 \u00e0 partir d\u2019une page html<\/a><\/li>\n<\/ul>\n<p>Si vous partez d&#8217;un fichier vierge <code>template.php<\/code>, il vous faut ouvrir une balise <code>&lt;?php<\/code> mais on ne la ferme pas&#8230;Dans notre exemple on part du fichier <code>template.php<\/code> du th\u00e8me <code>garland<\/code><\/p>\n<h4>Un seul ma\u00eetre \u00e0 bord, Capitaine hook<\/h4>\n<p>Arr\u00eatons-nous sur cette fonction \t<code>phptemplate_preprocess_HOOK<\/code> afin d&#8217;en comprendre les principes :<\/p>\n<ol>\n<li>Le moteur de template est <code>phptemplate<\/code><\/li>\n<li>Si vous remplacez <code>phptemplate_<\/code> par le nom de votre th\u00e8me ou template par exemple <code>monthemedrupal_<\/code> alors le <code>preprocess<\/code> ne sera disponible que dans ce th\u00e8me ou template.<\/li>\n<li>La partie de cette fonction<code>_HOOK<\/code> doit \u00eatre remplac\u00e9e par <code>_page<\/code> si vous souhaitez que cette fonction s&#8217;applique dans le fichier <code>page.tpl.php<\/code> et par  <code>_node<\/code> si vous souhaitez que cette fonction s&#8217;applique dans <code>node.tpl.php<\/code>. <b>Dans notre exemple, nous choisirons <code>_page<\/code> pour que cela s&#8217;applique dans <code>page.tpl.php<\/code><\/b><\/li>\n<\/ol>\n<h4>Un cas pratique<\/h4>\n<p>Pour faciliter la compr\u00e9hension, on va extraire de la logique du th\u00e8me ou template <code>garland<\/code> et appliquer la m\u00e9thode d\u00e9crite ci-dessus.<\/p>\n<p><b>Un extrait du fichier <code>template.php<\/code> avec notre nouvelle variable <code>site_baseline<\/code> dans mon th\u00e8me <code>garland<\/code><\/b>\t<\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\t\r\n\t\r\n\t\/**\r\n\t * Override or insert PHPTemplate variables into the templates.\r\n\t *\/\r\n\tfunction phptemplate_preprocess_page(&amp;$vars) {\r\n\t  $vars['tabs2'] = menu_secondary_local_tasks();\r\n\r\n\t  \/\/ Hook into color.module\r\n\t  if (module_exists('color')) {\r\n\t    _color_page_alter($vars);\r\n\t  }\r\n\r\n\t\t$output = &quot;&lt;h1&gt;hecube.net avec Drupal&lt;\/h1&gt;&quot;;\r\n\t\t$vars['site_baseline'] = $output;\r\n\t}\r\n\t\r\n\t\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2010\/03\/drupal_creating_variables_1.jpg\" alt=\"Drupal, Personnaliser, Variables - Cr\u00e9er des variables sur mesure dans Drupal 6\" width=\"500\" height=\"265\" \/><\/p>\n<p>\t<b>Un extrait du fichier <code>page.tpl.php<\/code> avec notre nouvelle variable <code>$site_baseline<\/code> dans le th\u00e8me <code>garland<\/code><\/b>\t<\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n\r\n\r\n\t\t\/**\r\n\t\t * L'impression de cette variable\r\n\t\t *\/\r\n\t\t\t\r\n\t\tprint (''.$site_baseline.'');\r\n\r\n\r\n\t<\/pre>\n<p>\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2010\/03\/drupal_creating_variables_0.jpg\" alt=\"Drupal, Personnaliser, Variables - Cr\u00e9er des variables sur mesure dans Drupal 6\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>L&#8217;impression de la variable <code>$site_baseline<\/code> dans le theme\/template <code>garland<\/code><\/b><br \/>\n\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2010\/03\/drupal_creating_variables_2.jpg\" alt=\"Drupal, Personnaliser, Variables - Cr\u00e9er des variables sur mesure dans Drupal 6\" width=\"500\" height=\"265\" \/><\/p>\n<p>\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2010\/03\/drupal_creating_variables_3.jpg\" alt=\"Drupal, Personnaliser, Variables - Cr\u00e9er des variables sur mesure dans Drupal 6\" width=\"500\" height=\"265\" \/><\/p>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>Setting up variables for use in a template (preprocess functions)<br \/>\n\t\t<a href=\"http:\/\/drupal.org\/node\/223430\" target=\"_blank\">http:\/\/drupal.org\/node\/223430<\/a><\/li>\n<li>Group 42 &#8211; Drupal 6 Template Variables &#8211; Going to the Source<br \/>\n\t\t<a href=\"http:\/\/www.group42.ca\/drupal_6_template_variables_going_to_the_source\" target=\"_blank\">http:\/\/www.group42.ca\/drupal_6_template_variables_going_to_the_source<\/a><\/li>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;id\u00e9e est de cr\u00e9er des variables sur mesure dans votre th\u00e8me Drupal 6 afin de nettoyer votre code pour qu&#8217;il soit plus facile \u00e0 manipuler&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2010\/03\/drupal-personnaliser-variables-creer-des-variables-sur-mesure-dans-drupal-6\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Drupal, Personnaliser, Variables &#8211; Cr\u00e9er des variables sur mesure dans Drupal 6<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9430,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Personnalisez Drupal 6 avec des variables sur mesure. Nettoyez votre code pour des th\u00e8mes couture, adapt\u00e9s \u00e0 vos besoins graphiques et fonctionnels.","bf_ai_og_title":"Personnaliser Drupal 6 Variables","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3444,3447,3449,3451,3435,3452],"tags":[209,2225,280,303,304,2211,311,20,312,305,313,212],"class_list":["post-1484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-databases","category-technology-trends","category-tutorials-how-to","category-web-design-front-end","category-web-development","category-wordpress-cms","tag-css","tag-drupal","tag-drupal-6","tag-html","tag-integration","tag-mysql","tag-personnaliser","tag-php","tag-sur-mesure","tag-template","tag-variables","tag-xhtml"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-nW","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2011\/01\/drupal_generic_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=1484"}],"version-history":[{"count":2,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1484\/revisions"}],"predecessor-version":[{"id":10180,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1484\/revisions\/10180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9430"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=1484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=1484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=1484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}