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 JulienD
julien dubreuil

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 hellosct1

Drupagora 2012 Les derniers jours de l'appel à conférenciers

La deuxième édition de Drupagora se déroulera le 9 novembre 2012 à Paris, autour du CMS Drupal.

L'appel à conférenciers se termine dans quelques jours, mais vous avez encore le temps de proposer un sujet sur les thématiques suivantes :


Ergonomie, expérience utilisateur & multi devices :
* Introduction au multi devices,
* Les bonnes pratiques du Responsive Web Design,
* Drupal 8 pour l’ergonomie et le multi Os,
* Ergonomie des espaces d'administration / optimisation du travail des contributeurs,
* Les bons modules/thèmes pour le Responsive Web Design...

Drupal de A à Z :
* Bien débuter avec Drupal,
* Réussir un projet avec Drupal,
* Faire du e-commerce avec Drupal,
* Choisir son hébergement,
* Sécuriser Drupal
* Conception de sites multi langues...

Retours d’expériences

L'édition 2011 est toujours accessible, et vous verrez la qualité de l'évènement directement sur le site de Drupagora

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.

Par hellosct1

Bureau 2012 DrupalFr

L'association Drupalfr a organisé le 28 juin dernier, son Assemblée Générale Ordinaire, permettant d'avoir un nouveau bureau.

Le bureau 2012 qui aura la charge de continuer les différentes actions commencées et futures autour du CMS Drupal, dont j'ai la joie de faire de nouveau parti. Celui-ci se compose de :

  • Président : Olivier Friesse, noisetteprod, @noisetteprod
  • Vice-Président : Julien Dubois, artusamak, @artusamak
  • Trésorier : Christophe Villeneuve, hellosct1, @hellosct1
  • Secretaire : Anne-Sophie Picot, asplamagnifique, @asplamagnifique

Un communiqué complet et détaillé est disponible directement sur le lien suivant : Compte rendu de l'assemblée générale du 28 Juin 2012

et aussi une photo prise le jour de cette assemblée générale

Bureau DrupalFR 2012 Olivier Friesse - Julien Dubois - Anne-Sophie Picot - Christophe Villeneuve

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');
 
 

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 hellosct1

Les stands PHP au salon solutions linux 2012

Le salon « solutions linux » va se dérouler du 19 au 21 juin 2012 au Cnit à Paris. Et de nombreuses sociétés Open source seront présentes, ainsi que de nombreux acteurs du langage PHP, comme Zend, SensioLabs...

Au niveau du village associatif, le langage PHP sera aussi présente avec les associations comme Dolibar, AFUP (Association Française des Utilisateurs de PHP), Drupal, GLPI.

Pour ma part, je vais m'occuper des stands AFUP et Drupal, mais de nombreuses acteurs de ces communautés seront présents pour répondre à vos questions et vous parler du CMS ou du langage.

Bien entendu, les elePHPants effectueront le déplacement pour rechercher de nouvelles familles d'acceuils et surtout ils adorent faire des calins, c'est pourquoi il ne faudra pas être surpris de leurs demandes.

Mais sans plus attendre, il faut vous inscrire sur le stand du salon linux pour venir nous voir.

Le salon Solutions Linux qui se déroule du 19 au 21 juin

banniere solutions linux 2012

Par JulienD
julien dubreuil

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.

Ajouter du contenu sur Drupal 7

Maintenant que nos types d'œuvre d'art disposent d'un hook, nous devons pouvoir les créer. Modélisons à nouveau le mode de fonctionnement des nœuds et ajoutons les entrées suivantes à notre hook de menu...

Tags: 

Par pounard

My wrong behavior in community work

Today, I was enjoying a boring and alone day, after a incomplete night spent in a very light sleeping state. When I started my day, as always, I turned on my screen and started looking up at Drupal core issue queues, int order to see if some answers magically spawned during the night : as always, U.S. people are the most active while we europeans are deeply asleep.

Today, the main concern for me was a bunch of issues about core handling transactions and some others module related issues. Along those, an old one was stalling where I took the habit to argue louder, entitled Add a persistent key/value store for non-configuration state. I will name this issue The One.

Par hellosct1

Drupalcamp Lyon

Le 26 et 27 mai prochain, va se dérouler le premier DrupalCamp de l'année dans la ville de Lyon, consacré au CMS Drupal, dont j'effectuerai le déplacement et donc je serais bien présent.

