Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Planète

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

Nouveau cours Drupal: Multimédia Drupal 7 avec Scald

OSInet lance un nouveau cours Drupal: comment réaliser des sites multimédia avec Scald.Scald est une autre approche sur la gestion des média dans Drupal 7: audio, vidéo, image ou autre, une plateforme conçue pour faciliter la mise en oeuvre des fonctionnalités "sociales" qui sont si essentielles et uniques aux communautés Web. En tandem avec le module DnD, Scald propose un nouveau mode d'édition, plus simple, aux utilisateurs devant rédiger et mettre en page des articles complexes et riches en contenu. Scald propose un mécanisme unifié pour l'intégration et la manipulation de divers types de media.

en lire plus

Par juliendubreuil
julien dubreuil
Drupal since 2009

Traiter de grandes quantités de données avec la batch api de Drupal et Drush

Lorsque l’on est confronté aux joies de la production et de la maintenance de sites Internet il arrive souvent que l’on doive effectuer certaines manipulations sur des données existantes, comme l’ajout, la modification ou la suppression d’informations. Ces opérations sont en générale longues et coûteuses en mémoire car les quantités de données à traiter sont importantes et c’est pour cela que l’on utilise des batchs qui permettent de relâcher les processus une fois terminés évitant ainsi la saturation des ressources disponibles.

Quand la quantité de données à manipuler semble faible, le traitement avec un batch n’est pas nécessaire car il prendrait bien plus de temps qu’avec un simple script php. Même s’il est difficile de quantifier quand utiliser un batch ou un simple script, car tout dépend du travail à effectuer, des machines et du contexte, sachez que si vous devez réaliser un traitement lourd, l’utilisation d’un batch vous permettra de ne pas avoir peur que PHP s’arrête, simulant un malaise par manque de mémoire ou de temps.

La réalisation d’un batch avec Drupal c’est chose facile, puisqu’il existe une API pour cela, la Batch Api – http://drupal.org/node/180528 qui permet de créer de simplement des scripts de traitement.Il y a plein d’exemples sur le sujet, regardez le module example – http://drupal.org/project/examples – qui vous explique de A à Z comment coder et exécuter depuis l’interface web un batch.

Dans mon cas, je cherchais à réaliser un batch sans avoir besoin d’être connecté à l’interface d’administration de mon site et c’est naturellement que je me suis tourné vers Drush pour réaliser cette tâche.

Voici donc un petit snipet que vous pourrez réutiliser pour vos batch.

Déclaration de la commande Drush

Pour commencer nous allons créer notre commande drush. Dans un module, créez un fichier portant le nom de votre module avec l’extension drush.inc (dans mon cas sandbox.drush.inc)

function sandbox_drush_command() {
 $items  = array();
 $items['my-import'] = array(
    'callback'      => 'sandbox_setup_batch',
    'description' => dt('Import'),
 );
 return $items;
}

function sandbox_drush_help($section) {
 switch ($section) {
    case 'drush:myimport':
     return dt("Traitement des utilisateurs.");
 }
}

Déclaration du Batch

Une fois notre commande prête il nous faut déclarer notre batch, sandbox_setup_batch().

function sandbox_setup_batch() {

 // Ici nous créons un tableau nommé opérations, qui contiendra toutes les fonctions qui devront être invoquées lors de l'exécution du batch. Il est ainsi possible de réaliser plusieurs traitements différents avec un seul batch.
 $operations = array();
 $operations[] = array('sandbox_batch_process', array());

 // Déclaration des propriétés de notre batch.
 $batch = array(
   // Le tableau d’opérations à effectuer lors du traitement de notre batch.
   'operations' => $operations,
   'title' => t('Import batch'),
   'init_message' => t('Initializing'),
   'error_message' => t('An error occurred'),
   // Fonction qui sera appelée à la fin du batch.
   'finished' => 'sandbox_finished_method'
 );

 // Initialisation du batch.
 batch_set($batch);
 $batch =& batch_get();

 $batch['progressive'] = FALSE;

 // Execution du batch.
 drush_backend_batch_process();
}

Opération de batch à réaliser

