Planète

Par Iloofo
Iloofo

Les tests sous Drupal 8 - PHPUnit

Drupal 7 utilisait auparavant Simpletest, solution propre à Drupal pour l'écriture de ses tests.

Désormais, Drupal 8 utilise PHPUnit.

Il y a quelque temps, nous sommes intervenus pour mener une formation à l'écriture de tests sous Drupal 8. La présentation réalisée à cet effet en pièce jointe expose :

Les différents types de tests
Les outils de testing sous Drupal 8
La structure d'un test
Comment configurer PHPStorm et PHPUnit

Par kgaut
Kevin Gautreau

Drupal 8 - Menu - Ajouter une classe à un élément de menu

Voici comment ajouter une classe css à un élément de menu défini dans un module.

mon_module.links.menu.yml

main.abonnez:  title: 'Abonnez-vous'  route_name: entity.node.canonical  route_parameters: { node: 6 }  menu_name: main  weight: 4  options:    attributes:      class:        - 'arrow'

la clé class étant un tableau, il est évidement possible d'ajouter autant de classes css que l'on veut.

Voir aussi :  Drupal 8 - Menu - Ajouter un élément de menu avec des paramètres GET

Par kgaut
Kevin Gautreau

Drupal 8 - Type d'entité personnalisé - supprimer un « basefield »

Voici comment supprimer le basefield « mon_champ_a_suppr » de mon type d'entité personnalisé « mon_type_entite ».

/** * Delete basefield mon_type_entite.mon_champ_a_suppr */function monmodule_update_8020() {  $update_manager = Drupal::service('entity.definition_update_manager');  $definition = $update_manager->getFieldStorageDefinition('mon_champ_a_suppr', 'mon_type_entite');  $update_manager->uninstallFieldStorageDefinition($definition);  return t('mon_type_entite : mon_champ_a_suppr was uninstalled');}

Lancez les mises à jours de base de données de drupal (drush updb par exemple) et hop, votre champ sera supprimé de votre base de données, évidement si votre type d'entité avait des enregistrements, les données concernants le champ supprimé seront perdues.

Certains diront qu'il est possible d'utiliser la commande drush entup, mais le mécanisme n'est plus présent depuis drupal 8.7. (mais si vraiment vous en avez besoin, vous pouvez regarder du côté du module Devel Entity Updates, à n'installer qu'en connaissance de cause !

Convertir une entité de contenu pour la rendre traduisible avec Drupal 8

Jusque Drupal 8.7, nous disposions d'une commande drush fort bien utile pour le développement d'entités de contenu, et les mettre à jour au fur et à mesure de leur évolution avec le projet. Cette commande, drush entup ou drush entity-updates, nous permettait de mettre à jour la définition des entités et/ou de leur champs.

Par Iloofo
Iloofo

L'Equipe.tech sera présente à la DrupalCon Amsterdam 2019

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

Commerce et Marketing
DevOps et Infrastructure
Drupal et Backend

Drupal et Frontend
La Communauté Drupal et Être humain
Entreprise

Après une courte absence, relayée par la Drupal Europe en 2018, c'est le retour des DrupalCon en Europe. Pour sa reprise, la DrupalCon aura lieu à Amsterdam du 28 au 31 octobre 2019.

Par Iloofo
Iloofo

L'Equipe.tech sera présente à la DrupalCon Amsterdam 2019

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

Commerce et Marketing
DevOps et Infrastructure
Drupal et Backend

Drupal et Frontend
La Communauté Drupal et Être humain
Entreprise

Après une courte absence, relayée par la Drupal Europe en 2018, c'est le retour des DrupalCon en Europe. Pour sa reprise, la DrupalCon aura lieu à Amsterdam du 28 au 31 octobre 2019.

Par Iloofo
Iloofo

L'Equipe.tech sera présente à la DrupalCon Amsterdam 2019

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

Commerce et Marketing
DevOps et Infrastructure
Drupal et Backend

Drupal et Frontend
La Communauté Drupal et Être humain
Entreprise

Après une courte absence, relayée par la Drupal Europe en 2018, c'est le retour des DrupalCon en Europe. Pour sa reprise, la DrupalCon aura lieu à Amsterdam du 28 au 31 octobre 2019.

