Planète

Par Christophe MOLLET
Christophe Mollet

Quelles sont les nouveautés apportées par Drupal 9.5 ?

Drupal 9.5 est la nouvelle mise à jour de Drupal 9. Contenant la majorité des fonctionnalités de Drupal 10, cette nouvelle version permet de faire face aux perspectives annoncées par la communauté Drupal et s’inscrit dans une démarche d’offrir à ses utilisateurs plus de performance, de sécurité et de robustesse. 

Par Iloofo
Iloofo

Contribution : Module Lazy service, un peu plus de paresse dans votre Drupal

Comme il a été évoqué dans le billet de retour de la SymfonyCon, à chaque fois que j'ajoute une injection de dépendance pour un service qui ne sera utilisé qu'une fois au sein de mon service, de mon controller ou autre, ça me défrise.

Pourquoi ne peut-on pas simplement dire que l'on a besoin de ce service, mais qu'il ne soit chargé qu'à la demande ?

Puis j'assiste à la conférence Unleashing the power of lazy objects in PHP de Nicolas Grekas qui présente son travail fait sur le lazy loading des services. Ce qui défile dans ma tête à ce moment :

- Comment l'intégrer à Drupal ?

- Quand sera t'il intégré a Drupal ?

- Mince, ce qu'il présente n'est pas encore complètement publié... je ne suis pas prêt de le voir dans Drupal :(

Ça reste dans ma tête, ça tourne et re-tourne...

Et si ?

Je n'en peux plus, le concept n'est pas si compliqué après tout... J'ouvre le capot de mon Drupal...

Bon point

Bon point, on n'est pas en retard, Drupal dispose déjà de la possibilité de déclarer un service comme étant paresseux (lazy). Il faut simplement rajouter à la déclaration du service l'option "lazy: true" et générer son ProxyClass. On n'est pas à 100% aligné sur le fonctionnement simplifié de Symfony et de ses annotations, mais c'est pas si mal.

Il faut quand même lancer un script manuellement pour générer la classe ProxyClass dans le répertoire du module où se situe le service en question.

Mais pas en avance

On est donc au même état que Symfony actuellement. On sait déclarer un service en tant que "lazy", mais on ne peut pas, depuis un service, dire que l'on veut injecter, en lazy, un service qui n'était pas prévu pour l'être.

On est cuit alors ? Rendez-vous en 2030 ?

Si on devait forcément passer par une mise à jour du coeur de Drupal pour intégrer cette fonctionnalité, certainement !

Je suis mauvaise langue, une telle fonctionnalité pourrait certainement arriver plus tôt, mais dans quelle version de Drupal ? 10 ? 11 ?...

Sauf qu'on a de la chance, Drupal nous donne les leviers nécessaires pour faire ça sous forme de modules contrib. On va donc pouvoir proposer la fonctionnalité tranquillement sous forme de module communautaire, et en parallèle pousser la fonctionnalité dans le coeur.

Oui mais quand ?

Il reste encore du travail, mais le code est déjà disponible. Reste à l'améliorer, écrire les tests, la documentation, ouvrir le ticket pour intégration au coeur de Drupal etc.

En attendant, le module en tant que proof of concept existe, fonctionne sur les quelques tests effectués et va pouvoir faire avancer le sujet.

Ce que l'on doit faire en tant que développeur :

On déclare un service comme étant un service à charger en lazy en préfixant son nom lors de l'injection de dépendance par "lazy.". Exemple pour le service "messenger" : "lazy.messenger".

Ce que le module fait alors :

Le module vient modifier la liste des services pour générer à la volée si elle n'existe pas la proxyClass correspondante, et finit de déclarer correctement le service.

Je vous invite donc à jeter un oeil et participer, le module Lazy service pour Drupal c'est par là.

Par kgaut
Kevin Gautreau

Drupal - ajouter une action personnalisée dans une liste d'opérations sur des entités

Les liens d'opérations sont les liens contenus dans le menu déroulant sur les listing dans drupal

Image

Liens d'opérations

 Il est possible d'en ajouter via le hook HOOK_entity_operation_alter :
 

function mon_module_entity_operation_alter(array &$operations, EntityInterface $entity) {
  $entityTypeId = $entity->getEntityTypeId();
  if ($entityTypeId !== 'group') {
    return;
  }
  $link = \Drupal\Core\Url::fromRoute('mon_module.user_group_import', ['group' => $entity->id()]);
  $operations['import_members'] = array(
    'title' => t('Importer des membres'),
    'weight' => 20,
    'url' => $link,
  );
}

 

Par kgaut
Kevin Gautreau

Drupal 9 - ouvrir un lien dans une fenêtre modale

Dans drupal 9, via la librairie jquery UI Dialog, Il est possible très facilement d'ouvrir des pages dans des fenêtres modales (ou « popin », « Lightbox »...) Dans votre contrôleur :

# On attache la librairie nécessaire
$build['#attached']['library'][] = 'core/drupal.dialog';

# On défini notre lien
$build['link'] = [
  'title' => $this->t("Contacter l'annonceur"),
  'url' => \Drupal\Core\Url::fromRoute('ma_page'),
  'attributes' => [
    'class' => ['use-ajax'],
    'data-dialog-type' => 'modal',
    'data-dialog-options' => Json::encode([
      'width' => 400,
    ]),
  ],
];

 

Voir toutes les options qu'il est possible d'utiliser : https://jqueryui.com/dialog/#content

Pour faire la même chose directement dans un template twig :

{# on ajoute la librairie nécessaire #}
{{ attach_library('core/drupal.dialog')}}


{# Lien à ouvrir dans une modale #}
<a class="use-ajax" data-dialog-type="modal" data-dialog-options="{&quot;width&quot;:400}" href="{{ path('ma_page') }}">{{ "Contacter l'annonceur" }}</a>

 

Par kgaut
Kevin Gautreau

Drupal 9 - Désactiver un bloc pour une page spécifique

Drupal propose un mécanisme en backoffice pour contrôler l'affichage des blocs, mais il est nécessaire parfois de mettre en place une logique un peu plus complexe.

Ici nous allons masquer le block "pagetitleblock_content" de la région "header" quand on est sur un nœud de type « petite_annonce » via le hook HOOK_preprocess_page :

function petites_annonces_preprocess_page(&$vars) {
  if(($node = \Drupal::routeMatch()->getParameter('node')) && $node->bundle() === 'petite_annonce') {
    if (isset($vars['page']['header']['pagetitleblock_content'])) {
      unset($vars['page']['header']['pagetitleblock_content']);
    }
  }
}

 

Créer une méthode de livraison avec Drupal commerce 2

Drupal commerce fournit en standard plusieurs méthodes de livraison que nous pouvons conditionner selon différents critères (montant de la commande, profil client, type de commande, Poids de la commande, Type de produit, etc.). Pour des besoins spécifiques, nous pouvons ajouter une méthode de livraison sur mesure qui peut alors se charger d'effectuer les calculs nécessaires à la détermination du coût de la livraison.

Par Christophe MOLLET
Christophe Mollet

Comment réaliser un audit sous Drupal ?

Afin de garder votre site Drupal sécurisé et performant, nous vous recommandons d’effectuer régulièrement des audits techniques et fonctionnels. Dans cet article, nous vous expliquons en quoi cela consiste et vous présentons comment le mettre en place.

Par Iloofo
Iloofo

iLoofo sera présente à la DrupalCon Prague 2022

La DrupalCon est un événement organisé par la communauté Drupal qui regroupe des présentations selon différents axes :

Agence et Business
Etudes de cas et expériences clients
Faiseurs et batisseurs

Internet ouvert et Communauté
Utilisateurs et éditeurs

C'est la reprise en présentiel pour cet événement après les quelques années contraintes aux événements numériques.

Par LaboRouge

Twig : créer des suggestions de nom de template

Twig : créer des suggestions de nom de templateLaborouge
lun 05/09/2022 - 09:00

ampoule filament sur fond jaune
Lorsque l'on développe un thème "Front", il arrive que nous soyons confronté à certaines logiques d'intégration (structure, web design). et que les templates Twig fournies par défaut ne répondent pas à nos besoins.
Par Artusamak
Julien Dubois

Interview client - BABYZEN

Interview client - BABYZEN
stephanie@happyculture.coop
ven 26/08/2022 - 16:09

Découvrez comment le site internet de BABYZEN est devenu accessible partout dans le monde avec Happyculture et la mise en place du CMS Drupal. Merci encore à toute l'équipe pour cet entretien et pour ce beau projet !

Logo Babyzen
Corps

Depuis 2007, Babyzen propose des produits de puériculture innovants, durables et pratiques. Yoyo, sa célèbre poussette citadine ultra maniable, en a fait son succès.

Happyculture a été mandaté pour la refonte du site internet. Vous pouvez accéder ici à la présentation du projet et des principales fonctionnalités développées.

1/ Présentation et contexte du projet

Pouvez-vous vous présenter en une phrase (fonction et rôle sur le projet) ainsi que BABYZEN ? 

BABYZEN conçoit, fabrique et distribue les poussettes YOYO dans 85 pays. 
Marina Sokolowsky : "Je suis Brand Communication Manager et j’étais chef de projet sur la construction du site babyzen.com avec Happyculture".
Edouard Villeneuve : "J’ai piloté ce projet d’un point de vue IT en tant que DSI de BABYZEN".

Quelle était votre problématique web qui a nécessité une refonte ?

[Marina Sokolowsky et Edouard Villeneuve] La marque a connu une croissance rapide et notre site web originel ne correspondait plus à nos besoins. Notamment:

  • L’équipe Marketing manquait d’autonomie, et avait besoin de la mise en place d’un vrai CMS,
  • Les performances du site étaient mauvaises, notamment pour nos utilisateurs lointains, ce qui a demandé l’ajout d’un CDN. 

Quels étaient l'objectif et les enjeux de la mission ? 

[Marina Sokolowsky] Le projet concernait la refonte totale de notre site vitrine avec deux enjeux :

  • L’accessibilité partout dans le monde, 
  • 15 langues à mettre en place avec un back office qui permette de les gérer facilement. 

Quelle est la taille de l'équipe qui a suivi la réalisation du projet et le temps que vous y avez consacré ?

[Marina Sokolowsky] Nous étions tous les deux uniquement. La direction était bien sur très impliquée dans le projet dans les arbitrages fonctionnels. 

2/ Collaboration avec Happyculture 

Pourquoi avoir choisi Happyculture ? quels critères de choix ? Comment s’est déroulée la prise de décision ? 

[Edouard Villeneuve] En tant que DSI, j’avais déjà travaillé avec Happyculture (et pas mal d’autres prestataires web) dans ma vie antérieure.
Je connaissais donc Happyculture en tant qu’experts, avec une réputation bien établie pour des assistances ponctuelles. Je les ai contactés pour avoir des recommandations d’agence qui puissent prendre en compte le projet dans son intégralité. 
J’ai alors été surpris de voir qu’Happyculture savait se positionner pas seulement pour des expertises, mais également pour le projet entier de réalisation, avec des taux journaliers très compétitifs, en particulier quand on prend en compte la qualité de la réalisation et donc la productivité et l’absence de dette technique.
J’avais contacté deux autres sociétés qui nous ont moins convaincus, soit à cause de l’approche technique proposée qui était démesurée par rapport à notre typologie, soit à cause de la méthodologie projet pas assez agile et trop commerciale.

Comment s'est passée la collaboration et comment l'agence Happyculture a-t-elle répondu à votre problématique ? 

[Edouard Villeneuve] Une proposition a été rapidement établie par Happyculture, le projet lancé dans la foulée et ensuite une gestion agile des écarts nous a permis d’augmenter le périmètre tout en maitrisant l’impact budgétaire de ces changements. Nous avons ensuite mis en place une TMA pour assurer la maintenance corrective et évolutive. 

Comment se sont organisées la phase de cadrage puis de réalisation du site ? 

[Edouard Villeneuve] Le cadrage était simple puisqu’il s’agissait uniquement de refaire le site à iso-fonctionnalités en termes de périmètre mais simplement avec des nouvelles fonctionnalités côté back office (CMS + CDN). Lorsque nous avons souhaité finalement inclure des évolutions significatives en termes de structure et contenus du site, Happyculture a organisé des ateliers de définition du besoin puis a chiffré ces évolutions individuellement, ce qui nous a permis de maîtriser finement ce changement d’approche.

Comment avez-vous jugé la qualité de ce qui vous a été livré ? A-t-il fallu beaucoup de temps pour trouver les correctifs nécessaires avant mise en ligne ?

[Edouard Villeneuve] Ayant participé à un certain nombre de projets Web en tant que DSI et dans ma vie antérieure, et bien que connaissant la réputation d’Happyculture, j’ai été impressionné par le faible taux de défauts identifiés. Les correctifs ont alors été livrés rapidement, soit par nos interlocuteurs projets, soit par le reste de l’équipe Happyculture lorsqu’un problème a été rencontré en période de congés.

3/ Utilisation de Drupal

Vous n’utilisiez pas Drupal sur votre précédent site. Quels ont été les éléments qui vous ont incité à choisir ce CMS ?

[Edouard Villeneuve] L’utilisation de Drupal dans une expérience professionnelle antérieure mais récente me confortait sur le fait que c’était la bonne plateforme pour répondre à nos enjeux et difficultés. Les éléments particulièrement complexe (type traduction en 15 langues dont certaines lues de droite à gauche) ont été abordées lors de la consultation pour valider ce choix. 

Quel élément vous a le plus été utile dans ce qu'Happyculture a mis en œuvre dans votre projet ? Pourquoi ?

[Marina Sokolowsky et Edouard Villeneuve] Plusieurs éléments utiles ont été mis en oeuvre :

  • Un CDN a été mis en place pour répartir la distribution du site partout dans le monde. La performance du site a été améliorée et le temps de réponse est à peu près identique partout dans le monde,
  • L’édition de contenu par composants permet de constituer des pages du site de manière éditoriale avec plus de liberté tout en respectant la charte et les enjeux marketing de BABYZEN,
  • Le site a été traduit en 15 langues. Cette traduction se fait en autonomie (non statique) et certains contenus ont pu être personnalisés selon le pays. Cette pré-orientation se fait grâce à la détection automatique du pays du visiteur,
  • L’alimentation de la plupart des contenus a été facilitée grâce aux imports,
  • Le Store locator met à disposition l’emplacement des 3 500 revendeurs physiques dans le monde avec recherche par adresse et géolocalisation.

3/ Pour conclure 

Etes-vous globalement satisfaits de ce projet ? Pourquoi ?

[Edouard Villeneuve] Très satisfaits, le sérieux et la disponibilité d’Edouard Cunibil chez Happyculture ont été clés dans le succès du projet. La qualité des développements ont aussi été un critère majeur pour nous assurer de la bonne vie du site et de la capacité d’intégrer des évolutions de manière agile et indolore. Enfin, lorsque plusieurs approches techniques étaient possibles, Edouard a été particulièrement pédagogue pour nos les présenter avec les avantages et inconvénients de chacune, afin de faire un choix éclairé. 

Au terme de plusieurs années d'exploitation de votre site, diriez-vous que vos objectifs ont été atteints ? Comment ?

[Marina Sokolowsky] Nos objectifs ont été atteints. Après 18 mois, ce site inclut 15 langues, ce qui a été fait très facilement et n’avons plus aucun problème d’accessibilité, partout dans le monde.

Recommanderiez-vous Happyculture à un pair et pourquoi ? 

[Marina Sokolowsky] Tout à fait. Le fait d’avoir une seule personne en contact a été précieux tout au long du projet, Edouard connaissait parfaitement nos problématiques et pouvait y apporter des réponses rapides.

 

En savoir plus sur le projet Babyzen ? Accédez ici à la présentation du projet et des principales fonctionnalités développées.

Catégories
Développement
Drupal
Drupal 9
Méthodes agiles
Tags
refonte de site web
CMS
CDN
accessibilité
multilingue
Référence client

Pages