Planète

Par admin

Drupal 8.6.0 est disponible !

Washington D.C., le 5 Septembre 2018 - La communauté Drupal vient d’annoncer une mise à niveau majeure de Drupal 8. Cette mise à niveau offre une meilleure expérience, faisant de son utilisateur un héros au travail. De l'installation simplifiée et des mises à niveau plus stables pour les équipes techniques jusqu’à l'amélioration de l'expérience utilisateur pour les équipes marketing et de rédaction, Drupal 8.6.0 apporte des améliorations significatives par rapport à toutes les versions antérieures de Drupal.

Une nouvelle démonstration est incluse dans cette version afin d’inspirer les créateurs de sites par des exemples à l’état de l’art. De plus, les équipes marketing peuvent facilement publier du contenu complexe à l’aide des nouvelles fonctionnalités de l’éditeur de contenu, notamment: une meilleure prise en charge des vidéos, une nouvelle bibliothèque multimédia, et une notion d’espaces de travail qui permet des circuits de validation avancés. Comme pour toute mise à jour fonctionnelles majeures, les utilisateurs découvriront également de nombreuses corrections et améliorations globales.

Megan Sanicki, directrice exécutive de la Drupal Association, a déclaré: “Drupal 8.6 est une mise à jour importante en raison de l’accent mis sur la facilité d'utilisation. Cette version renforce l'expérience utilisateur, facilitant ainsi la migration à partir d'anciennes versions, sa mise en œuvre, mais également la capacité des équipes marketing à obtenir plus rapidement des résultats significatifs. Avec une communauté fortement mobilisée qui se concentre sur la réalisation de fonctionnalités qui valorisent les utilisateurs, je suis ravi de cette version et de ce qui est à l'horizon pour Drupal.”

Alors, quoi de neuf dans Drupal 8.6.0?

Un des formidables aspects de Drupal 8.6.0 est que la prise en charge de la migration est grandement améliorée et cela facilite la migration de Drupal 6 et 7 vers Drupal 8. Dans cette version les modules Drupal “Migrate” (migration depuis les précédentes versions majeures de Drupal) et “Migrate UI” (interface utilisateur de mise à niveau) fournissent une solution pour mettre à jour les sites plus anciens. Cela signifie que si vous avez un site monolingue en Drupal 6 ou 7, vous pouvez désormais utiliser une interface utilisateur officielle et intégrée pour migrer votre site vers Drupal 8. Les migrations multilingues similaires sont encore expérimentales mais maintenant intégrées au module “Migrate Drupal Multilingual”.

Autre nouveauté de cette version, l’intégration stable de la prise en charge de médias distants, préconfigurée pour les vidéos YouTube et Vimeo. De plus, dans un nouveau module expérimental, vous pouvez désormais parcourir les médias existants et en ajouter de nouveaux en utilisant un widget dédié. La médiathèque peut être personnalisée en fonction des besoins de l’utilisateur.

Les fonctionnalités “layout” (gestion des gabarits) de Drupal 8.6.0 sont nettement améliorées. Le module expérimental “Layout Builder” est une avancée enthousiasmante pour les créateurs de sites car il prend en charge la personnalisation en fonction des affichages (par exemple: mode complet ou résultats de recherche). Plutôt que d'être limités par des champs empilés les uns en dessous des autres, les utilisateurs peuvent créer des gabarits avec des sections dynamiques, créant ainsi davantage d'opportunités pour des mises en page personnalisées. Il est également possible maintenant d'ajouter du contenu propre à un gabarit spécifique. Ceci est utile pour des éléments tels qu’une promotion qui ne doit être visible que dans une seule landing page.

Drupal 8.6.0 propose également un nouveau profil de démonstration et un nouveau thème dans son processus d’installation. Ceci est particulièrement intéressant pour les personnes qui veulent évaluer le CMS et les agences de développement car il offre un moyen plus facile de voir ce qui est possible avec Drupal 8. La démonstration “magazine de cuisine”, Umami, est une belle et moderne démonstration des capacités de Drupal, qui utilise un site imaginaire dédié à la nourriture pour présenter sa puissance en termes de modèle de données, de remontée de contenus, de gestion des gabarits et de modération. Des utilisateurs tests sont créés, avec des profils auteurs et éditeurs de magazines, pour expérimenter différents aspects de l’utilisation de l’interface de gestion de contenu de Drupal.

Tiffany Farriss, CEO de l'agence digitale Palantir.net, déclare: “Drupal dispose de puissantes capacités. Pendant trop longtemps, celles-ci ont été cachées dans les coulisses, où seuls les utilisateurs expérimentés ou techniques pouvaient en faire l'expérience. Nous sommes ravis d'avoir maintenant Umami, pour montrer, dès son installation, la force et le potentiel de Drupal aux utilisateurs techniques et fonctionnels.”