A ce stade notre commande Drush est créée et notre batch déclaré, mais pour le moment il ne fait rien car nous n’avons pas encore implémenté la fonction principale, celle que notre batch devra exécuter. Ici, je récupère un par un tous les utilisateurs ayant le statut actif du site.

function sandbox_batch_process(&$context) {

 if (!isset($context['sandbox']['progress'])) {
   $context['sandbox']['progress'] = 0;
   $context['sandbox']['current_user'] = 0;
   // Récupération du nombre d’élément à traiter.
   $context['sandbox']['max'] = db_result(db_query('SELECT COUNT(DISTINCT uid) FROM {users} WHERE status = 1'));
 }

 // Histoire de ne pas avoir de problèmes nous récupérerons les utilisateurs 50 par 50
 $limit = 50;

 $sql = "SELECT uid FROM {users} WHERE status = 1 AND uid > %d ORDER BY uid ASC";
 $result = db_query_range($sql, $context['sandbox']['current_user'], 0, $limit);
 while ($row = db_fetch_array($result)) {

   // C’est ici que doit se faire le traitement de votre batch.
   //...

   // Une fois que nous en avons terminé avec les données en cours il nous suffit de mettre à jour les informations du batch et de passer à la suivante.
   $context['sandbox']['progress']++;
   $context['sandbox']['current_user'] = $account->uid;
 }

 // Tant que l’on n’a pas traité tout le jeu de données on continue à exécuter notre batch.
 if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
   $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
 }
}

function sandbox_finished_method($success, $results, $operations) {
 drush_print('Finished importing!');
}


Et voilà, en quelques lignes nous avons un batch prêt à l’emploi pour traiter nos données. Notez que cette commande drush peut être ajoutée dans un CRON afin d’être exécutée régulièrement.

Cet article Traiter de grandes quantités de données avec la batch api de Drupal et Drush est apparu en premier sur Julien Dubreuil.

Par juliendubreuil
julien dubreuil
Drupal since 2009

Traiter de grandes quantités de données avec la batch api de Drupal et Drush

Traiter de grandes quantités de données avec la batch api de Drupal et Drush

Lorsque l’on est confronté aux joies de la production et de la maintenance de sites Internet il arrive souvent que l’on doive effectuer certaines manipulations sur des données existantes, comme l’ajout, la modification ou la suppression d’informations. Ces opérations sont en générale longues et coûteuses en mémoire car les quantités de données à traiter sont importantes et c’est pour cela que l’on utilise des batchs qui permettent de relâcher les processus une fois terminés évitant ainsi la saturation des ressources disponibles.

Quand la quantité de données à manipuler semble faible, le traitement avec un batch n’est pas nécessaire car il prendrait bien plus de temps qu’avec un simple script php. Même s’il est difficile de quantifier quand utiliser un batch ou un simple script, car tout dépend du travail à effectuer, des machines et du contexte, sachez que si vous devez réaliser un traitement lourd, l’utilisation d’un batch vous permettra de ne pas avoir peur que PHP s’arrête, simulant un malaise par manque de mémoire ou de temps.

La réalisation d’un batch avec Drupal c’est chose facile, puisqu’il existe une API pour cela, la Batch Api – http://drupal.org/node/180528 qui permet de créer de simplement des scripts de traitement.Il y a plein d’exemples sur le sujet, regardez le module example – http://drupal.org/project/examples – qui vous explique de A à Z comment coder et exécuter depuis l’interface web un batch.

Dans mon cas, je cherchais à réaliser un batch sans avoir besoin d’être connecté à l’interface d’administration de mon site et c’est naturellement que je me suis tourné vers Drush pour réaliser cette tâche.

Voici donc un petit snipet que vous pourrez réutiliser pour vos batch.

Déclaration de la commande Drush

