Planète

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.

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.

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.

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.

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
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 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 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 : 

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.

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.

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.

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 Artusamak
Julien Dubois

State of Drupal 2016 – New Orleans

Drupal 8 update
Drupal 8.0 a été mise en ligne le 19/11 3300 vs 954 contributeurs au cœur. 240 soirées pour fêter ça le même jour à travers la planète. Ça fait beaucoup de bière.

Meilleure expérience de contribution, optimisép our le mobile, standards PHP, configuration management, meilleur système de cache, des APIs pour les webservices et une meilleure gestion des traductions (disponible dans des centaines de langues).

Mise en ligne de Drupal 8.1 dans les temps et dans le budget (ah non, pas besoin, on parle d’open source). Cette version vient avec des améliorations telles qu’une interface pour la migration de versions, la prise en charge de Composer, la correction orthographique dans CKEditor, la prise en charge de tests pour le Javascript, BigPipe côté performances et une meilleure documentation ainsi que de meilleurs textes d’aide. Et tout cela sans casser la compatibilité descendante. Des releases sont à prévoir tous les 6 mois.

Attente d’un pic dans l’utilisation de Drupal avec Drupal 8. BigPipe, nouveau système de cache, traductions sont des pretextes pour faire venir de nouveaux gens et augmenter l’usage. Nous sommes à la croisée des chemins avec la fin de Drupal 7 qui fait desccendre l’adoption et la montée en puissance de D8.
Passage de 0 à 60000 sites en 3 mois pour D8 là où D7 a mis 7 mois.
Pour accélérer portage de modules en D8 bloquant. Facilitation ed l’apprentissage et terminer les outils de migration. « D8: A winner in progress ».

Quel avenir pour Drupal

Richesse (richness) VS Audience (reach). Présentation via un diagramme. Richness en ordonnée, Reach en abscisse. Optimum = + riche et + connu.
Croissance de Drupal = Montée en puissance dans ce diagramme. De en bas à gauche à en haut à droite. Réinventé à chaque release. Comparaison avec d’autres outils dont les outils en partie en SaaS comme WordPress qui aident à accélérer leur audience mais avec une richesse fonctionnelle plus limitée sont orientés Editorial Expérience. Les frameworks et les petits nouveaux comme Prismic.io ou Contentful sont orientés Developer Experience là où les outils payants tels que Sitecore ou Adobe Experience Manager sont des outils orientés Customer Experience.
On peut imaginer que Drupal est à la croisée de tous ces chemins d’une certaine manière et nous devrions apprendre de ces outils.

Un sondage a été lancé à la communauté pour mesurer les attentes de ses membres. Grosses et petites boites, des novices et des experts, des devs, des chefs de projet, etc.
Quelle profil privilégier lorsque des choix doivent être faits pour le produit ?
Rédacteurs 46%
Site Builders 29%
Développeurs Back 13%
Développeurs Front 12%

À la question des sujets à gérer en priorité les rédacteurs de contenu sont représentatifs de l’avis de tous les profils ayant participé au sondage.
Les priorités sont :
Intégration plus riche des images et médias 24%
DAM (Digital Asset Management) 21%
Flux d’approbation des contenus (17%)
Prévisualisation et préconfiguration du site à l’avance 14%
Edition collaborative en temps réel 12%
Partage de contenu entre sites 12%

Proposition de la gestion d’initiatives pour 8.x. Réagir aux envies de la communauté, proposer une vision dans l’expérience d’édition de contenu. Objectif construire la meilleure plateforme pour assembler les meilleurs expériences numériques. Ecoute du marché et collaboration en échange avec ceux qui font Drupal.

Une initiative donne lieu à une avancée dans Drupal, est un lien entre le sondage, les données, la vision et le marché, elle nécessite des ressources dédiées et une collaboration entre les acteurs importants. Une initiative peut ensuite être proposée et un plan de bataille créé pour la créer.

Proposition > Planned > Active. Attention à la fragmentation. Les initiatives peuvent venir de Dries mais aussi de n’importe qui. Le processus est en cours de définition.

Suggestions d’initiatives.

Media initiative, depuis le WYSIWYG, possibilité d’intégrer des médias facilement par un drag & drop, de sélectionner depuis une librairie, etc.

Workflow initiative, outils pour préparer un site avant qu’il ne soit mis en ligne. Une équipe bosse sur ce sujet. d.o/2721129

Migration initiative, en cours, toujours pas terminée.

Blocks & layout initiative, permettre aux site builders de construire les pages plus facilement.

Modèle de données initiative, faciliter la création de contenus. Au lieu d’avoir des briques de très bas niveau, proposer d’utiliser des composants de plus haut niveaux pré-assemblée avec des couches plus basses (champs, types de contenus, liens entre les éléments). Exemple de type de contenu prédéfinis : événements avec un lien vers un lieu, des participants, des speakers, etc.

API First initiative, unification des moduels pour le REST dans core. Permettre des expériences de non site avec Drupal.

Theme compoenent library initiative, plus simple de réutiliser des éléments. Organismes / Molécules / Atomes.

DX 25% + EX 75%.

CX = cross channel. Achat sur un site ecommerce, réception d’un mail de confirmation, réception d’un texto pour l’expédition. = Expérience d’achat.
IoT = chaussure connectées, push sur tél pour informées qu’elles commencent à s’abîmer et achat depuis l’app. Expérience sans « web ». Pas d’utilisation d’un navigateur.

La création d’expériences clients pour les marques peut permettre de s’affranchir des revendeurs et des intermédiaires.
Contextualisation, en analysant les données des clients et le contenu on peut proposer la meilleure expérience client selon le contexte disponible.

Tendances :

D’un site pour trouver des restaus <creepy video avec alexa>.

Démo d’une nouvelle expérience mobile et comment elle pourrait être construite selon le contexte.

Par kgaut
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...

Pages