Drupal 8.6.0 propose également un nouveau module expérimental dédié aux espaces de travail qui sont essentiels lorsqu’il faut valider de grandes quantités de contenu. Les fonctionnalités existantes de modération de contenu étaient idéales lorsque vous deviez faire passer à des éléments de contenu individuels un circuit de modification et de validation. Le nouveau module expérimental “Workspaces” permettra de valider des lots de contenu en une seule fois, avec la possibilité de définir plusieurs espaces de travail, d'y apporter des modifications et d’effectuer des déploiements de l’un à l’autre avec une interface utilisateur intuitive.

Consciente de la nécessité de communications ultra-rapides au sein de son organisation, Alimentation Couche-Tard a consolidé plusieurs de ses systèmes historiques pour créer un seul intranet mondial permettant de connecter ses effectifs. Appelé “Inner Circle”, le nouvel intranet fournit une plate-forme puissante pour partager des informations et gérer les opérations dans toute l'entreprise, tout en créant des synergies et des gains d'efficacité à l'échelle de l'organisation pour plus de 100 000 employés. Il tire parti des capacités de création de contenu, de gestion des cycles de vie documentaires et de multilinguisme de Drupal 8 pour créer un forum à la fois super-local et super-mondial.
“Couche-Tard peut agréger toutes les connaissances, le contenu et les ressources de l'organisation en un seul endroit, puis les filtrer pour offrir une expérience hautement personnalisée à chaque employé ou intervenant, en fonction de son rôle, de sa localisation et de sa langue”, a déclaré Marie- Noëlle Cano, directrice senior des communications globales chez Alimentation Couche-Tard. "Couche-Tard a amélioré le périmètre, la vitesse et la densité de sa communication interne avec Drupal 8 tout en réduisant les coûts.”

La communauté Drupal a travaillé dur pour faciliter considérablement la mise à disposition d’un environnement d’évaluation ou de développement; les nombreuses améliorations techniques permettent une installation rapide qui aboutit à l’ouverture d’une plateforme prête à l'emploi dans le navigateur. Le programme d'installation reconnaît désormais également une configuration existante et fournit une option permettant de reconstruire facilement un site à partir de cette configuration existante, en extrayant le contenu du cloud plutôt que d'exiger que le contenu soit stocké localement.

“Cette mise à jour est pleine de nouvelles fonctionnalités fascinantes qui montrent que Drupal est la plate-forme incontournable pour des expériences digitales ambitieuses. Au nom de la Drupal Association et de la communauté Drupal, je souhaite remercier tous ceux qui ont contribué à Drupal 8.6.0”, a déclaré Sanicki.

À propos de Drupal
Drupal est un logiciel de gestion de contenu. Il est utilisé pour créer de nombreux sites et applications Web que vous utilisez chaque jour. Drupal dispose d'excellentes fonctionnalités standard, d'une gestion de contenu simple, de performances fiables et d'une excellente sécurité. Ce qui le distingue, c'est sa flexibilité; la modularité est l'un de ses principes fondamentaux. Ses outils vous aident à créer le contenu polyvalent et structuré dont les expériences Web ambitieuses ont besoin.

À propos de la Drupal Association
La Drupal Association se consacre à la promotion et au soutien du projet Drupal, de sa communauté et de sa croissance. La Drupal Association aide la communauté Drupal en matière de financement, d'infrastructure, de formation, de promotion, de distribution et de collaboration en ligne sur Drupal.org.

#

Plus d’informations sur Drupal 8.6.0
Tim Lehnen, Director of Engineering, Drupal Association: tim@association.drupal.org

En page d'accueil : 
Version de Drupal : 

Ajouter des résultats à une recherche effectuée avec Search API et ElasticSearch sur Drupal 8

Lors de recherches effectuées sur les contenus d'un site Drupal 8, il peut parfois être utile de pouvoir rajouter certains contenus aux résultats déjà obtenus, et ceci en fonction de ces résultats. Cela peut être du contenu qu'on souhaite mettre en avant quelque soit la recherche, ou faire remonter des landing page génériques qui servent et complètent les contenus trouvés ou encore les auteurs des contenus issus des résultats de la recherche.

Par Christophe MOLLET
Christophe Mollet

Drupal Camp

La Drupal Camp est une occasion d'apprendre, partager ses idées et de rencontrer les différents acteurs de la communauté Drupal. Vous souhaitez connaître les dates ?

Par Christophe MOLLET
Christophe Mollet

Drupal