Pour commencer nous allons créer notre commande drush. Dans un module, créez un fichier portant le nom de votre module avec l’extension drush.inc (dans mon cas sandbox.drush.inc)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<span class='line'><span class="k">function</span> <span class="nf">sandbox_drush_command</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'> <span class="nv">$items</span>  <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
</span><span class='line'> <span class="nv">$items</span><span class="p">[</span><span class="s1">&#39;my-import&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>    <span class="s1">&#39;callback&#39;</span>      <span class="o">=&gt;</span> <span class="s1">&#39;sandbox_setup_batch&#39;</span><span class="p">,</span>
</span><span class='line'>    <span class="s1">&#39;description&#39;</span> <span class="o">=&gt;</span> <span class="nx">dt</span><span class="p">(</span><span class="s1">&#39;Import&#39;</span><span class="p">),</span>
</span><span class='line'> <span class="p">);</span>
</span><span class='line'> <span class="k">return</span> <span class="nv">$items</span><span class="p">;</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">sandbox_drush_help</span><span class="p">(</span><span class="nv">$section</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'> <span class="k">switch</span> <span class="p">(</span><span class="nv">$section</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="k">case</span> <span class="s1">&#39;drush:myimport&#39;</span><span class="o">:</span>
</span><span class='line'>     <span class="k">return</span> <span class="nx">dt</span><span class="p">(</span><span class="s2">&quot;Traitement des utilisateurs.&quot;</span><span class="p">);</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span>

Déclaration du Batch

Une fois notre commande prête il nous faut déclarer notre batch, sandbox_setup_batch().


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<span class='line'><span class="k">function</span> <span class="nf">sandbox_setup_batch</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Ici nous créons un tableau nommé opérations, qui contiendra toutes les fonctions qui devront être invoquées lors de l&#39;exécution du batch. Il est ainsi possible de réaliser plusieurs traitements différents avec un seul batch.</span>
</span><span class='line'> <span class="nv">$operations</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
</span><span class='line'> <span class="nv">$operations</span><span class="p">[]</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;sandbox_batch_process&#39;</span><span class="p">,</span> <span class="k">array</span><span class="p">());</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Déclaration des propriétés de notre batch.</span>
</span><span class='line'> <span class="nv">$batch</span> <span class="o">=</span> <span class="k">array</span><span class="p">(</span>
</span><span class='line'>   <span class="c1">// Le tableau d’opérations à effectuer lors du traitement de notre batch.</span>
</span><span class='line'>   <span class="s1">&#39;operations&#39;</span> <span class="o">=&gt;</span> <span class="nv">$operations</span><span class="p">,</span>
</span><span class='line'>   <span class="s1">&#39;title&#39;</span> <span class="o">=&gt;</span> <span class="nx">t</span><span class="p">(</span><span class="s1">&#39;Import batch&#39;</span><span class="p">),</span>
</span><span class='line'>   <span class="s1">&#39;init_message&#39;</span> <span class="o">=&gt;</span> <span class="nx">t</span><span class="p">(</span><span class="s1">&#39;Initializing&#39;</span><span class="p">),</span>
</span><span class='line'>   <span class="s1">&#39;error_message&#39;</span> <span class="o">=&gt;</span> <span class="nx">t</span><span class="p">(</span><span class="s1">&#39;An error occurred&#39;</span><span class="p">),</span>
</span><span class='line'>   <span class="c1">// Fonction qui sera appelée à la fin du batch.</span>
</span><span class='line'>   <span class="s1">&#39;finished&#39;</span> <span class="o">=&gt;</span> <span class="s1">&#39;sandbox_finished_method&#39;</span>
</span><span class='line'> <span class="p">);</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Initialisation du batch.</span>
</span><span class='line'> <span class="nx">batch_set</span><span class="p">(</span><span class="nv">$batch</span><span class="p">);</span>
</span><span class='line'> <span class="nv">$batch</span> <span class="o">=&amp;</span> <span class="nx">batch_get</span><span class="p">();</span>
</span><span class='line'>
</span><span class='line'> <span class="nv">$batch</span><span class="p">[</span><span class="s1">&#39;progressive&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="k">FALSE</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Execution du batch.</span>
</span><span class='line'> <span class="nx">drush_backend_batch_process</span><span class="p">();</span>
</span><span class='line'><span class="p">}</span>
</span>

Opération de batch à réaliser

