Planète

Par hellosct1

Conférences Drupal au Forum PHP 2012

L’Association Française des Utilisateurs de PHP (AFUP) vient de publier le programme du Forum PHP 2012 qui se déroulera le 5 et 6 juin 2012 à la cité universitaire de Paris. Il s’agit d’un évènement majeur de la communauté PHP francophone depuis plus de 10 ans avec un programme de conférences de haut niveau.

Le CMS Drupal sera à cette occasion représentée par l’intermédiaire de conférences avec Bastien Jaillot et Simon Perdrisat pour «Drupal comme vous ne l’avez jamais vu», Jonathan-David SCHRÖDER pour «Bien comprendre et choisir Lucene, Solr…». Ainsi que la présence de Christophe Villeneuve (‘Trésorier Adjoint de DrupalFR’) avec un retour d’expérience.

Par ailleurs, pour cette édition 2012, l’accent a été mis sur la performance, la qualité et les nouveaux usages avec des conférenciers reconnus et une programmation riche et variée.

De nombreux intervenants vont effectuer le déplacement comme Rasmus Lerdorf qui proposera un tour d’horizon du PHP en 2012. Enrico Zimuel présentera » A quick start on Zend Framework 2», LB Denker proposera » Scaling Communication through Continious Integration «. Du coté des conférenciers francophones, la venue de Frédéric Hardy pour » Anatomie du test «, accompagné de Ivan Enderlin, ainsi que pour un atelier » TDD avec atoum «. Jérôme Renard présentera quant à lui » Varnish pour le développeur PHP «.

Enfin deux grandes nouveautés de ce Forum PHP 2012 :

  • Une série de lightning talks (10 mini-confs de 4 minutes)… l’appel à sujets sera annoncé prochainement
  • Et une table ronde spéciale DSI sur l’utilisation de PHP dans les grands groupes, avec la participation exceptionnelle de e-TF1 et de La Fourchette.

Les liens utiles :

* La liste des conférences

Pour vous inscrire, ne perdez pas de temps, réservez votre place au Forum PHP 2012 !

Par Artusamak
Julien Dubois

Info utile #2 – Simpletest et le multilinguisme

J’ai identifié un problème assez ennuyeux il y a quelques jours lorsque j’essayais de lancer des tests simpletests depuis un module du core, quelque soit le test déclenché, le batch plantait. Après vérification que la résolution du nom de ma VM se faisait bien localement, c’est la panne sèche, pas d’idée sur la cause du problème.

La cause du problème était pourtant sous mes yeux depuis le début, dans la barre d’adresse, ce petit préfixe qui traîne et qui ne paie pas de mine, en remplaçant le ‘fr’ par un ‘en’ ou en le supprimant, le problème s’est résolu.

Pensez-y si le problème vous arrive, la négociation de langue n’est pas compatible avec simpletest.

Contrôle d'entité sur Drupal 7

Le contrôleur d'entité Dans le hook entity_info, nous avons déclaré que nous utiliserions notre propre classe contrôleur. Autrement dit, nous devons à présent en fournir une. Toutefois, une classe contrôleur n'est pas nécessairement petite et, si elle n'est utilisée qu'à de rares occasions, il n'est pas souhaitable d'analyser ce code sur toutes les pages.

Tags: 

Par badgones

jQuery et Drupal 7, TypeError is null ou TypeError: undefined is not a function

Si vous essayez de tester du code jQuery via Firebug ou la console de Chrome sur votre site Drupal 7, vous avez peut-être rencontré l'erreur suivante :
TypeError is null (Firefox)
TypeError: undefined is not a function (Chrome)

En fait, depuis la version 7 de Drupal, il faut redéclarer la fonction $ pour tester du code :

(function ($) {
  $('#toto').hide();
// END jQuery
})(jQuery);

C'est pareil pour tous les fichiers Javascript des modules. 

(function ($) {
    $(document).ready(function() {
       $('#toto').hide();
    });
// END jQuery
})(jQuery);

Par j0nathan

Se former avec nous! Nous annoncons nos formations en vedette ce printemps.

Notre fameuse formation en CSS/Theming Drupal pour débutants est de retour ce printemps!

Nos formations visent à initier les gens de niveau débutant à intermédiaire à ce système de gestion de contenu et à favoriser votre appropriation des dernières technologies en gestion de sites web.

Durant le cours, nos formateurs vous aiderons à comprendre les notions de base de la communauté Drupal, le css, l'installation et la configuration des thèmes Drupal pour donner un look sur mesure à votre site.

Les places sont limitées: réservez la vôtre aussitôt que possible!

Notez que les formations sont offertes en français, mais quelques ressources et parties peuvent être disponibles en anglais. Des sessions en anglais pourront être organisées selon l'intérêt manifesté.

Les cours auront lieu au local de Koumbit.

HTML / CSS et theming Drupal pour débutants

Suivez avec nous la création d'un look unique pour un site web Drupal. Nous apprendrons tout le processus de création d'un thème, cheminant ensemble pendant la transformation d'une maquette en un thème Drupal. En plus des défis uniques au theming dans Drupal, nous aborderons les derniers standards Web et leurs défis: CSS 3 et HTML 5. Selon les besoins et envies des participants, nous pourrons aussi aborder quelques pratiques plus avancées, par exemple, des "sprites," ou un bref introduction au theming mobile.

Suite à cette formation vous serez être en mesure de :

  • Créer un thème Drupal fonctionnel à partir d'une maquette.
  • Connaître et appliquer les bonnes pratiques en theming.
  • Connaître les pièges les plus importants (et idéalement les éviter)
  • Connaître les outils pratiques pour l'intégration.

Connaissances requises :

  • Connaissances de base en HTML et CSS (c'est à dire: savoir ce que c'est!). Nous allons revoir les notions de base si besoin est.

Profs

Lydie Servanin, intégratrice et Heidi Strohl, graphiste

Coût

375$ pour trois cours/ateliers de 4 heures chaque.

Dates

  • 18 mai, 10h à 14h30
  • 25 mai, 10h à 14h30
  • 1 juin, 10h à 14h30
  • Note : nous prenons une heure de pause pour le repas.

Details

  • Voir le plan de cours
  • Inscrivez-vous! (Limite de 8 participant(e)s) N'oubliez pas de nous laisser savoir si vous avez une requête particulière que vous voulez traiter durant la formation.
Par badgones

Add css in the template.php file / Ajouter une css dans le fichier template.php

Having trouble using drupal_add_css with template_preprocess_page? Make sure you refresh the $variables['styles'] array:

function <a class="local active" title="Process variables for page.tpl.php" href="http://api.drupal.org/api/drupal/includes%21theme.inc/function/template_preprocess_page/6">template_preprocess_page</a>(&amp;$variables) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a class="local" title="Adds a CSS file to the stylesheet queue." href="http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_css/6">drupal_add_css</a>('path/to/style.css');<br />
&nbsp;&nbsp;&nbsp;&nbsp; $variables['styles'] = <a class="local" title="Returns a themed representation of all stylesheets that should be attached to the page." href="http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_get_css/6">drupal_get_css</a>();<br />
}
Par JulienD
julien dubreuil

DrupalEveryDay un petit service pour apprendre un peu plus chaque jour

Cela fait quelques mois maintenant que Drupal 7 est arrivé, de nouveaux concepts sont apparus, de nouvelles API ont été mises en place et beaucoup de hooks ont été modifiés.

Comme pas mal de monde, j’ai lu plein d’articles sur Internet mais aujourd’hui encore j’ai l’impression de n’avoir découvert qu’une petite partie des nouvelles fonctionnalités. Forcément j’ai du passer à côté de certaines choses, du coup j’ai cherché une façon de découvrir l’api en profondeur.
L’idée m’est venue d’un calendrier d’énigmes que l’on m’a offert à noël (merci belle-sœur), où chaque jour vous retrouvez une nouvelle devinette à affronter. A ce moment la, je me suis dit pourquoi ne pas faire la même chose avec l’api de Drupal7, chaque jour un nouveau truc à apprendre.
Au début je pensais faire cela uniquement pour moi mais après réflexion je me suis dis que cela pourrait être utile à l’ensemble de la communauté et ce qui prouve que je ne me suis pas trompé, c’est que les premiers échos sont positifs.

J’ai donc crée drupaleveryday.com dont le principe est vraiment basique, puisque chaque jour, 4 fonctions piochées au hasard sont affichées sur le site et publiées sur Twitter. Sur chacune des fonctions vous avez la possibilité de voter en positif ou en négatif selon si vous trouvez cette fonction utile ou non. S’il y a suffisamment de vote on pourrait imaginer plein de choses, comme des quizz et des best-of, donc à vos votes :p

Ce service n’a pas pour but de concurrencer l’api officielle, la documentation et les commentaires doivent rester là bas! Ceci est juste une petite contribution de ma part pour l’écosystème Drupal. N’étant pas graphiste j’ai fait de mon mieux :) néanmoins si une âme charitable pouvait me donner un coup de main sur la mise en forme et l’harmonisation du contenu ça ne serait pas de refu.

Que vous trouviez cette idée utile ou non, n’hésitez pas à me contacter pour me faire part de vos avis, de vos remarques et de comment améliorer ce site web.

Je profite aussi de ce billet pour remercier Opi pour le coup de main sur les media queries !

Cet article DrupalEveryDay un petit service pour apprendre un peu plus chaque jour est apparu en premier sur Julien Dubreuil.

Par JulienD
julien dubreuil

Drupal et les tâches planifiées

Pour exécuter des tâches récurrentes et automatisées, il existe un utilitaire commun à toutes les distributions Unix nommé Cron. Cet outil est vraiment pratique puisqu’il permet l’exécution d’un script à un moment précis. Vous pouvez par exemple lancer un script toutes les 5 minutes ou encore tous les lundi à 21h, les possibilités sont immenses.

Pour bien comprendre comment cela fonctionne je vous invite à lire la doc disponible sur wikipedia

Exécuter la cron de Drupal 7

Pour les versions antérieurs à Drupal 7 il était simple de l’exécuter, il suffisait simplement d’accéder à l’url exemple.fr/cron.php pour lancer le déclenchement. Depuis Drupal 7 il est nécessaire d’ajouter un paramètre supplémentaire à l’adresse, à savoir « cron_key ». Cette option n’est autre qu’un token unique d’authentification qui permet de ne restreindre le déclenchement du service Cron qu’à ceux qui possède cette clé.

Si comme moi vous avez cherché où pouvait bien se trouver cette clé, sachez que pour la récupérer il suffit de se rendre sur le tableau de bord d’administration du site à l’adresse “admin/reports/status”. Vous trouverez une ligne, dans le tableau de votre site, dédiée au Cron, vous indiquant la dernière date à laquelle le service a été exécuté ainsi que l’url pour l’exécuter et c’est cette url que vous devez récupérer.

Vous pouvez déclencher le Cron directement depuis votre navigateur en collant cette adresse ou via un script en accédant à cette adresse grâce à la commande wget.

0 2 * * * wget -O - -q -t 1 http://exemple.com/cron.php?cron_key=obwzqaAADCi-POSvSnVX3LayhESdCy7Dsdw4DQsYr

Exécuter la cron Drupal 7 chez OVH

J’ai découvert il y a peu qu’OVH proposait la possibilité aux hébergements mutualisés d’utiliser le service de Cron du serveur pour déclencher des tâches plannifiées.

Pour configurer celui-ci, rendez-vous dans l’interface d’administration de votre manager OVH et cliquez sur le Planificateur de tâches.

Comme vous pouvez le constater, il faut spécifier le chemin d’un fichier qui contiendra nos scripts d’exécution. Dans mon cas, j’ai créé un fichier à la racine de mon serveur nommé cronscript.php dans lequel j’ai ajouté le code suivant afin de déclencher les tâches plannifiées de Drupal.

system('/usr/bin/wget -O - -q http://www.exemple.comain.com/cron.php?cron_key=rGcinK08iqoZq-XyL2DibY...')

Du coup, dans l’interface de manager OVH, il ne vous reste plus qu’à spécifier le chemin de votre fichier (/www/cronscript.php pour moi) et à définir la périodicité à laquelle il doit être lancé.

Cet article Drupal et les tâches planifiées est apparu en premier sur Julien Dubreuil.

Par Haza
Nicolas Meyer

EntityFieldQuery, prise en main

Il est souvent nécessaire de trouver toutes les entités d'un site selon certaines conditions.
Un non-initié aura surement le réflexe d'aller coder lui-même sa requête SQL, avec tout ce que cela comporte en matière de génocide chatonnesque (j'invente des mots si je veux)

Pour réaliser ce type de demande, Drupal embarque la class EntityFieldQuery (EFQ) qui permet de réaliser ceci de manière très rapide, maintenable et sécurisée.

Exemple, imaginons que l'on utilise DrupalCommerce, que l'on ne connait rien a la structure des tables crées au niveau du SGBD, mais que l'on souhaite obtenir tous les produits correspondant a une liste de SKU donnée, cela donnerait à peu près :

{syntaxhighlighter brush: php}
$sku = array('001', '002', '003', '004', '005');
$query = new EntityFieldQuery;
$result = $query->entityCondition('entity_type', 'commerce_product')
->propertyCondition('status', 1)
->propertyCondition('sku', $sku)
->execute();

return $result;
{/syntaxhighlighter}