Vous souhaitez prendre connaissance des raisons pour lesquelles Drupal est recommandé par sa communauté ?

Par Christophe MOLLET
Christophe Mollet

Drupal 8

Drupal 8 vient d'être enfin dévoilé. Découvrez toutes les nouveautés de cette nouvelle version.

Par LaboRouge

Supprimer le titre pour certain type de contenu

Il peut être utile dans certains cas de supprimer l'affichage du titre sur des types de contenu.

Mais pour quelles raisons aurais-je besoin de faire ça ?

Dans Drupal, l'affichage du titre du contenu se fait en dehors du "node". C'est-à-dire que le titre sera forcément à un niveau supérieur par rapport au contenu et donc complètement détaché de celui-ci. Si l'on décortique les fichiers de template d'un thème, nous devrions trouver ce bout de code dans un fichier nommé page.tpl.php.


Drupal 7


Theme

Par LaboRouge

Drupal 7 : supprimer le titre pour certains types de contenu

Il peut être utile dans certains cas de supprimer l'affichage du titre sur des types de contenu.

Mais pour quelles raisons aurais-je besoin de faire ça ?

Dans Drupal, l'affichage du titre du contenu se fait en dehors du "node". C'est-à-dire que le titre sera forcément à un niveau supérieur par rapport au contenu et donc complètement détaché de celui-ci. Si l'on décortique les fichiers de template d'un thème, nous devrions trouver ce bout de code dans un fichier nommé page.tpl.php.


Drupal 7


Theme

Par liber_t
Ines WALLON

Astuce pour optimiser Composer dans vos containers Docker

Lorsque vous lancé Composer celui ci va télécharger la liste des packages au format JSON pour les stocker dans un dossier de cache.

Quand vous lancé votre container celui ci est vide, donc vous perdez 30s à chaque fois que vous le lancer.

L'idée ici est d'aller chercher votre dossier de cache local pour le monter sous forme de volume

Par Artusamak
Julien Dubois

Drupal 8 : déclarer un champ extrafield calculé (computed field)

Drupal 8 : déclarer un champ extrafield calculé (computed field)
admin
lun 13/08/2018 - 07:25

Lorsque vous devez insérer un champ sur une entité mais que cette donnée est calculée et n'est pas saisie par l'utilisateur, vous avez le réflexe de penser à un extra field.

Corps

Lorsque vous devez insérer un champ sur une entité mais que cette donnée est calculée et n'est pas saisie par l'utilisateur, vous avez le réflexe de penser à un extra field. C'est un bon début mais pour appliquer un formateur de champ, vous serez limités car cela n'est pas possible ! Fort heureusement, une solution a été introduite dans Drupal 8, il s'agit des computed fields.

Comment cela fonctionne-t-il ?

Au lieu d'utiliser le hook_entity_extra_field_info(), vous allez cette fois déclarer un hook_entity_bundle_field_info() et allez déclarer un base field auquel vous direz qu'il est calculé et indiquerez la classe qui fournie ses données. Avec du code c'est plus simple :

/**
* Implements hook_entity_bundle_field_info().
*/
function hc_core_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  $fields = [];
  if ($entity_type->id() == 'node') {
    if ($bundle == 'blog') {
      $fields['blog_related_posts'] = BaseFieldDefinition::create('entity_reference')
        ->setLabel(t('Related posts'))
        ->setComputed(TRUE)
        ->setClass('\Drupal\hc_core\BlogRelatedPostsComputed')
        ->setDisplayConfigurable('view', TRUE);
    }
  }
  return $fields;
}

Avec ce code, si vous videz les caches, vous verrez apparaître dans la gestion de l'affichage de votre entité ce nouveau champ auquel vous pourrez appliquer les formateurs pertinents. Cela dépendra du type de données que vous aurez sélectionné sur lequel il se basera.

Jetons maintenant un œil à la classe qui fournit les données sources du champ.

Pour faire les choses simplement, je vous conseille d'étendre la classe de liste du type de données de votre champ (dans mon exemple je m'appuierai sur EntityReferenceFieldItemList) et nous utiliserons le trait dédié aux champs calculés (computed fields). La classe retourne les NIDs des nœuds qui partagent les mêmes catégories que le nœud actuellement consulté.

<?php

namespace Drupal\hc_core;

use Drupal\Core\Field\EntityReferenceFieldItemList;
use Drupal\Core\TypedData\ComputedItemListTrait;

class BlogRelatedPostsComputed extends EntityReferenceFieldItemList {
  use ComputedItemListTrait;