A ce stade notre commande Drush est créée et notre batch déclaré, mais pour le moment il ne fait rien car nous n’avons pas encore implémenté la fonction principale, celle que notre batch devra exécuter. Ici, je récupère un par un tous les utilisateurs ayant le statut actif du site.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<span class='line'><span class="k">function</span> <span class="nf">sandbox_batch_process</span><span class="p">(</span><span class="o">&amp;</span><span class="nv">$context</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;progress&#39;</span><span class="p">]))</span> <span class="p">{</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;progress&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;current_user&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>   <span class="c1">// Récupération du nombre d’élément à traiter.</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;max&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nx">db_result</span><span class="p">(</span><span class="nx">db_query</span><span class="p">(</span><span class="s1">&#39;SELECT COUNT(DISTINCT uid) FROM {users} WHERE status = 1&#39;</span><span class="p">));</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Histoire de ne pas avoir de problèmes nous récupérerons les utilisateurs 50 par 50</span>
</span><span class='line'> <span class="nv">$limit</span> <span class="o">=</span> <span class="mi">50</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'> <span class="nv">$sql</span> <span class="o">=</span> <span class="s2">&quot;SELECT uid FROM {users} WHERE status = 1 AND uid &gt; %d ORDER BY uid ASC&quot;</span><span class="p">;</span>
</span><span class='line'> <span class="nv">$result</span> <span class="o">=</span> <span class="nx">db_query_range</span><span class="p">(</span><span class="nv">$sql</span><span class="p">,</span> <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;current_user&#39;</span><span class="p">],</span> <span class="mi">0</span><span class="p">,</span> <span class="nv">$limit</span><span class="p">);</span>
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="nv">$row</span> <span class="o">=</span> <span class="nx">db_fetch_array</span><span class="p">(</span><span class="nv">$result</span><span class="p">))</span> <span class="p">{</span>
</span><span class='line'>
</span><span class='line'>   <span class="c1">// C’est ici que doit se faire le traitement de votre batch.</span>
</span><span class='line'>   <span class="c1">//...</span>
</span><span class='line'>
</span><span class='line'>   <span class="c1">// Une fois que nous en avons terminé avec les données en cours il nous suffit de mettre à jour les informations du batch et de passer à la suivante.</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;progress&#39;</span><span class="p">]</span><span class="o">++</span><span class="p">;</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;current_user&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$account</span><span class="o">-&gt;</span><span class="na">uid</span><span class="p">;</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'>
</span><span class='line'> <span class="c1">// Tant que l’on n’a pas traité tout le jeu de données on continue à exécuter notre batch.</span>
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;progress&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;max&#39;</span><span class="p">])</span> <span class="p">{</span>
</span><span class='line'>   <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;finished&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;progress&#39;</span><span class="p">]</span> <span class="o">/</span> <span class="nv">$context</span><span class="p">[</span><span class="s1">&#39;sandbox&#39;</span><span class="p">][</span><span class="s1">&#39;max&#39;</span><span class="p">];</span>
</span><span class='line'> <span class="p">}</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="k">function</span> <span class="nf">sandbox_finished_method</span><span class="p">(</span><span class="nv">$success</span><span class="p">,</span> <span class="nv">$results</span><span class="p">,</span> <span class="nv">$operations</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'> <span class="nx">drush_print</span><span class="p">(</span><span class="s1">&#39;Finished importing!&#39;</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span>

Et voilà, en quelques lignes nous avons un batch prêt à l’emploi pour traiter nos données. Notez que cette commande drush peut être ajoutée dans un CRON afin d’être exécutée régulièrement.

Entity Reference : afficher un contenu similaire

Contenu similaire avec Entity Reference

Cette vue permet d'afficher dans un bloc le contenu de votre site qui référence la même entité que celle référencée par l'article consulté.

Par exemple, si vous disposez d'un type de contenu Artiste qui dispose d'une référence (via un champ Entity Reference) vers le type de Contenu Mouvement  vous voulez afficher, lors de la consultation d'un artiste, tous les autres artistes qui appartiennent même mouvement (artistique) et qui donc référencent le même mouvement.

Thème : 
Views
Entity reference

Entity Reference : afficher un contenu similaire

Cette vue permet d'afficher dans un bloc le contenu de votre site qui référence la même entité que celle référencée par l'article consulté.

Par exemple, si vous disposez d'un type de contenu Artiste qui dispose d'une référence (via un champ Entity Reference) vers le type de Contenu Mouvement  vous voulez afficher, lors de la consultation d'un artiste, tous les autres artistes qui appartiennent même mouvement (artistique) et qui donc référencent le même mouvement.

Afficher un menu sous Drupal 7

Navigation

D'une manière générale, pour lire un menu (créé depuis l'interface d'administration, chemin admin/structure/menu/add) et l'afficher, il faut utiliser la fonction menu_navigation_links pour le lire, et la fonction theme pour l'afficher.

Thème : 
Menu
Preprocess
Drupal 7

Par Marc Delnatte
Akabia

Drupal Commerce : importer des produits par la programmation.

Drupal Commerce est conçu pour que l'ajout de produit se fasse via le back office en utilisant la fonction « Ajouter un produit » (« Add product » en anglais).

Grâce à des modules tels que Commerce Bulk Product Creation il est possible de créer des produits en série avec ses différentes déclinaisons.

Mais il est également possible d'ajouter ses articles via un module custom et un fichier.

Par pounard

Drupal core, les hooks, les groupes, et un cache désastreux

Dans un article précédent je vous ai présenté la gestion des caches d'une manière assez théorique  Je ne pensais pas que ce matin même j'allais tomber sur un très bon exemple d'une mauvaise gestion de cache, et je pensais encore moins la trouver dans le core. Cet article va présenter, d'une façon aussi objective que possible, l'anatomie de ce cache particulier, et pourquoi même si l'idée était bonne théoriquement, elle s'est en réalité avérée catastrophique dans mon cas d'utilisation. Je vais dans les paragraphes suivants qualifier cette gestion de cache de réel bug.

Par badgones

Tuturiel Drupal 7, vue et pager (programmation) : faire une vue sans Views

Sous Drupal 7 (et déjà sous Drupal 6), il est très facile de coder une vue paginée sans passer par l'usine à gaz Views, et ainsi d'avoir le markup que l'on souhaite, avec une requête SQL optimisée, qui ne mette pas trois plombes à s'exécuter.

Pour ça, il suffit d'avoir 2-3 connaissances en PHP et SQL, et de suivre ce tuto :

Premièrement, on écrit sa requête SQL (pour l'exemple je vais faire simple, sélectionner les "title" de la table "node", avec un order by sur le paramètre "sticky") :

$query = db_select('node','n');
$intermediate = $query->fields('n',array('title'))
    ->orderBy('n.sticky', 'DESC');

 
Ensuite, je rajoute la condition du pager dans la requête (20 résultats par page) :

en lire plus

Par pounard

Le cache

Chapître se concentrant sur la gestion des caches.

Par pounard

Performance

Drupal est un outil pouvant se révéler puissant par son aspect modulaire, malheureusement de l'abus de cette modularité naît souvent des problèmes dont la nuisance peut facilement effacer la valeur ajoutée des avantages de l'outil. L'un des plus important est l'aspect performance. Au fil des années Drupal a grossit, pour, à l'heure de Drupal 7, peser plus de 200 000 lignes de codes. Parmis ces lignes figurent non loin de 70 000 lignes d'un design historique et poussiéreux, tout droit héritées de Drupal 6 et précédents.

Par juliendubreuil
julien dubreuil
Drupal since 2009

7 Choses à faire pour améliorer vos compétences sur Drupal

Voici un article que j’aurais aimé lire quand j’ai commencé Drupal, quelques conseils simples permettant d’aborder sereinement le CMS et sa communauté. Aujourd’hui ces étapes tombent sous le sens pour moi mais vu l’essor que rencontre la version 7 de Drupal je me dis qu’il y en a d’autres à qui cela pourrait servir.

1) Inscrivez-vous sur Drupal.org

Avoir un compte sur Drupal.org c’est essentiel. Cela vous permettra en cas de besoin de poster une question, de proposer un patch ou encore d’apporter une nouvelle fonctionnalité à un module. Pour moi la création de votre compte est la première étape, c’est celle qui vous mettra en relation avec la communauté.

2) Intéressez-vous aux initiatives D8

Si vous utilisez Drupal, vous n’êtes pas sans savoir que la version 8 est en cours de réalisation. Sachez qu’ils existe plusieurs initiatives regroupant chacune les changements majeurs à venir pour Drupal. Je vous conseille donc de faire le tour des ces initiatives et de les suivre attentivement. Libre à vous si vous vous en sentez l’âme de contribuer et d’apporter votre petite graine à l’une d’entre elle. Vous trouverez toutes les initiatives D8 à cet endroit.

3) Testez, testez et testez des modules