Cet évènement regroupera de nombreux acteurs de scène Drupal, tant au niveau de l'association, que des utilisateurs Techniques, chef de projets ou DSI.

Pendant les 2 jours, une série de conférence est prévue avec 4 tracks en parallèle, provoquant une sélection très difficile pour les personnes présentes. Hors, la deuxième journée, sera plus consacrée au Sprint code et traduction.

Par ailleurs, une salle supplémentaire est disponible en libre accès pour permettre de déposer et de parler d'un autre sujet. Les thèmes seront connus le matin de l'évènement.

Enfin, le programme avec les différents thèmes traités est disponible sur le site de l'évènement et il est important de s'inscrire très rapidement car les places partent très vite.

Liens :

Prochain évènement :

Forum PHP 2012

Par j0nathan

Recherches de candidats : Analyste-programmeur PHP

Koumbit est à la recherche d'un analyste-programmeur PHP.

En tant qu'expert technique, cette personne doit être en mesure d'effectuer des tâches de programmation, de configuration système, de mises à jour et d'importation de données. En tant que consultant, elle devra comprendre, synthétiser les besoins des clients et leur offrir un accompagnement personnalisé sur une base régulière.

Possédant une formation en informatique ou l'équivalent, le candidat devra être familier avec la programmation Web et le développement agile. Autonome et polyvalent, il devra être en mesure d'adapter ses qualifications en fonction des demandes évolutives de son poste. Une connaissance du milieu des organismes caritatifs est désirable. Une motivation à favoriser l'appropriation stratégique de la technologie auprès des groupes sociaux est essentielle.

La responsabilité principale du candidat sera le développement et l'adaptation de sites web créés avec les logiciels Drupal et CiviCRM. Drupal est un système de gestion de contenu (CMS), et CiviCRM est un outil de gestion de membres et de campagnes de levées de fonds adapté aux besoins des organismes à buts non-lucratifs (OBNL). Les deux technologies sont des logiciels libres basés sur PHP et MySQL. Une expérience avec Drupal et CiviCRM est un atout mais n'est pas indispensable pour un candidat capable de maitriser rapidement les nouvelles technologies.

Koumbit fournit depuis 2004 des services de développement Web aux organismes communautaires locaux et internationaux. Fondé sur des principes d'ouverture et d'égalité, l'organisme est caractérisé par son utilisation des logiciels libres et sa structure horizontale. Les salariés de Koumbit établissent leur horaire de travail et participent à la prise de décisions du collectif. Ils reçoivent un salaire unique de 23$ de l'heure.

Venez rencontrer notre équipe chaque vendredi après-midi dans nos locaux situés au bureau 308 du 6833, avenue de l'Épée (http://koumbit.org/contact).

Fichier attaché Taille
koumbit-offre-demploi-mai-2012.pdf 299.41 Ko
Par hellosct1

1er Rendez-vous proposé par l'antenne @afup_paris

Quelques semaines après son lancement, le premier Rendez-vous de l'antenne AFUP Paris a été mi sur pied, sur le thème :

Les CMS Open-source en PHP : Drupal - Joomla - Wordpress

L'évènement se déroulera le 23 mai prochain à "La cantine", dont l'entrée est gratuite sur pré-inscription.

Par ailleurs, le choix de ces trois CMS sont parmi les plus utilisés, les plus populaires et les plus récompensés, arrivant en tête de nombreux classements.

Du coté des intervenants, 3 personnes impliqués dans chaque CMS ont été conviées pour répondre aux points suivants :

  • Quelles sont les spécificités de chacune de ces solutions ?
  • Quelles sont leurs forces, leurs faiblesses ?
  • Quelles possibilités d'évolution, quels outils d'administration ?

Cette soirée doit permettre de répondre aux nombreuses attentes et interrogations de chacun, mais aussi :

  • Des programmeurs PHP qui souhaitent en utiliser un,
  • Mais aussi des utilisateurs de Frameworks, qui ont la charge de réaliser un projet avec un CMS

Enfin, toutes les personnes désireux d'en connaître plus sur ces CMS.

Alors n'hésitez pas à vous rendre sur la page du rendez-vous pour vous inscrire et connaître tous les détails.

Détails soirée : Les CMS Open-source en PHP : Drupal - Joomla - Wordpress

Pages