  /**
   * Computed related blog posts.
   */
  protected function computeValue() {
    $delta = 0;

    // It's a bit tricky, authors are not UIDs but NIDs because we are looking
    // for humans and humans are nodes, not users.
    $blog_categories = $this->getParent()->getValue()->get('field_category')->getValue();
    $blog_nid = $this->getParent()->getValue()->id();

    if (count($blog_categories) > 0) {
      foreach ($blog_categories as $category) {
        $category_ids[] = $category['target_id'];
      }

      $q = \Drupal::entityQuery('node')
        ->condition('type', 'blog', '=')
        ->condition('field_category', $category_ids, 'IN')
        ->condition('status', NODE_PUBLISHED, '=')
        ->condition('nid', $blog_nid, '<>')
        ->range(0, 5)
        ->sort('created', 'DESC')
        ->execute();
      if ($q) {
        foreach ($q as $rev => $r) {
          $this->list[$delta] = $this->createItem($delta, $r);
          $delta++;
        }
      }
    }
  }
}

Grâce au trait, on se concentre uniquement sur la récupération des valeurs qui nous intéressent et on utilise $this->createItem() pour remplir la collection de valeurs de $this->list.

Vous pourrez ajouter à cela quelques tags pour optimiser le rendu de vos données et vous voilà prêts à exploiter la puissance des champs calculés et rendus grâce à des formateurs de champs ! Plutôt simple, non ?

Catégories
Développement
Drupal
Drupal 8
Tags
formateur
champ
computed field
Par kgaut
Kevin Gautreau

Drupal 8 - Créer la traduction d'une chaine de caractère dans le code

Dans un processus de déploiement, il est utile de gérer les traductions de chaînes de caractères dans le code, afin de pouvoir les déployer plus facilement.

Exemple avec cette fonction d'update à adapter en fonction de vos besoins :

  1. /**
  2.  * Création d'une traduction
  3.  */
  4. function mespronos_tweaks_update_8005() {
  5. $chaine = 'Forgotten password';
  6. $traduction = 'Mot de passe oublié';
  7. $storage = \Drupal::service('locale.storage');
  8. $string = $storage->findString(['source' => $chaine]);
  9. if ($string === NULL) {
  10. $string = new \Drupal\locale\SourceString();
  11. $string->setString($chaine);
  12. $string->setStorage($storage);
  13. $string->save();
  14. }
  15.  
  16. $translation = $storage->createTranslation(array(
  17. 'lid' => $string->lid,
  18. 'language' => 'fr',
  19. 'translation' => $traduction,
  20. ))->save();
  21. }

Pour un exemple réel, il sera plus pratique de passer par un tableau associatif (à deux dimensions si l'on veut importer plusieurs langues) qui sera parcouru par un ou deux foreach.

Par liber_t
Ines WALLON

Mise en place d'une architecture Docker + Drupal 8

Sa y est, j'ai enfin franchi le cap. j'ai migré tout mon site sur une architecture full Docker en dev, test et prod.

Je vais vous expliquer dans cet article, comment j'ai réussi à mettre tout ça en place

Par kgaut
Kevin Gautreau

Drupal 8 - Ajouter une restriction par ip sur une route

Dans le fichier MODULE.routing.yml on va utiliser le requirement « _custom_access »

  1. module.ma_methode:
  2.   path: 'mon-module/mon-chemin'
  3.   defaults:
  4.   _controller: '\Drupal\module\Controller\monController::maMethode'
  5.   requirements:
  6.   _custom_access: '\Drupal\module\Controller\monController::maMethodeAccess'

Que l'on va implémenter dans notre contrôleur, ici monController.php :

à noter : les ip autorisées sont stockées en configuration via un formulaire de config, les ip sont séparées par une virgule, d'où le explode.

  1. public function maMethodeAccess() {
  2. /** @var Request $request */
  3. $request = \Drupal::request();
  4. $ipAutorisees = explode(',', \Drupal::config('module.methode')->get('allowed_ips'));
  5. return AccessResult::allowedIf(\in_array($request->server->get('REMOTE_ADDR'), $ipAutorisees));
  6. }

 

Par LaboRouge

Audit de sécurité : 3 - Énumération des paiements

L'audit de sécurité a révélé une faille importante : l'énumération des paiements.

L'application de base

L'utilisateur procède à une commande sur notre site. Nous lui proposons un règlement par CB et le redirigeons vers la plateforme de paiement en ligne. Une fois le paiement effectué, un contenu (node) est créé afin de récupérer les données relatives à la commande et l'utilisateur est redirigé vers une page de notre site lui indiquant le bon déroulement de l'opération. Cette page comporte deux informations sensibles : l'email de l'utilisateur et le numéro de commande.


Sécurité


Drupal 7

Pages