Il parait que c’est en forgeant qu’on devient forgeron, en tout cas une chose est sûre, plus vous testerez de modules, d’outils ou de méthodologie, plus vous apprendrez. A mon sens il est important de vous créer un référentiel de modules, chaque module devant être générique et réutilisable pour vos projets.

4) Documentez-vous, lisez

Lorsque je m’attaque à une nouvelle techno ou lorsque je m’intéresse à un nouveau sujet je procède toujours de la même façon, j’essaie d’identifier des acteurs majeurs, des aguerris qui savent de quoi ils parlent, je m’abonne aux flux de leurs blogs, à leurs comptes Twitter et je lis ce qu’ils partagent. Après il ne reste qu’à maintenir cette liste de blogs à jour, en supprimant ceux qui ne produisent pas de contenus de qualité et en ajoutant de nouveaux. Ainsi vous obtenez la crème de la crème et cela me permet de rester au courant des dernières nouveautés, même si je suis quelques temps sans travailler sur le sujet.

Pour vous, voici quelques liens à suivre :

Une autre façon d’apprendre par la lecture est d’acheter quelques livres qui traitent du sujet. Cette solution est plus onéreuse qu’une recherche sur le web mais est souvent plus efficace lorsqu’on cherche un point précis (pour peu que ce soit un bon bouquin).

