Planète

Par flocondetoile
Adhérent

Créer des entités par le code

Lors de nos précédents articles sur la conception d'un profil d'installation Drupal 8 en vue d'industrialiser la conception de sites, nous avons abordé la création par le code aussi bien d'entités de configuration, que des entités de contenus.

Ce billet est une petite compilation de snippet permettant de générer des entités de configuration ou encore des contenus de façon programmatique.

Par GoZ
Fabien CLEMENT

Création d'une API avec Drupal 7 pour MK2

Création d'une API avec Drupal 7 pour MK2

Lors du Drupal Camp 2016 à Nantes, j'ai présenté un retour d'expérience sur la création de webservices et d'une api REST + JSON sous Drupal 7 pour les cinémas MK2.

Les slides de cette présentation sont disponibles sur github et la présentation sur youtube.

Super moments passés avec la communauté, à la prochaine !

GoZ
dim 19/06/2016 - 17:56

Par flocondetoile
Adhérent

Une usine à sites avec Drupal 8

Après avoir découvert le principe des profils d'installation, leur création, et la conception de packages fonctionnels, nous allons aborder dans ce billet un cas d'application typique des profils d'installation : la création d'une usine à sites, basée sur l'architecture multi-sites native à Drupal, ou comment industrialiser la conception d'un projet pour disposer d'un site fonctionnel en quelques minutes, sans pour autant sacrifier la notion du sur-mesure.

Par Artusamak
Julien Dubois

Drupalcamp Nantes 2016 compte rendu du camp de Drupal 8

Drupalcamp Nantes 2016 compte rendu du camp de Drupal 8
mar, 14/06/2016 - 18:50
Artusamak

Le weekend dernier s'est déroulé le Drupalcamp de Nantes. 5 ans après notre dernière visite dans la capitale du petit lu et du BN, la communauté s'est à nouveau engouffrée dans les TGV et les avions pour parler en long, en large et en travers de Drupal 8. 3 jours de conférence au programme avec sessions et sprint le dernier jour pour une centaine de participants.

Cette année le format a été simplifié, une seule session à la carte par créneau (contre 2 ou 3 en général) ainsi que des BOFs lightning talks en parallèle (en bon français : des présentations éclaires) et une durée maximale de 30 minutes par session. J'ai trouvé l'idée pertinente car le nombre de sessions retenu devient moins qualitatif s'il faut remplir trop de créneaux et la durée bridée permet de passer à autre chose rapidement si le sujet ne vous botte pas. La bonne nouvelle étant que les présentations éclaires ont enfin pris après plusieurs éditions sans succès.
Au domaine des innovations est à ajouter la capacité de captation et de réalisation en temps réel de vidéos des sessions. Toutes les présentations ont été filmées et retransmises en direct sur YouTube. La communauté pourra donc bénéficier du contenu des sessions même sans s'y être rendue physiquement !

La Loire à Nantes

Côté contenu, je vous donne mon avis en quelques mots sur les sessions auxquelles j'ai assisté :

Démystifions le référencement

Merci à Simon d'avoir lancé une session sur un thème très peu couvert ces dernières années. Son œil d'expert technique a permis à de nombreux participants d'être plus attentifs et à l'écoute de ce qu'aurait pu raconter n'importe quelle autre personne maîtrisant le référencement. Il y a de belles choses à réaliser pour optimiser son positionnement, cela donnerait presque envie de s'y consacrer un peu plus ! Je vous invite à lire ses billets sur le sujet du SEO.

Accessibilité, Drupal et mode projet

L'accessibilité est un autre parent pauvre des sites, trop souvent placé en fin de cycle de développement, la problématique des optimisations est épineuse. J'ai moyennement apprécié le contenu de cette session qui avait comme message "pour réussir vos projets, embauchez une équipe compétente". J'ai trouvé ce discours utopique et trop simple, si cela était possible cela se saurait. Reste l'alternative de former les équipiers pour les faire progresser si besoin.
Le présentateur ne connaît pas particulièrement Drupal, il a déroulé des banalités car il est spécialiste de son domaine, maîtriser les subtilités de Drupal revient à la charge de ses prestataires (ce qui peut se tenir comme discours).