Par Iloofo
Iloofo

Iloofo sera présente à la DrupalCon Amsterdam 2019

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

Commerce et Marketing
DevOps et Infrastructure
Drupal et Backend

Drupal et Frontend
La Communauté Drupal et Être humain
Entreprise

Après une courte absence, relayée par la Drupal Europe en 2018, c'est le retour des DrupalCon en Europe. Pour sa reprise, la DrupalCon aura lieu à Amsterdam du 28 au 31 octobre 2019.

Par kgaut
Kevin Gautreau

Drupal 8 - Ajouter un champ « alias d'url » (path) à un type d'entité personnalisé

Pour un type d'entité personnalisé, les alias peuvent se gérer à l'aide de motifs via le module pathauto.

Mais à l'instar des nœuds, parfois nous voulons pouvoir avoir la main sur l'alias directement.

Pour cela on peut ajouter un computed field à notre type d'entité afin de laisser la main au créateur du contenu de décider de l'alias.

Dans la méthode baseFieldDefinitions de notre type d'entité :

$fields['path'] = BaseFieldDefinition::create('path')  ->setLabel(t('URL alias'))  ->setDisplayConfigurable('form', TRUE)  ->setComputed(TRUE);

Ensuite il faut aller configurer l'affichage du formulaire afin d'ajouter ce champ :

Path Drupal 8

 

Par Mixalis44
Mickael Zafiriou
Développeur Drupal depuis 2013.

Modifier la barre de progression Ajax de Drupal 8

Lorsque l'on utilise l'Ajax API de Drupal 8, on peut être amené à modifier/remplacer le loader qui s'affiche lorsqu'une requête est en cours d'exécution. Pour personnaliser cette barre de progression, cette article présentera les étapes et les différents bouts de codes nécessaires à cette fonctionnalité.

Par Mixalis44
Mickael Zafiriou
Développeur Drupal depuis 2013.

Modifier la barre de progression Ajax de Drupal 8

Lorsque l'on utilise l'Ajax API de Drupal 8, on peut être amené à modifier/remplacer le loader qui s'affiche lorsqu'une requête est en cours d'exécution. Pour personnaliser cette barre de progression, cette article présentera les étapes et les différents bouts de codes nécessaires à cette fonctionnalité.

Permettre aux visiteurs d'être notifié d'une nouvelle variation de produit avec Drupal commerce 2

Pour les sites e-commerce proposant des formations ou encore des événements, une fonction extrêmement intéressante est de proposer aux visiteurs de s'abonner sur la formation ou l'événement en question afin d'être notifié dès qu'une nouvelle session, une nouvelle date, est disponible. C'est l'objectif principal du module Commerce Product Reminder, que nous allons découvrir ici.

Par kgaut
Kevin Gautreau

Drupal 8 - Créer une page d'administration « overview » avec tous les sous-menus

Sur un site drupal 8, j'ai pour habitude de créer un élément de menu spécifique dans la barre d'administration qui comprend toutes les parties un peu métier du site.

La plupart du temps cette route renvoie vers une méthode « dashboard » d'un AdminController qui au mieux affiche quelques informations.

Voici comment transformer cette route, en listes des sous-menus, à la manière de la page « Configuration ».

Dans mon_module.routing.yml :

mon_module.admin.dashboard:  path: '/admin/mon_module/dashboard'  defaults:    _controller: '\Drupal\system\Controller\SystemController::overview'    link_id: 'mon_module.admin.dashboard'    _title: 'dashboard'  requirements:    _permission: 'access mon_module dashboard'

et voila le résultat :

Dashboard Overview

Pour information, voici comment ajouter cette route à la barre d'administration (dans mon cas en première place) :

dans le fichier mon_module.links.menu.yml :

mon_module.admin.dashboard:  title: 'Mon Module'  route_name: mon_module.admin.dashboard  description: 'Mon Module dashboard'  parent: system.admin  weight: -20

 

Par kgaut
Kevin Gautreau

Premier regard sur Claro, le futur thème d'administration de drupal 8 et 9

Le thème d'administration de drupal 8 est seven, comme son nom l'indique il date de la version 7 de drupal, en 2011. Il a reçu un petit coup de brosse lors de la sortie de drupal 8 améliorant entres autre les aspects « responsives » du thème.