5) Connectez-vous aux channels IRC

Une bonne façon pour être en contact directe avec la communauté est de venir la rencontrer sur les channels IRC #drupal et #drupal-fr. Ici vous aurez les membres les plus actifs de la communauté, ceux qui arpentent les méandres de Drupal depuis plusieurs années. Pour moi c’est le meilleur moyen de trouver de l’aide, de récupérer de précieux conseils ou d’obtenir des pistes à creuser. Néanmoins, n’attendez pas de ces personnes connectées qu’elles fassent le travail à votre place et qu’elles vous prennent par la main pour vous montrer quoi et comment faire, tout ce qu’elles pourront faire c’est vous aiguiller. Plus d’info sur cette page : drupal.org/irc

6) Rencontrer la communauté

Sortez! Allez à la rencontre de la communauté qui se trouve près de chez vous. Rien ne vaut les rencontres que vous pourrez faire lors d’évènements de type barcamp, meetup ou drink. Vous en apprendrez bien plus lors de ces rencontres que derrière votre ordinateur à chercher sur Google. Sachez qu’il existe plusieurs groupes utilisateurs Drupal répartis dans les villes de Lille, Lyon, Nantes, Paris et Toulouse. Vous trouverez toutes les informations nécessaires sur la page officielle Drupal France.

7) Contribuez !

Le dernier point et pas des moindres, contribuer, participer activement à améliorer et enrichir Drupal. Lorsqu’on parle de contribution on pense tout de suite à la réalisation de module. C’est vrai, mais il n’y a pas que ça, il existe d’autres possibilités comme par exemple, soumettre ou tester un patch, écrire les tests unitaires d’un module, rédiger de la documentation, ou encore traduire des modules. Un conseil si vous voulez participer, ne restez pas focalisé sur la création de module, pour moi faire de la traduction c’est aussi méritant. Bref les possibilités sont vastes pour participer à l’écosysteme de Drupal, à vous de trouvez la votre.

Cet article 7 Choses à faire pour améliorer vos compétences sur Drupal est apparu en premier sur Julien Dubreuil.

Pages