Voila un exemple de ce nous retournerais ce petit bout de code :
{syntaxhighlighter brush: php}
array(
'commerce_product' => array(
542 => (object) array(
'product_id' => '542',
'type' => 'product',
),
543 => (object) array(
'product_id' => '543',
'type' => 'product',
),
544 => (object) array(
'product_id' => '544',
'type' => 'product',
),
545 => (object) array(
'product_id' => '545',
'type' => 'product',
),
546 => (object) array(
'product_id' => '546',
'type' => 'product',
),
),
)
{/syntaxhighlighter}

Et voila, rien de plus compliqué que ça.

Un autre exemple, avec l'utilisation de node_load_multiple()
{syntaxhighlighter brush: php}
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type','node')
->entityCondition('bundle','event')
->propertyCondition('status',1)
->fieldCondition('field_date','value', array('2011-03-01','2011-03-31'),'BETWEEN')
->fieldOrderBy('field_date','value','ASC')
->execute();

$nodes = entity_load('node', array_keys($entities['node']));
return node_view_multiple($nodes,'teaser');
{/syntaxhighlighter}
Je pense que ca peut même se passer de commentaire tellement c'est clair et lisible.

Pour plus d'information, vous pouvez aller jeter un oeil sur la documentation

Vous n'avez maintenant plus aucune excuse pour ne pas utiliser cette class dans vos modules !

Tags: 
Par JulienD
julien dubreuil

Exporter vos views dans vos modules

Voici un petit billet pour vous montrer qu’il est simple d’exporter vos vues créées depuis l’interface d’administration directement dans vos modules. Pourquoi ? Simplement pour ne pas laisser le code dans la base de données et pour avoir une copie de celui-ci quelque part dans des fichiers bien au chaud.

Avant toute chose, sachez qu’il existe presque toujours une solution afin d’exporter ce que vous avez fait sur le site dans un module, pour cela vous pouvez utiliser l’API d’un module, un autre module dédié à l’export ou encore utiliser le module Features qui permet d’exporter pas mal de choses en quelques clics. Pour si peu, j’avoue que je préfère mettre ça dans un module et puis de toute façon je ne suis pas un grand fan de Features.

Le code ci dessous est basé sur views 3 et Drupal 7 mais il est semblable à ce que l’on pouvait trouver avec la version 6. Pour cet exemple j’ai crée un module Drupal nommé sandbox dans lequel j’ai ajouté un fichier sandbox.info et sandbox.module.

Première étape : Préparation de notre module l’api de Views

La première étape consiste à se faire connaître auprès de views en invoquant son API, dans notre cas la dernière version, la 3.

/**
* Implements hook_views_api().
*/
function sandbox_views_api() {
 return array(
   'api' => 3,
 );
}

Pour une question de lisibilité et pour mieux nous y retrouver dans nos fichiers, créez un nouveau répertoire nommé views à la racine de votre module dans lequel nous placerons par la suite toutes les vues que nous exporterons.