Un nouveau thème d'administration « Claro » devrait faire son apparition dans la version 8.8 de drupal (prévue pour le 4 décembre 2019). Ce thème sera en mode « expérimental », désactivé par défaut, et il sera mentionné, qu'il est là à des fins de tests uniquement.

Mais on peut dès maintenant tester ce thème sur des version antérieures de drupal 8 et remonter les soucis que l'on rencontre.

Rien de bien révolutionnaire, un thème plus aéré, un peu plus clair, une augmentation des contrastes pour l'accessibilité. Une amélioration du rendu sur petits écrans.

 

Écran de rédaction de contenu :

En responsive :

C'est un bon début ! Le thème est un peu trop lumineux pour mes yeux fragiles de développeurs qui préfère les thèmes sombres.

J'ai pour habitude d'utiliser le thème adminimal pour l'administration, on verra ce que donne l'évolution de Claro.

Pour installer claro via composer :

composer require drupal/claro

Pour suivre la liste des taches pour stabiliser claro afin qu'il arrive dans le core de drupal : https://www.drupal.org/project/drupal/issues/3066007

La page du thème sur drupal.org : https://www.drupal.org/project/claro

 

Par KarimB
Karim Boudjema
Je suis Karim Boudjema ou KarimB en ligne. Je suis belge, développeur Drupal et aussi administrateur d'entreprises. Je vis pour l'instant à Cochabamba, en Bolivie. Quand j'ai découvert Drupal 4.7 en 2008 (et oui… il y a 10 ans), j'ai tout suite senti que ce serait un changement important dans le monde du développement web. Et ce fut le cas!

Le piège du cache tag 'node_list' dans les views de Drupal8

Le cache tag node_list est géneré automatiquement lorsque nous créons une vue qui liste des entititées de type node sous Drupal 8. Ce cache tag va invalider le cache de toutes les vues qui listent n'importe quel sorte de nodes quand nous réalisons une opération CUD (create, update, delete) sur des nodes.

A première vue cela semble une excellente stratégie d'invalidation du cache vu que lorsque nous modifions un node lors d'une opération CUD, le cache de toutes les vues qui affichent des nodes sera invalidé pour pouvoir montrer la dernière modification.
(pour voir les cache tags dans votre header, habilitez votre settings.local.php)

Par kgaut
Kevin Gautreau

Drupal 8 et composer, résoudre le problème « Package type "drupal-console-library" is not supported »

Sur des projets j'ai depuis quelques jours, lors d'un composer install, l'erreur suivante arrive :

Package type "drupal-console-library" is not supported

Pas encore eu le temps de creuser la cause, mais une solution que j'ai trouvé est d'ajouter la gestion des « drupal-console-library » dans la section installer-paths de mon fichier composer.json en ajoutant la ligne suivante :

  1. "vendor/drupal/{$name}": ["type:drupal-console-library"],

Voici la section en entier :

  1. "installer-paths": {
  2. "web/core": ["type:drupal-core"],
  3. "vendor/drupal/{$name}": ["type:drupal-console-library"],
  4. "web/libraries/{$name}": ["type:drupal-library"],
  5. "web/modules/_contrib/{$name}": ["type:drupal-module"],
  6. "web/profiles/_contrib/{$name}": ["type:drupal-profile"],
  7. "web/themes/_contrib/{$name}": ["type:drupal-theme"],
  8. "drush/_contrib/{$name}": ["type:drupal-drush"]
  9. }

Si quelqu'un a une idée de la raison, je suis preneur !

Recevoir un journal d'activité par mail avec le module Drupal 8 entity Activity

Dans un précédent billet j'ai eu l'occasion de présenter le module Entity Activity qui nous permet de mettre en place un système de notification sur tout type d'entité de contenu de Drupal 8, selon les 3 principales actions de leur cycle de vie : création, mise à jour et suppression. Depuis la version bêta 8, le module Entity Activity intègre un sous-module, Entity Activity Mail, qui nous permet désormais d'envoyer par mail un résumé des notifications générées pour chaque utilisateur, selon une fréquence qui est paramétrable par chaque utilisateur. Découvrons cette nouvelle fonctionnalité.

Pages