Pourquoi et comment mettre Symfony 3 Fullstack dans Drupal 7

Pierre a fait du Pierre dans sa présentation. Un choix courageux sur le papier, discutable dans les faits. Pierre a développé une surcouche à D7 pour pouvoir écrire du code déjà compatible avec Drupal 8. Routes, Services, Interfaces et autres joyeusetés de Drupal 8 ont été intégrés par un connecteur dans l'objectif de permettre au client de migrer dans un second temps pour un coût moindre car le code métier est déjà encapsulé. Pour aller plus loin, la migration peut même se faire vers un Symfony directement et pas forcément par un Drupal 8.
Bien que cette idée puisse paraître sexy (elle l'est à sa manière) je pense que ce choix entraîne un enfermement dans un code propriétaire et que si un prestataire doit reprendre ce code existant il lui faudra un moment avant de débugger et maîtriser ce connecteur.

Drupal Commerce pour Drupal 8, qu'est-ce qui change ?

Alors voilà un sujet que j'aime toujours de par ma vie précédente chez Commerce Guys. Drupal Commerce continu son cycle de développement pour Drupal 8, une réécriture est en cours à partir d'une feuille blanche et la philosophie de Commerce 1.x reste la même. Utiliser les leviers offerts par le cœur et les autres modules contrib pour créer un outil plus mature, plus en adéquation avec les besoins des utilisateurs et plus simple à utiliser. L'expérience acquise avec la branche 1.x a porté ses fruits, de bien belles choses vont en sortir et l'équipe continue à tracer la voie des meilleures pratiques de Drupal avec son choix de créer des librairies par exemple.
Reste selon moi une grosse problématique qu'il faudra gérer côté Commerce Guys. Créer un cœur et des modules est une chose, réussir à en assurer la maintenance sur la durée en est une autre. La plupart des modules 7.x majoritairement usités souffrent d'un manque d'amour côté maintenance. C'est un enjeu majeur pour la crédibilité de l'outil, j'espère qu'ils réussiront à s'en dépatouiller.

Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8

Comme à chaque camp, j'essaye de ne pas manquer la session d'Aurélien. Ses sessions sont toujours hyper intéressantes. Elles sont remplies d'informations utiles, de retours d'expériences pointus. Cette fois ci il nous parlait du changement de versions majeures du cœur, tout n'est pas encore prêt mais on s'en rapproche.

La session dont vous êtes le/la héro(ïne)

J'étais de l'autre côté du micro pour cette session avec Sébastien et Simon, l'objectif était tout simplement de vous donner la parole pour répondre à toutes vos questions voire de s'appuyer sur vos réponses. Ça a été chose faite avec des échanges qui ont duré sur le headless notamment.

Présentation des commissions de l'association Drupal France

Chantier en perpétuel avancement, le développement de l'association passe par ses membres. Les plus notables que sont Anne-Sophie et Léon nous ont rapporté leur vision du fonctionnement de l'association. Des milliers de choses sont à faire, l'objectif est de ne pas faire pour la communauté mais de laisser la communauté s'approprier son asso.
Étant passé par là, je sais qu'il est difficile de mouvoir les membres de l'association. Je pense que les commissions peuvent être utiles si le bureau pose un cadre sur ses attentes et exprime clairement sa vision de ce à quoi devrait ressembler une ADFF(FFFFF) qui tournerait à plein régime. Une fois que cela sera fait les membres pourront plus facilement voir où les aider. C'est en cours, c'est une bonne nouvelle, merci au bureau de bien s'en occuper en tous cas.

Render API & Cache API

J'ai eu l'occasion de faire mon numéro de claquettes pour cette session. Avec un peu de recul et quelques remarques elle aurait effectivement méritée d'être catégorisée en "Confirmé" voir "Expert" mais bon, c'était pour vous mettre l'eau à la bouche. J'essaierai d'en faire un transcript dans les jours qui viennent.

Retour d'expérience - création d'une API avec Drupal pour un application mobile - MK2.com

Très bonne session de Fabien sur le chantier de refonte de code en vue de la nouvelle version de l'API de mk2. On voit peu de sessions du genre qui parlent des problèmes et de comment ils ont été solutionnés. J'espère que nous en verrons d'autres comme celle là.

Découvrir Drupal Console

Gilbert KGaut Montagné nous a présenté Drupal Console. Un très bon tour de la question, exhaustif et efficace avec notamment les différences entre Drupal console et Drush. Bravo à toi Kévin pour ta première session !

Kévin sur un écran de télé avec un pied de micro comme Gilbert Montagné

Mais les Drupalcamps ce ne sont pas que des conférences, c'est aussi et surtout des gens ! Le slogan de Drupal est "Venez pour le logiciel, restez pour la communauté" et qu'est ce que c'est vrai ! Quel pied que de se retrouver une à plusieurs fois dans l'année. C'est un peu comme si une bande de copains se retrouvait mais en mieux car tous les ans vous avez des nouveaux à intégrer et cela se fait dans une ville différente. Pendant 3 jours, ça n'arrête pas de parler de Drupal mais pas que, les débats sont acharnés, parfois animés mais ils se terminent toujours dans la bonne humeur autour d'un petit plat ou d'une bonne bière.
Et je ne vous ai pas parlé de ce que l'on s'est dit pendant les lightning talks, de ce que l'on a mangé (miam les crêpes) ou pendant les soirées et les sprints. J'espère surtout vous avoir donné envie de venir rencontrer la communauté lors du prochain événement car c'est un réel plus pour vous d'y participer. Vous y apprendrez des choses, vous ferez des rencontres, vous repartirez dynamisés et motivés pour tenir jusqu'à la prochaine édition ! Vous manquez de patience ? Allez rencontrer les drupaliens proches de chez vous grâce aux meetups.

Happyculture sponsor Café

Pour cette édition, nous avons été sponsors du café, des biscuits et des fruits pour les participants. C'est une très bonne répétition avant les Drupal Developer Days qui auront lieux la semaine prochaine à Milan et où nous espérons vous croiser. Après Nantes, nous verrons où nous mènera la prochaine édition. Bravo aux organisateurs et aux bénévoles, l'édition 2016 était encore meilleure que celle de 2011, vivement celle de 2021 !

Par anavarre

Présentation DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8

J'ai présenté un retour d'expérience de la migration de la base de connaissance docs.acquia.com de Drupal 6 à Drupal 8 au DrupalCamp Nantes 2016. Les thèmes principaux abordés sont : comment auditer et préparer sa migration, comment utiliser les nouvelles commandes Drush à notre disposition pour facilement mettre en place les conditions d'une migration réussie et quelques astuces glanées par l'expérience acquise au cours de cette migration somme toute assez complexe.

Par flocondetoile
Adhérent

Créer des packages fonctionnels pour Drupal 8

Ce billet fait suite à la création d'un profil d'installation pour Drupal 8, solution permettant d'industrialiser la production de sites. Nous allons explorer ici plus en avant la création d'un package fonctionnel, son intégration dans un profil d'installation, et les différentes stratégies possibles concernant ces configurations vis à vis du module et du site dans une optique de maintenance de ces dernières.

Par flocondetoile
Adhérent

Créer un profil d'installation pour Drupal 8

Après avoir découvert le principe des profils d'installation de Drupal 8, qui permettent d'industrialiser la production de sites, nous allons explorer plus en détail la création d'un profil.

La création d'un profil d'installation ressemble à s'y méprendre à la création d'un module. Faisons un tour d'horizon des principales options de configuration d'un profil d 'installation.

Par Kgaut
Adhérent
Kevin Gautreau

Module Drupal 7 : CKEditor Responsive Plugin

Mon premier module drupal officiellement publié sur drupal.org !

Il s'agit du module CKEditor Responsive Plugin, qui comme son nom l'indique est un plugin pour CKEditor qui permet d'insérer des zones responsives dans une zone WYSIWYG.

Le module injecte en fait du markup HTML qui ressemble à ça :

<div class="ckeditor-col-container clearfix">
  <div class="grid-6 sixcol first-col"><p>lorem ipsum</p></div>
  <div class="grid-6 sixcol last-col"><p>lorem ipsum</p></div>
</div>

Ce qui permet à des néophytes de facilement mettre en place des architectures de contenu avancées sans passer par des tableaux, et sans avoir de templates pré-définis (comme avec paragraphs par exemple).

Le module est disponible sur sa page drupal à l'adresse suivante : https://www.drupal.org/project/ckeditor_responsive_plugin

Vous pouvez proposer des améliorations ou des idées soit en créant un ticket sur la page du module du site drupal.org ou bien encore sur github : https://github.com/kgaut/drupal-ckeditor-responsive-plugin

Le module est pour l'instant uniquement pour Drupal 7, mais je compte le porter sur Drupal 8 rapidement.

Par GoZ
Fabien CLEMENT

Drupal 8: Configuration management, Config_devel Versus Features

Drupal 8: Configuration management, Config_devel Versus Features

Gestion de la configuration sous Drupal 7

Sous Drupal 7 et antérieurs, la configuration (entités, champs, vues etc) est exclusivement stockée en base de données. Cela pose des problèmes que tout développeur Drupal a rencontré : toute modification de configuration doit être rejouée manuellement sur les différents environnements : local, développement, recette, production etc.

Pour palier à ces lacunes, l'utilisation de features a été massivement adoptée et, bien qu'imparfaite, cette méthode à longtemps été une référence.

GoZ
mer 01/06/2016 - 13:44

Par admin

Soutenez Cellou et souhaitez lui un bon anniversaire - Urgent

Drupal France soutient Cellou Diallo et demande au préfet de l’Hérault de lui permettre de rester en France.

Il n'est pas habituel que nous vous proposions de soutenir une personne, et ceci restera probablement très exceptionnel, mais nous apprécions Cellou que vous avez pu rencontrer à divers événements Logiciels Libres, et qui s'est impliqué dans les RMLL, le DrupalCamp Montpellier 2014, des sprints, ...

Vous pouvez lui souhaiter un bon anniversaire, 26 mai, en signant la pétition qui donne plus de détails sur sa situation critique sur https://www.change.org/p/m-pr%C3%A9fet-pour-l-annulation-de-l-oqtf-%C3%A...

Merci.

En page d'accueil : 
Par flocondetoile
Adhérent

Drupal 8 : les profils d'installation, introduction

Les profils d'installation sont la base, comme leur nom l'indique, pour installer Drupal. Mais aussi pour effectuer une première configuration lors de son installation. Cela peut aussi bien être une configuration de base, qu'une configuration avancée pour disposer par exemple d'un site prêt à l'emploi. L'utilisation de ces profils peut permettre aussi bien d'industrialiser la création de sites Internet, ou encore la création de fonctionnalités génériques et éviter ainsi de longues séances, répétitives, de configuration. Faisons un aperçu général du principe de fonctionnement des profils d'installation de Drupal 8.

Par flocondetoile
Adhérent

Le futur de Drupal 8

Lors de la keynote de la DrupalCon 2016 (Nouvelle Orléans), Dries Buytaert a fait un point sur l'état de Drupal. Cette keynote est particulièrement intéressante car elle a mis en perspective, et concrétisé, le fait que Drupal 8 dispose désormais d'un modèle et d'une architecture permettant une évolution fonctionnelle plus rapide que ses précédentes versions. Et elle a été l'occasion de formuler de nouvelles propositions, actant ce fait, que la sortie de Drupal 8 en version stable n'était pas l'aboutissement d'une refonte globale de son architecture, mais bien le commencement d'un nouvelle ère.

Revenons sur les moments forts de cette keynote.

Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 - Utiliser la Batch API dans un controller

La batch API dans Drupal permet de faire des traitements lourds et/ou long, sans risque d'avoir un temps d’exécution dépassé de la part de son serveur.

Ici, dans le cadre de mon site de pronostics, je voulais faire un traitement permettant de recalculer les points sur l'ensemble des matchs d'une compétitions.

J'ai donc une route définie qui appelle la méthode statique "updateBetsForLeague" de mon controller.

Fonction de qui prépare le batch à traiter :

  public static function updateBetsForLeague(League $league) {
    $games = $league->getGames(); //Je récupère l'ensemble des matchs à traiter
    //Définition du batch
    $batch = [
      'title' => t('Recount League Points'), // Titre de l'opération
      'operations' => [], // tableaux qui contiendra l'ensemble des traitements à effectuer
      'finished' => '\Drupal\mespronos\Controller\BetController::updateBetsForLeagueOver', // méthode qui sera appelé à la fin du traitement 
    ];
    //Définition des opérations 
    // Pour chaque match ($game) on appelle la méthode "updateBetsFromGame" et on lui passe en paramètre le match en question
    foreach ($games as $game) {
      $batch['operations'][] = ['\Drupal\mespronos\Controller\BetController::updateBetsFromGame',[$game]];
    }
    // on paramètre le batch
    batch_set($batch);
    //et on le lance (en lui passant une url de redirection pour la fin du traitement, ici la liste des compétitions
    return batch_process(\Drupal::url('entity.league.collection'));
  }

 

Voici la méthode statique appelée à la fin du batch

  public static function updateBetsForLeagueOver($success, $results, $operations) {
    if ($success) {
      $message = t('Ranking recalculated');
    }
    else {
      $message = t('Finished with an error.');
    }
    drupal_set_message($message);
    return new RedirectResponse(\Drupal::url('entity.league.collection'));
  }

Rien de bien compliqué donc, un seul piège dans lequel je suis tombé, lorsque l'on définie une opération, il faut bien donner le namespace complet de la classe, en effet $batch['operations'][] = ['BetController::updateBetsFromGame',[$game]]; ne fonctionnera pas, mais ne retournera même pas d'erreur...

Par flocondetoile
Adhérent

Drupal 8 : Injecter un formulaire de contact dans un contenu en 5 étapes

Comment insérer un formulaire de contact dans un contenu de Drupal 8 ? Ou sur une page précise à un endroit précis ? Par défaut, les formulaires de contact créés disposent d'une page qui leur est dédiée.  Mais si nous souhaitons les utiliser par ailleurs. Après quelques recherches, j'ai presque cru qu'il faudrait écrire quelques lignes de code pour créer un Plugin spécifique. Mais non...

Par admin

DrupalCamp Nantes - 10, 11 et 12 juin 2016

Fichier attaché Taille
PDF iconCommuniqué de presse 545.08 Ko

Vous avez peut-être remarqué la bannière sur le site depuis un moment, formalisons cette annonce : c’est la seconde fois que cet évènement national se déroule à Nantes. Venez donc nous retrouver, échanger, apprendre et partager autour de Drupal. Cette édition 2016 se déroulera sur 3 jours, à l’Epitech Nantes, du vendredi 10 au dimanche 12 juin 2016.

3 jours rythmés par des conférences, des lightning talks et des ateliers
Au sein de l’Epitech de Nantes, les participants pourront assister à des conférences sur les journées de vendredi et samedi.
Pas d’hésitation, ni de choix, une seule conférence est donnée à la fois, ce qui permet à tous les participants de profiter des contenus riches de l’évènement. Sur ces deux jours plus d’une dizaine de sujets seront proposés, en plénière ou dans le cadre de discussions plus informelles en parallèle (lightning talks).
Le dimanche est réservé aux sprints et ateliers. Les contributeurs se regroupent, sur un sujet commun, permettant de faire avancer le CMS (développement pour Drupal 8 et Drupal 7, traduction en français, documentation, …).

Sprints, conférences et discussions sont accessibles à tous les niveaux techniques et fonctionnels, à tous les profils du développeur à l’utilisateur. Toutes ces rencontres se font dans la bonne humeur, des soirées étant aussi organisées les vendredi et samedi soirs.

Venez nombreux(ses) !

Horaires : de 9h à 18h30
Lieu : 5 Rue d'Alger, 44000 Nantes
Billet : entrée pour une journée 10€ (vendredi ou samedi). Entrée pour les 2 jours 15€ (repas du midi compris). Dimanche gratuit.
Contact presse :
Site : http://nantes2016.drupalcamp.fr/
Email : dcn2016@listes.drupalfr.org

En page d'accueil : 
Par Kgaut
Adhérent
Kevin Gautreau

Drupal 8 & Composer - Appliquer un patch dans le fichier composer.json

Si vous utilisez composer pour gérer votre instance de Drupal 8, vous avez parfois besoin d'appliquer un patch (de votre conception ou depuis drupal.org) que ce soit pour un module tiers ou pour le core.

Si on est "à l'ancienne" on a le core et les module sous gestionnaire de version (git par exemple), cela reste simple, vous appliquez le patch et commitez le tout.

En utilisant composer, nous avons uniquement le "cutom" qui est versionné, avec les fichiers composer.json et composer.lock qui contiennent la liste des modules utilisés et leurs version spécifique. Donc pas possible d'appliquer un patch comme plus haut.

Par contre on peut à l'aide d'un dépendance spécifier les patchs que l'on veut utiliser directement dans le fichier composer.json, regardez si ça ce trouve le module est déjà installé; il s'agit de cweagans/composer-patches.

s'il n'est pas présent : 

composer require cweagans/composer-patches

ensuite pour appliquer un patch, on doit ajouter les éléments suivants dans la partie "extra" du fichier composer.json :

"patches": {
  "package": {
    "description libre": "Url du patch"
  }
}

exemple pour un patch pour mimemail :

"patches": {
  "drupal/mimemail": {
    "Fix mimemail error on admin form": "https://www.drupal.org/files/issues/mime-mail-error-message-on-admin-form-with-webprorfiler-2719981-3.patch"
  }
}

si vous avez plusieurs patchs pour un même module, séparez-les par une virgule :

"patches": {
  "drupal/mimemail": {
    "Fix mimemail error on admin form": "https://www.drupal.org/files/issues/mime-mail-error-message-on-admin-form-with-webprorfiler-2719981-3.patch",
    "patch 2": "https://www.drupal.org/files/issues/mime-mail-error-message-on-admin-form-with-webprorfiler-2719981-3qdqsdqsd.patch"
  },
  "drupal/monautremodule": {
    "ma description du patch": "https://www.drupal.org/files/issues/mimhfhmin-form-with-webprorfiler-2719981-3.patch",
  }
}

si vous avez plusieurs modules à patcher, même principe :

"patches": {
  "drupal/mimemail": {
    "Fix mimemail error on admin form": "https://www.drupal.org/files/issues/mime-mail-error-message-on-admin-form-with-webprorfiler-2719981-3.patch",
    "patch 2": "https://www.drupal.org/files/issues/mime-mail-error-message-on-admin-form-with-webprorfiler-2719981-3qdqsdqsd.patch"
  }
}

enfin update et install pour que le(s) modules patchés soient supprimés, re-téléchargés et enfin patchés.

composer update
composer install

 

Pages