Créez un nouveau fichier portant par exemple le nom de votre vue et l’extension “.inc” (ex : ma_gestion_des_articles.inc), ouvrez le et placez y la balise d’ouverture PHP (

Chaque vue aura ainsi son propre fichier de configuration.

Deuxième étape : Exporter vos vues.

L’exportation d’une vue se fait directement depuis l’interface d’administration de views (admin/structure/views). Cliquez sur le lien “exportez” qui se trouve dans le petit menu d’édition à droite dans la catégorie “opérations” de chaque vue. A ce moment là, votre page se recharge vous mettant face à votre export. Copiez le code, collez le dans le fichier que nous avons crée à l’étape précédente puis sauvegardez le.

Voila, vous avez exporté une copie de sauvegarde de votre vue mais pour le moment Views ne sait pas encore qu’elle existe.

Troisième étape : Indiquer à Views où trouver les fichiers d’export de nos vues.

Dans un nouveau fichier sandbox.views_default.inc à la racine de notre module nous allons créer un petit bout de code qui va nous permettre de scanner automatiquement notre repertoire afin d’indiquer à Views où sont stockés nos fichiers d’export.

/**
* Implements hook_views_default_views().
*/
function sandbox_views_default_views() {
 static $views;

 if (isset($views)) {
   return $views;
 }

 // Remplacer le nom de mon module “sandbox” par le nom de votre module.
 $files = file_scan_directory(drupal_get_path('module', 'sandbox') . '/views', '/\.inc$/');
 foreach ($files as $filepath => $file) {
   include $filepath;
   if (isset($view)) {
     $views[$view->name] = $view;
   }
 }
 return $views;
}

A partir de maintenant, Views est capable de venir lire dans ce répertoire et de charger les vues sur votre site. Vous pouvez ainsi stocker une copie de chacune de vos vues, ce qui vous sera pratique si vous voulez installer votre module sur plusieurs sites.

La mise à jour d’une vue ?

Une vue ça vit et, même si vous l’avez exportée dans un module, vous pouvez encore effectuer des modifications sur celle-ci depuis l’interface d’administration des views, elle passera alors dans un état “surchargée”. Notez que si vous la modifiez, elle ne sera plus identique à celle que possède votre module, n’oubliez donc pas de l’exporter à nouveau dans votre module. Néanmoins pour views, la vue à utiliser est toujours la copie qu’il a créée lorsque vous avez sauvegardé vos modifications. Pour revenir à la version qui se trouve dans votre module, vous devez cliquer sur le lien “revert view”.

Cet article Exporter vos views dans vos modules est apparu en premier sur Julien Dubreuil.

Par fgm@drupal.org
Frédéric G. Marand

Drupal et le NoSQL - Drupal 8 WSCCI - DrupalCamp Toulouse

Si vous avez manqué la présentation sur les outils NoSQL dans Drupal à l'occasion de Drupagora et si vous trouvez que les slides sans les commentaires sont un peu arides, n'hésitez pas à faire le déplacement jusqu'à Toulouse pour DrupalCamp Toulouse ce weekend, où elle sera proposée une deuxième fois.

Inscrivez-vous sur http://toulouse2011.drupalcamp.fr/ et rejoignez-nous pour les talks du samedi et/ou les ateliers du dimanche: s'il y a suffisamment d'intéressés, nous tenterons de démarrer des participations sur l'initiative WSCCI de Drupal 8.

en lire plus

Par JulienD
julien dubreuil

Comment créer et appliquer des styles d’images avec Drupal 7 via le code

Cet article fait suite au précédent post : « Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI » ou je vous détaillais comment, via l’interface d’administration, créer un style d’image. Aujourd’hui le sujet reste le même, mais la création sera faite par la programmation.

Si comme moi, vous êtes confrontés à maintenir à jour des sites Drupal, vous avez déjà dû vous poser tout un tas de questions sur la pérennisation des configurations et de ce fait, vous vous êtes résignés à faire vos modifications directement depuis l’interface d’administration. Du coup, pour chaque chose simple qu’il est possible de faire via le back-office de Drupal, il faut trouver comment le faire en code.

Ainsi, sur la même base que l’article précédent, voici comment créer et appliquer un style d’image par la programmation.

Créer un style d’image via le code

La solution la plus simple consiste à implémenter le hook_image_default_styles() fourni par le module image, qui permet de définir un ou plusieurs style(s) d’images à Drupal dans votre fichier .module.

function sandbox_image_default_styles() {
  // La variable $style est un tableau et chaque composant sera un nouveau style.
  $styles = array();
  // La clé du tableau sera le nom machine de votre style. Pour qu’il  n’y ait pas de soucis contentez-vous de caractères alphanumériques,  d’underscores et de tirets.
  $styles['image_style_example'] = array();
  // Pour chaque style pour pouvez ajouter plusieurs effets
  $styles['image_style_example']['effects'] = array(
  // Premier effet à appliquer à l’image
    array(
      'name' => 'image_rotate',
      'data' => array(
      'degrees' => 2,
      'random' => 0,
      'bgcolor' => '#CECECE',
      ),
     'weight' => 0,
    ),
    // Deuxième effet
    array(
      'name' => 'image_scale',
      'data' => array(
      'width' => 200,
      'height' => 200,
      'upscale' => 1,
    ),
    'weight' => 1,
    ),
  );
  return $styles;
}

On ne peut plus simple non ? Vous trouverez toutes les informations concernant les effets de base disponibles dans le fichier image.effects.inc du module image.

Voici d’autres fonctions utiles si vous souhaitez intervenir sur les différents styles d’images :

- image_styles : pour récupérer tous les styles d’images.
- image_style_load : pour charger et obtenir les informations d’un style.
- image_style_save : pour sauvegarder un style (après une mise à jour par exemple).
- image_style_delete : pour supprimer un style

Si toutefois vous n’avez pas trouvé votre bonheur dans ces fonctions, voici toutes les fonctions et méthodes implémentées par le module images

Appliquer un style d’image

Pour appliquez un style d’image à une image il suffit simplement d’utiliser la fonction de thème : theme_image_style($variables).
$variables est un tableau composé de différents éléments :
- style_name: le nom du style que vous voulez appliquer
- path: Le chemin de l’image relatif au système de fichier de Drupal. (ex : public://mon-image.jpg)
- alt: un text alternatif au cas où l’image ne pourrait pas être affichée.
- title: Le titre de votre image. Celui-ci sera affiché lorsque l’image sera survolée
- attributes: un tableau associatif bien connu des fonctions de thème permettant de passer des attributs à la baslise img, tel que des class css…

Notez que votre image doit se trouver sur votre site, car cela ne fonctionne pas avec une image externe.

// Récupération de l’adresse de l’image.

$path = "images/funny_cat.jpg"; // Qui à pour adresse sites/default/files/images/funny_cat.jpg
// Transformation de celle-ci.
$uri = (file_build_uri($path));
// Génération de notre image.
$image = theme('image_style', array( 'path' =>  $uri, 'style_name' => 'image_style_example'));

Et voila vous venez de créer et appliquer un style via la programmation !

Crédits Photo

Cet article Comment créer et appliquer des styles d’images avec Drupal 7 via le code est apparu en premier sur Julien Dubreuil.

Par badgones

Form API Drupal : supprimer un éditeur WYSIWYG

Si vous voulez supprimer un éditeur Wysiwyg d'un textarea de vote formulaire, par exemple pour remplir des données dans une interface administrateur, il suffit de rajouter la ligne suivante :

<span style="color: rgb(0, 0, 0);"><strong><span style="color: #DD0000">'#wysiwyg' </span><span style="color: #007700">=&gt; </span><span style="color: rgb(0, 0, 187);">false</span></strong></span>

Exemple :

<span style="color: #000000"><span style="color: #0000BB">$form</span><span style="color: #007700">[</span><span style="color: #DD0000">'textarea_field'</span><span style="color: #007700">] = array(<br />
&nbsp;&nbsp;&nbsp; </span><span style="color: #DD0000">'#type' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'textarea'</span><span style="color: #007700">,</span></span>
Par JulienD
julien dubreuil

Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI

Depuis Drupal 7 la gestion des images et des styles d’images est native, ainsi donc plus besoin d’installer le module imagecache pour retailler, pivoter ou encore redimensionner vos photos.
Une fois créée, vous pourrez appliquer vos styles sur n’importe quelle photo, qu’elle soit affichée dans le contenu d’un node ou encore dans le rendue d’une vue. La manip’ est vraiment simple et permet de décliner une photo en une quantité indéfinie de possibilité.

Voici donc un petit guide pour vous montrer comment ajouter de nouveaux styles d’images via l’interface de Drupal et comment vous en servir.

Créer un style d’image via l’interface d’administration

Première étape, rendez-vous sur la page d’administration des styles d’images Administration » Configuration » Media et cliquez sur Image styles. Cliquez sur le lien au dessus des trois styles d’images par défaut nommé Add style, et insérez un titre à votre style d’image. Petit conseil, soyez explicite sur les noms, car plus vous en aurez, plus cela deviendra difficile de vous y retrouver.


Deuxième étape
, l’ajout d’effets aux images et pour cela vous avez à votre disposition 6 choix :
- Crop : découpe l’image selon une certaine dimension.
- Desaturate : désature l’image.
- Resize : retaille l’image.
- Rotate : retourner l’image en fonction d’un angle.
- Scale : retaille l’image en gardant les proportions.
- Scale and crop : retaille et découpe l’image.

Choisissez l’effet désiré, entrez les dimensions voulus et sauvegardez.

Troisième étape, la visualisation des résultats. Une fois votre effet validé, vous vous retrouvez sur la page de votre nouveau style d’image. En haut de celle-ci se trouve deux images afin de voir le résultat de votre effet. A gauche l’image original et à droite l’image transformée.

Derniere étape, cliquez sur Update style pour valider les modifications effectuées et pour sauvegarder votre nouveau style que vous retrouvez pour mettre en forme chaque champ image

Appliquer un style d’image

Dans le cas d’un contenu, rendez-vous la page de gestion de l’affichage des champs : Administration » Structure » Content types et cliquez sur Manage display, pour le type de contenu de votre choix. Cliquez ensuite sur la petite icône en forme d’engrenage qui devrait se trouver à droite sur la ligne de votre champ image.

Sélectionnez le style de votre choix, cliquez sur le bouton update et votre style sera maintenant appliqué à ce champ. Pour visualiser les résultat rendez-vous sur la page de votre contenu et voila.

Cet article Comment créer et appliquer des styles d’images avec Drupal 7 via l’UI est apparu en premier sur Julien Dubreuil.

Par badgones

Nice menu : ouverture à droite ou à gauche en fonction de la largeur du navigateur

Vous avez besoin d'un menu nice menu qui s'ouvre à droite ou à gauche en fonction de sa position dans la page, et de la largeur du navigateur?
Voilà la solution :

Vous ajoutez votre menu, avec ouveture vers la gauche. Puis, vous rajouter le Javascript suivant dans votre thème (ou alors, vous incluez le fichier JS mis en attachement) :

Attention : #nice-menu-1 est à changer suivant le menu que vous voulez modifier !

$("#nice-menu-1 .menuparent").bind('mouseover',function(){
    if (($(this).offset().left+$(this).outerWidth()+$(this).children("ul:first").outerWidth()) > $("body").outerWidth()) {
        $(this).children("ul:first").css({left:'-'+$(this).outerWidth()+'px'});
    }
    else {

Par j0nathan

Joignez-vous à Koumbit pour le prochain Drupal Camp de Montréal

Fidèle à son rôle significatif au sein de la communauté Drupal, plus particulièrement dans la région de Montréal, Koumbit est fier de contribuer, pour une quatrième année consécutive, à l'organisation et à la commandite du DrupalCamp de Montréal. Le prochain camp se déroulera dans quelques jours seulement, du 16 au 18 septembre, et il sera précédé, du 14 au 16 septembre, d'un sprint de code de trois jours sur le multilinguisme dans Drupal 8.

Koumbit agit par conviction.

Koumbit croit que le logiciel libre est un outil d'affranchissement personnel et collectif. Le libre nous permet d'offrir des solutions éthiques et précieuses pour nos clients en créant des opportunités économiques durables pour la création de services et d'emplois. D'une certaine manière, le logiciel libre nous permet de développer et de nous approprier les «moyens de production de l'ère de l'information».

Koumbit croit en Drupal. Dès le début, nous avons reconnu son potentiel et nous lui avons fait une place de choix au coeur de nos activités. Après sept ans, ce choix nous apparait toujours pertinent.

Koumbit croit à l'intiative communautaire. Ce que accomplissons ensemble est bien plus intéressant que lorsque nous sommes isolés. Une bande de pigistes se sont réunis un jour autour de leur conviction commune que l'action collective était la voie de l'avenir. Ils ont créé quelque chose de plus grand que la somme de ses parties. Ils l'ont appelé «Koumbit». Depuis, ce collectif travaille à faire mieux qu'une compagnie qui réussit dans un marché limité. Nous, ce collectif, veillons à contribuer au progrès social.

Koumbit croit en vous. Que vous vouliez apprendre, enseigner, programmer ou inspirer, joignez-vous à nous pour ce qui promet être le meilleur Drupal Camp de Montréal jusqu'ici.

Par JulienD
julien dubreuil

Les hooks : connaître Drupal pour créer vos modules

Ce qu’il y a de bien avec Drupal c’est que l’on a l’impression de jouer aux lego, un module par ci, un module par là et le tout, imbriqué depuis l’interface d’administration de celui-ci. Mais comme moi, un jour vous avez voulu créer vous même vos structures et non plus seulement réaliser ce qu’il était possible de faire avec une simple boite de lego. Bref, vous avez déjà eu besoin de développer votre propre module afin de tordre le système et le faire coller à votre cahier des charges.

Cette nécessité de faire son propre module arrive bien plus vite qu’on ne le croit et c’est pour ça que je me suis dit qu’une petite liste des principales choses à connaître pour jouer avec Drupal serait utile. Du coup, j’ai essayé de me replacer quelques mois en arrière, à mes débuts avec Drupal et son api et je vous ai listé les principaux hooks que vous pourrez être amenés à utiliser au départ.

Concept et implémentation d’un hook

Avant d’aller plus loin, il y a une notion à comprendre pour développer un module avec Drupal et j’espère pour vous que vous avez déjà entendu ce mot : ‘hook’, sinon il va falloir réviser les bases de Drupal :p
Pour vous donner une bonne définition de ce qu’est un hook, rien de mieux que la documentation officielle.

Bon grossièrement, le système de hooks permet d’interagir avec le corps de Drupal et les modules installés, c’est tellement surpuissant que le module Chuck Norris utilise le concept de hook.

Un hook c’est quoi ? Un hook ce n’est ni plus ni moins qu’une fonction PHP nommée foo_bar(), ou “foo” désigne le nom de votre module (le nom du module serait donc foo.module) et “bar” le nom d’un hook spécifique. Chaque hook possède un nombre défini de paramètres et un résultat spécifique. Bref rien de compliqué si vous avez déjà programmé.

Oui mais concrètement comment ça marche ? Prenez l’exemple de la mise à jour d’un contenu. Vous faites des modifications et vous sauvegardez, Drupal va alors déclencher son processus de sauvegarde et afin que les modules puissent intervenir sur les données en cours, il va déterminer quel modules ont implémenté ce hook afin de leur donner la main.
Ce qu’il faut comprendre c’est que lorsqu’un hook est déclenché, Drupal parcourt tous les modules afin de connaître les modules voulant prendre la parole.

Si toutefois ce n’est toujours pas clair, voici la définition de wikipédia, mais je suis sûr qu’elle vous sera inutile :)

Les hooks à connaitre :

Vous l’aurez compris, pour maîtriser Drupal et en faire ce que vous voulez, il va vous falloir connaître les différents hooks à votre disposition. J’ai essayé ici de vous créer une petite liste de hooks qui vont vous permettre de débuter facilement, mais dîtes vous bien qu’il en existe beaucoup plus, je vous laisse le plaisir de les découvrir par vous même.

Note : Il y a eu plein d’évolutions entre D6 et D7 et l’une d’entre elle a consisté à diviser les hooks intervenant lors d’actions spécifiques. Par exemple le hook_nodeapi (que l’on verra par la suite) avait en D6 un deuxième paramètre nommé $op qui pouvait prendre différentes valeurs comme : load, insert, delete, view… Ainsi lorsque vous vouliez intervenir lors du chargement ou de la suppression d’un node, vous n’aviez qu’à implémenter ce hook et vérifier la valeur de la variable $op. Maintenant le hook_nodeapi n’existe plus, il a été remplacé par autant de hooks qu’il y avait d’actions. Grâce à cela, on a gagné en lisibilité du code mais on a augmenté le nombre de hooks disponibles. Ainsi plusieurs hooks que vous connaissiez en D6 ont été revus.

Gestion des blocs

Si vous utilisez Drupal, vous avez sûrement déjà dû créer un bloc depuis le back office. Comme souvent lorsqu’il est possible de faire quelque chose depuis l’interface d’administration, il est possible de le faire en code. Ainsi grâce à quelques hooks, il est facile de créer, gérer et de configurer les blocs.

hook_block_info : N’importe quel module peut ajouter des blocs, mais encore faut-il que drupal le sache, grâce à ce hook vous allez pouvoir déclarer l’ajout d’un ou de plusieurs blocs.

hook_block_view : Une fois que vous avez déclaré votre bloc il vous faut créer son contenu avec la fonction hook_block_view.

hook_block_configure : Pour chaque bloc vous pouvez ajouter un formulaire de configuration plus complet que celui fourni par défaut et pour cela il vous faut utiliser ce hook.

hook_block_save : Si vous avez mis en place le hook ci-dessus vous devez aussi utiliser le hook_bloc_save afin de sauvegarder les informations renseignées dans votre formulaire.

Liste des hooks liés aux blocs

Prenez vos contenus en main

Drupal étant un outil de gestion de contenus, vous vous doutez bien que c’est sur cette partie que l’on peut faire le plus de modifications :) Avec cette petite liste de hooks, vous trouverez forcément le bon moment pour interagir avec vos contenus.

hook_node_load – ce hook est exécuté lorsqu’un node est chargé depuis la base de données, c’est donc l’étape idéale si vous avez des données à modifier lors du chargement.

hook_node_view – à chaque fois que vous affichez un node sur votre site c’est le hook_view qui est invoqué. En gros c’est le hook que vous allez utiliser pour modifier le rendu à vos visiteurs.

hook_node_presave – c’est un hook utile puisqu’il permet d’intervenir sur les données juste avant la sauvegarde en base. Ce hook est appelé lors de l’insertion comme lors de la mise à jour.

hook_node_insert – le hook_node_insert est invoqué lors de la création du contenu en base et uniquement lors de la création

hook_node_update – à l’inverse celui-ci n’est invoqué que lors de la mise à jour du contenu.

hook_node_prepare – pour créer un nouveau contenu sur votre site vous devez utiliser le formulaire de création de contenus et justement le hook_node_prepare vous permet d’avoir la main sur celui-ci avant qu’il ne soit affiché à vos utilisateurs. Parfait si vous voulez remplir ou présélectionner des valeurs.

hook_node_delete : avec un nom si explicite, vous l’aurez compris qu’il s’agit du hook qui permet d’intervenir lorsqu’un contenu est supprimé.

Liste des hooks liés aux nodes

hook_permission : Dans la partie contenu on peut aussi y ajouter le hook_permission (connu sous le nom de hook_perm en D6) qui permet de créer de nouveaux droits d’accès que vous pourrez utiliser dans vos modules afin de restreindre ou non l’accès à vos fonctionnalités.

Les formulaires

hook_form_alter et hook_form_FORM_ID_alter : deux hooks qui ont leur importance puisque grâce à eux vous allez pouvoir modifier n’importe quel formulaire sur le site afin d’y ajouter des champs, ajouter des fonctions de validation ou encore altérer les données saisies.
Le hook_form_alter est appelé pour n’importe quel formulaire sur votre site, c’est à vous de savoir si vous êtes sur le formulaire souhaité. Si vous voulez modifier un formulaire en particulier, utilisez plutôt le deuxième hook qui ne sera invoqué que pour le FORM_ID précisé. Vous pouvez par exemple utiliser le hook_form_alter pour connaître la valeur de $form_id puis utiliser le hook_form_FORM_ID_alter.

L’administration de vos modules

Il y a trois hooks à connaître pour l’administration des modules, le hook_install et hook_uninstall qui vont de paire et le hook_update.

hook_install : ce hook est le premier invoqué lors de l’activation d’un module, c’est pendant cette étape que l’on doit par exemple installer les tables SQL nécessaires au module ainsi que la configuration par défaut de celui-ci.

hook_uninstall : C’est l’inverse du hook_install, celui-ci sert à supprimer tout ce qui touche au module, données en bases, schémas, variables… Notez que ce hook n’est pas exécuté à la désactivation du module mais lors de sa désinstallation.

hook_update_N : Le code d’un module n’est jamais figé et est souvent amené à évoluer. Grâce au hook_update_N vous allez pouvoir intervenir sur votre module afin de mettre à jour sa configuration, les données contenues dans ses tables ou même celles d’un autre module, (au passage, n’oubliez pas de mettre à jour le schéma de la base de données). N désigne le numéro de version à mettre et est découpé en 3 parties. Le premier chiffre correspond à la version de Drupal utilisé, le deuxième à la version de votre module et les deux derniers afin d’identifier les différentes mises à jour. Par exemple, la deuxième update d’un module en version 2.1 sur un Drupal 7 aura pour valeur : hook_update_7202
Pour installer vos mises à jour, il suffit de vous rendre sur la page /update.php ou alors d’utiliser les commandes Drush faites pour ça.

Gestion des urls de votre site

hook_menu : l’un des hooks les plus utilisés, mais bien que son nom évoque la gestion des menus, celui-ci permet en fait de créer de nouvelles urls sur votre site afin de mettre en place de nouvelles pages, de nouveaux formulaires ou n’importe quel service ayant besoin d’une adresse. C’est lors de la mise en place de ce hook que l’on peut utiliser le hook_permission afin de restreindre l’accès à une page en fonction d’un rôle.

hook_menu_alter : permet de modifier les propriétés de n’importe quelle url définie dans un hook_menu. Par exemple vous pouvez modifier, le titre d’une page, les droits d’accès, voir même surcharger la page callback.

Drupal et les hooks systems

hook_cron : ce hook vous permet d’exécuter des actions périodiques depuis votre Drupal, comme par exemple l’envoi de mail, la mise à jour de fichiers ou encore la génération de backup. Personnellement je préfère utiliser la cron du serveur plutôt que celle de Drupal, mais pour cela il faut avoir accès aux serveurs ce qui n’est pas possible sur un mutualisé.

hook_mail : c’est le hook à implémenter si vous voulez envoyer des emails via Drupal. Celui-ci permet aux modules de préparer des messages qui seront envoyés par la suite avec la fonction drupal_mail.

hook_mail_alter : permet de modifier les messages envoyés par les autres modules

Thème

hook_theme : recense toutes les fonctions de thème disponible sur votre site, ainsi lorsqu’un module doit implémenter une nouvelle fonction, il suffit de la déclarer au moyen de ce hook. Une fois connue par Drupal, celle-ci devient disponible à tout moment et peut être utilisée grâce à la fonction theme().


J’espère que cette liste et ces quelques explications sur le système de hook vous permettront de mieux comprendre et utiliser Drupal, il existe beaucoup plus de hook que ce qu’il y a dans cet article mais pour les découvrir il vous faudra explorer Drupal par vous même. En attendant vous trouverez ici la liste de tous les hooks que vous pourrez rencontrer avec Drupal 7

Cet article Les hooks : connaître Drupal pour créer vos modules est apparu en premier sur Julien Dubreuil.

Par JulienD
julien dubreuil

Drupalcon London 2011, retour sur l’événement.

Ca y est l’événement Drupal européen de l’année est passé et il faudra maintenant attendre un an pour retrouver autant de Drupaleur réunis en un seul et même endroit en Europe.
Cette conférence à Londres m’a permis de découvrir cette charmante capitale et au passage, on a eu le droit à une visite en règle. Nous avons eu le plaisir de goûter à la pluie londonienne, enfin à ce stade là, ce n’était plus de la pluie mais des trombes d’eau qui déferlaient du ciel… (je comprends pourquoi les parapluies ne sont pas chers dans les boutiques pour touristes :)

Alors cette conférence ?

Ce qu’il y a de bien pendant une Drupalcon c’est qu’il y en a pour tout le monde, les développeurs, les thémeurs, les sites builders et même pour les chefs de projet, ainsi que pour tous les niveaux. Avec plus de 25 sessions par jour, sans compter les BoFs, difficile de ne pas trouver son bonheur.
Néanmoins j’ai trouvé que certaines sessions n’étaient pas assez avancées, enfin pas autant que je l’esperais. Mon impression est aussi celle de quelques autres développeurs qui comme moi, sont restés sur leur faim pour quelques unes d’entre elles. A côté de cela, les sessions «core» (qui parlent du corps de Drupal, souvent de Drupal8 et où l’on trouve toutes les rock-stars) étaient intéressantes.

Je ne sais pas si vous avez suivi la keynote d’ouverture, mais celle-ci ne m’a pas emballée. Le message que j’ai capté est que maintenant, Drupal est un produit qu’il faut vendre et qu’il va falloir faire du marketing pour le rendre encore plus populaire. C’est bien me direz-vous, que ce soit pour Drupal ou pour son écosystème, mais le problème est qu’actuellement, on (les entreprises qui font du Drupal) n’arrive déjà pas à répondre à la demande et que l’on (toujours les drupal factories) n’arrive pas à embaucher des personnes qualifiées alors pourquoi faire du marketing au risque de refuser des projets. Quelque chose m’échappe et ça me chagrine. Lors de cette keynote on a aussi eu le droit à plein de slides avec des chiffres comme s’il y avait quelque chose à justifier… D’ailleurs je n’ai pas compris la slide sur le fait qu’il a fallut 12 mois pour avoir 100.000 sites en Drupal 6 alors qu’il n’en a fallut que 6 pour atteindre le même chiffre sur Drupal 7. Sur quoi sont basés ces stats ? Le nombre de sites en ligne ? Le nombre de téléchargement sur drupal.org ? Bref, c’était pas la keynote la plus emballante de l’histoire.

Bon n’allez pas croire, après la lecture de ce précédent paragraphe que ça n’en valait pas le coup, c’était super chouette et il y avait quelques sessions qui valaient le déplacement:

N’ayant pu assister qu’à une seule session par créneau horaire (non je ne fais pas encore dans la projection astrale), il faut que je regarde les sessions que j’ai loupées. N’hésitez donc pas à compléter la liste ci-dessus.

Mention spéciale à l’équipe organisatrice qui, dès le lendemain des sessions, mettait en ligne les vidéos des conférences. Bravo pour l’efficacité!
Mais comme tout Drupaleur qui va à une Drupalcon, on n’y va pas uniquement pour les sessions, on y va aussi pour rencontrer des personnes de qualité qui ont des étoiles qui brillent dans les yeux quand on discute de technos… Bref, ça a été l’occasion de faire de chouettes rencontres et de revoir des gens que l’on n’avait pas vu depuis un moment.


Nous étions quand plus de 1700 participants, dont 80 Français. Pas mal, non ? On s’aperçoit que l’on était bien à une conférence info lorsqu’on voit le stats de bande passante utilisée, de mails échangés et de messages twitter envoyés. Affolants ces geeks… Avec un si grand nombre de participants, je comprends qu’il était difficile de faire la Drupalcon dans Londres. Heureusement que les transports Londoniens sont très efficaces, cela nous a permis de pas mettre trop de temps pour rentrer de Croydon au centre de Londres. Par contre c’est dommage qu’il y ait eu autant de distance entre les sessions, les bofs et les conférences core, mais bon je pense qu’ils n’ont pas pu faire autrement avec autant de participants.

La Drupalcon est un excellent booster, je rentre chez moi avec un bon souvenir, plein de motivation et l’intention de tester de nouvelles choses ! Merci à Ideia de m’avoir donné la chance d’aller à cette Drupalcon et merci aux organisateurs pour avoir organisé cette conférence annuelle.

Et vous qui étiez là-bas ou à distance, qu’avez vous pensé de cette conférence ?

La prochaine c’est où et c’est pour quand ?

Pendant que j’y suis et pour une fois qu’il ne s’agit pas d’un post technique, j’en profite pour rappeler que la prochaine Drupalcon Européenne aura lieu à Munich du 20 au 23 août 2012 et promet aux vues des organisateurs d’être encore meilleure que celle-ci. Bon courage à l’équipe organisatrice!

Crédits Photos – macetaria, wwphotos, pixelmord, batigolix

Cet article Drupalcon London 2011, retour sur l’événement. est apparu en premier sur Julien Dubreuil.

Par badgones

Putty, SSH, OpenSSH, Windows et Linux

Voici un super tuto pour créer ses clés SSH, et pouvoir les utiliser à la fois sur Linux et Windows.

Using Putty on Windows to login Linux securely via OpenSSH

  • Submitted by: Man-wai CHANG
  • Update by: Man-wai CHANG
  • Date Submitted: 31 May 2006
  • Document Version: 1.0
  • Last Updated: 02/02/2008 18:46:43

This is a guide about using Putty on Windows with OpenSSH on Linux. You would learn about how to:

Par badgones

Poids module Drupal : Ordonner les modules Drupal pour choisir l'ordre de chargement

Afin d'ordonner les modules Drupal pour choisir l'ordre de chargement de ceux-ci, il suffit d'implémenter le hook install du module et de changer le poids associé.

Pour être plus clair, il faut créer un fichier nom_module.install ayant pour contenu ceci :

function NOM_MODULE_install() {
  db_query("UPDATE {system} SET weight = '-1' WHERE name = 'NOM_MODULE' AND type = 'module'");
}

Par badgones

Drupal module Book et profondeur du sommaire

Quand on écrit un "Livre" via le module book de Drupal, on a une génération automatique du menu (sommaire), ou plûtot des enfants d'une page.
Or, on ne peut pas modifier la profondeur de cet affichage, qui affiche donc seulement les enfants directs de la page en cours, mais pas ses "petits-fils" (ou alors je suis preneur de la solution).

Voilà donc la solution pour modifier la profondeur du sommaire :
1- télécharger le module booktree (dispo en attachement aussi)
2- l'installer et l'activer
3- dans le fichier template.php de votre thème, ajouter le hook template_preprocess_book_navigation(&$variables), avec comme contenu :

function THEME_preprocess_book_navigation(&$variables) {
  $book_link = $variables['book_link'];

Par badgones

Drupal et groupe de champs multiples CCK, explication et correction d'erreur Wysiwyg - TinyMCE

Pour créer un groupe de champs multiple sous Drupal 6, la fonction n'est pas disponible de base avec le module CCK 2.
En fait, celle-ci a seulement été ajoutée dans CCK 3, qui est en béta, et non stable à l'heure actuelle. Mais on peut simplement l'ajouter dans CCK 2, en téléchargeant le module CCK3, en le décompressant, et en ajoutant le contenu du répertoire cck/modules/content_multigroup à CCK2, au même endroit.
Il faut en plus copier le répertoire cck/js du module CCK3 dans le répertoire du module CCK2, et ça fonctionne parfaitement.

Maintenant, vous avez un nouveau type de champs CCK "Multigroup", à utiliser comme un "Group", avec le même principe d'arborescence.

Par pounard

How to fetch back Drupal 7 master password (uid 1)

Sometimes you lose your master password. Won't describe here how you managed to do it, since distraction that lead to that kind of errors is a burden to carry for all of us.

Drupal 6 was quite easy to recover, because its passwords were encrypted using the well known MD5 digest algorithm, while Drupal 7 uses SHA512 and a custom seed depending on the site. This statement makes us unable to use well known functions for that.

In order to recover your password, there are two easy steps.

Par badgones

Comment modifier le formulaire de recherche Drupal (Theme Drupal Search form)

Voila comment modifier le formulaire de recherche Drupal pour ajouter les CSS et le texte que l'on souhaite :

/**
* Override or insert PHPTemplate variables into the search_theme_form template.
*
* @param $vars
*   A sequential array of variables to pass to the theme template.
* @param $hook
*   The name of the theme function being called (not used in this case.)
*/
 
function montheme_preprocess_search_theme_form(&$vars, $hook) {
 
  // Modify elements of the search form
  $vars['form']['search_theme_form']['#title'] = t('Recherche sur mon site');
 
  // Set a default value for the search box
  $vars['form']['search_theme_form']['#value'] = t('Entrez ici votre recherche');
 
  // Add a custom class to the search box

Par badgones

Solution pour l'erreur Captcha - Drupal : The answer you entered for the CAPTCHA was not correct.

Vous avez un problème avec le module Captcha, qui vous refuse à chaque fois les soumissions de vos modules custom?
Vous avez un message du genre "La réponse saisie pour le CAPTCHA est incorrecte.", ou "The answer you entered for the CAPTCHA was not correct." ?
Voici peut-être une solution qui règle le problème (en tout cas, qui a marché pour moi après de nombreuses heures de recherche) :

Il a "suffit" que je rajoute dans mon formulaire la valeur "#tree"=>0, en code cela donne :

$form['captcha'] = array(
  '#type' => 'captcha',
     '#weight' => 40,
     '#tree' =>0,  
Par Haza
Nicolas Meyer

La premiere "initiative" de Drupal 8

Apres la sortie de Drupal 7, tout se met en place pour preparer la version 8.

Un des gros changements dans le cycle de développement qui va être mis en place pour Drupal 8 concerne l'apparition des "initiatives". On ne connait pas encore toutes les initiatives qui vont être mises en place, mais celles-ci concerneront sans doute les gros axes de Drupal 8 que Dries a évoqué lors de sa keynote.

La première initiative a été officiellement dévoilée le 28 mars dernier (oui, je sais, j'ai du retard) et concerne la gestion de la configuration de Drupal ("Configuration management" en anglais).
Le terme de "configuration management" peut sembler un peu abstrait pour beaucoup. Dans les faits, il s'agirait, dans l'idéal, d'une sorte de "Settings API" qui permetterait de pouvoir stocker toute la configuration de Drupal de manière plus "propre" qu'actuellement. En deux mots, avoir une sorte de fichier de configuration global.

Depuis features, on se raproche peu-à-peu de ce St Graal Drupalien, néanmoins, features ne couvre pas l'ensemble de nos besoins. Bien sûr, il est désormais facile d'exporter des views, des panels ... et même des variables si on passe via Strongarm. Mais il ne faut pas oublier que ceci n'est possible uniquement si l'auteur du module a pensé à integrer son code avec features.

Le vrai but du "Configuration management" est de proposer un mécanisme permettant de maintenir l'intégrité et la tracabilitée des changements de configuration dans la vie du site. Il serait par exemple possible de :

  • "Locker" la configuration d'un site en prod, afin qu'aucun changement ne puisse être effectuté.
  • Pouvoir "logguer" les changements de configuration entre le temps t et t+1, rendant alors possible le retour arrière si un soucis est detecté, ou bien encore rendant possible le fait de pouvoir "rejouer" ces changemements sur une autre instance du site

Ces changements ouvriront également la voie un meilleur contrôle du "content staging". Pouvoir fusionner facilement des changements effectués par les utilisateurs du site (les commentaires, les votes, ...) et la configuration d'une instance de dev par exemple, pour y apporter les mises à jour souhaitées, puis ensuite pouvoir reverser tout ceci vers la prod sans soucis majeur.

Comme Dries l'a evoqué lors de sa Keynote, des "Initiative Owner" sont nommé afin de suivre les avancements des ces projets.

Greg Dunlap
Greg Dunlap

C'est Greg Dunlap (heyrocker sur drupal.org) qui sera responsable de cette initiative.
Greg est déjà connu pour avoir énormément contribuer au module Deployment et a déjà beaucoup réfléchi à toutes les problématiques de staging et de déploiement de code.

Espérons qu'il saura réaliser ce que nous attendons tous.

David Strauss
David Strauss

Il sera épaulé par David Strauss, qui sera en charge du suivi de l'architecture et des API à mettre en place.

En attendant, n'oubliez pas de suivre les avancements et reflexions autour de ce projet sur le groups, http://groups.drupal.org/build-systems-change-management

Par badgones

Site Drupal lent, comment l'optimiser ? Un début de réponse

Vous avez un site Drupal qui est lent? Vous voulez l'optimiser? Voici un début de réponses :

Modules à installer :

  • css_gzip (dernière version en document attaché)
  • javascript_aggregator (dernière version en document attaché)

Cache Drupal et config des 2 modules :

  • allez sur la page /admin/settings/performance, et activez le cache Drupal en mode "normal"
  • minimum cache lifetime => ce que vous voulez, si vous faites pas souvent de mise à jour de page, mettez 1 jour
  • page compression => "activé"
  • block cache => activé
  • optimize css => activé, et cochez gzip css
  • optimize et minified javascript => activé, cochez gzip javascript
  • sauvegardez

Pages