Planète

Par Christophe MOLLET
Christophe Mollet

Quelques sites internet créés sous Drupal

Si vous avez comme projet de créer un site internet pour votre activité, il faut savoir que le choix du CMS a un impact direct sur ce que vous souhaitez faire. En effet, il est important d’avoir à l’esprit que l’on ne choisit pas un CMS par hasard, mais parce qu’il correspond au besoin envisagé. Ici, nous allons vous parler de Drupal, un CMS open-source à la fois puissant et flexible.

Par Christophe MOLLET
Christophe Mollet

Installer Drupal 9 avec Composer

Si vous vous lancez dans la création de site web personnalisé, et souhaitez posséder d'un processus de création le plus professionnel possible, notre agence web vous recommande d'installer Drupal avec Composer. Cela vous permettra entre autres d'avoir le contrôle sur le versionning de la base de données et des extensions contrib de Drupal. Afin de vous accompagner au mieux dans votre projet web, un de nos experts Drupal vous a préparé un tutoriel.

Par Christophe MOLLET
Christophe Mollet

Configuration d'un flux RSS sur Drupal

Un flux RSS regroupe l’ensemble des actualités (articles de blog, informations provenant de différents sites web, …) provenant de différentes sources d’informations sur une seule et même plateforme. Un flux RSS permet ainsi aux internautes de consulter en temps réel les dernières actualités de votre site. ITSS vous explique dans cet article, en quoi cela consiste, et vous propose son tutoriel pour aider les entreprises à mettre en place un flux RSS sur leur propre site internet Drupal.

Par Christophe MOLLET
Christophe Mollet

Synchronisation configuration Drupal

Le système de configuration de Drupal 9 stock l’ensemble des informations du site (blocks, vues, types de champs et de contenus, taxonomie…) sans inclure les données (contenu des blocks, terme de taxonomie, valeur des champs, ...). Dans Drupal 7 le système de configuration était stockée dans la base de données, ce qui rendait difficile le transfert d’une copie du site, en particulier si des modules (extensions) modifiaient la configuration.

Par Christophe MOLLET
Christophe Mollet

Les nouveautés de la version 9.1 de Drupal

Drupal est l’un des meilleurs systèmes de gestion de contenu libre open-source. En effet, ce CMS est notamment connu pour ses fonctionnalités importantes, telles que la fiabilité, la flexibilité, l’évolutivité, ou encore la performance. Lancé sur le marché en 2000, Drupal comprend plusieurs versions à son actif : Drupal 7, 8 et 9.

Par Christophe MOLLET
Christophe Mollet

Choisir son CMS pour un projet web

Lorsque l'on souhaite réaliser un projet web, il n'est pas toujours facile de choisir le CMS le plus adapté à votre besoin. Pour vous aider à y voir plus clair pour votre projet, notre agence web vous explique les technologies web en détails.

Bien que nos gènes viennent et resterons dans le web, la barrière entre les applications mobiles et les sites web est de plus en plus flou. Technologie front, back, CMS, application native, hybride, PWA, on est vite perdu lorsque nous devons choisir une technologie ou la raison pour laquelle nous choisissons cette technologie.

Par Christophe MOLLET
Christophe Mollet

Les nouveautés de la version 9 de Drupal

Construite et basée sur la version 8 de Drupal, la nouvelle version 9 de Drupal a été dévoilé au grand public en juin dernier. Une interface qui garantie une meilleure accessibilité, plus de stabilité et sécurité. Afin de vous aider à faire le bon choix pour votre site internet, nous vous expliquons toutes les nouveautés de cette nouvelle version.

Par Christophe MOLLET
Christophe Mollet

Comment créer un module avec Drupal 8 ?

Un module est un ensemble de fichiers PHP, Javascript et/ou CSS qui étendent les fonctionnalités du site et en ajoutent de nouvelles

Nous allons voir dans cet article comment créer un module avec Drupal 8.

Par Christophe MOLLET
Christophe Mollet

Les fonctionnalités apportées par Drupal 9.2

Drupal est un CMS qui ne cesse d'évoluer afin de répondre aux besoins du marché. Pour se faire, Drupal met à jour régulièrement ses versions, toujours plus performantes et sécurisantes les unes que les autres. La dernière mise à jour prévue est la sortie de Drupal 9.2 pour ce mois-ci. Notre agence web vous dévoile dans cet article toutes les modifications que pourra apporter cette nouvelle version sur votre site internet.

Par FMB
Philippe Mané

Exploiter les données de biodiversité en PHP et avec Drupal grâce à la bibliothèque PHP GBIF

Exploiter les données de biodiversité en PHP et avec Drupal grâce à la bibliothèque PHP GBIF

Le projet Musa in situ, mené conjointement par le CIRAD et Bioversity, recueille des données sur les Musacées1 de par le monde, en conditions naturelles ou s'en approchant. L'objectif principal est d'obtenir une image la plus précise possible de la diversité géographique naturelle des Musacées. Il s'appuyait initialement sur un projet sur iNaturalist, mais par la suite il s'est ouvert à d'autres sources de données, notamment le GBIF (Global Biodiversity Information Facility), qui a pour but de mettre à disposition toute l'information connue sur la biodiversité. En particulier, ces données sont accessibles à travers une interface REST.

Le GBIF permet un accès à ces données via une interface web qui utilise en interne cette interface REST. Cependant, dans le cadre du travail effectué pour MGIS, il était souhaitable de pouvoir interroger ces données directement depuis ce site, idéalement au moyen d'une vue, afin de choisir quelles données importer en base, et assurer une cohérence avec ce qui avait déjà été importé, ou ce que l'on s'interdit d'importer.

Il se trouve que le langage R dispose d'une mise en œuvre de référence, rgbif. Ce client constitue une abstraction permettant d'interroger la base du GBIF sans avoir à entrer dans le détail des requêtes à effectuer en service web. Il a été porté de manière plus ou moins exhaustive en Python (pygbif) et Ruby (gbifrb). Il faut désormais compter avec PHP GBIF, développé dans le cadre de ce projet. Notre espoir est que ce projet libre2 puisse être utile à d'autres acteurs souhaitant interagir avec ce catalogue central de la biodiversité mondiale.

L'installer est aussi simple qu'un composer require restelae/php-gbif. Cette bibliothèque requiert la version 7.2 de PHP ou toute version supérieure. Vous trouverez sur sa page d'accueil toutes les informations nécessaires à son utilisation, complétées par une documentation générée automatiquement avec Doxygen.

Nous avons également écrit un module pour Drupal3 s'appuyant sur cette bibliothèque pour permettre d'afficher les occurrences du GBIF avec Views, uniquement en site building, par appels en service web, sans passer par la base locale ! Couplé avec Views Bulk Operations, on peut tout à fait s'en servir pour traiter en local les données du GBIF sélectionnées, par exemple les importer localement avec le module Migrate.

À l'heure actuelle, le projet permet uniquement de récupérer ou de rechercher des occurrences ou des espèces. Nous sommes à la recherche de sponsors et de contributeurs pour mettre en œuvre l'ensemble de l'API du GBIF, et de la sorte faciliter grandement l'accès à l'ensemble des données du GBIF à tous les projets écrits en PHP. N'hésitez pas à nous contacter si cela vous intéresse !


  1. La famille des Musacées regroupe notamment les genres Musa (bananiers) et Ensete↩︎

  2. Sous licence GPLv3. ↩︎

  3. Actuellement Drupal 7, en attendant que MGIS soit porté en Drupal 9. ↩︎

felip
01/06/2021

Par FMB
Philippe Mané

Exploiter les données de biodiversité en PHP et avec Drupal grâce à la bibliothèque PHP GBIF

Exploiter les données de biodiversité en PHP et avec Drupal grâce à la bibliothèque PHP GBIF

Le projet Musa in situ, mené conjointement par le CIRAD et Bioversity, recueille des données sur les Musacées1 de par le monde, en conditions naturelles ou s'en approchant. L'objectif principal est d'obtenir une image la plus précise possible de la diversité géographique naturelle des Musacées. Il s'appuyait initialement sur un projet sur iNaturalist, mais par la suite il s'est ouvert à d'autres sources de données, notamment le GBIF (Global Biodiversity Information Facility), qui a pour but de mettre à disposition toute l'information connue sur la biodiversité. En particulier, ces données sont accessibles à travers une interface REST.

Le GBIF permet un accès à ces données via une interface web qui utilise en interne cette interface REST. Cependant, dans le cadre du travail effectué pour MGIS, il était souhaitable de pouvoir interroger ces données directement depuis ce site, idéalement au moyen d'une vue, afin de choisir quelles données importer en base, et assurer une cohérence avec ce qui avait déjà été importé, ou ce que l'on s'interdit d'importer.

Il se trouve que le langage R dispose d'une mise en œuvre de référence, rgbif. Ce client constitue une abstraction permettant d'interroger la base du GBIF sans avoir à entrer dans le détail des requêtes à effectuer en service web. Il a été porté de manière plus ou moins exhaustive en Python (pygbif) et Ruby (gbifrb). Il faut désormais compter avec PHP GBIF, développé dans le cadre de ce projet. Notre espoir est que ce projet libre2 puisse être utile à d'autres acteurs souhaitant interagir avec ce catalogue central de la biodiversité mondiale.

L'installer est aussi simple qu'un composer require restelae/php-gbif. Cette bibliothèque requiert la version 7.2 de PHP ou toute version supérieure. Vous trouverez sur sa page d'accueil toutes les informations nécessaires à son utilisation, complétées par une documentation générée automatiquement avec Doxygen.

Nous avons également écrit un module pour Drupal3 s'appuyant sur cette bibliothèque pour permettre d'afficher les occurrences du GBIF avec Views, uniquement en site building, par appels en service web, sans passer par la base locale ! Couplé avec Views Bulk Operations, on peut tout à fait s'en servir pour traiter en local les données du GBIF sélectionnées, par exemple les importer localement avec le module Migrate.

À l'heure actuelle, le projet permet uniquement de récupérer ou de rechercher des occurrences ou des espèces. Nous sommes à la recherche de sponsors et de contributeurs pour mettre en œuvre l'ensemble de l'API du GBIF, et de la sorte faciliter grandement l'accès à l'ensemble des données du GBIF à tous les projets écrits en PHP. N'hésitez pas à nous contacter si cela vous intéresse !


  1. La famille des Musacées regroupe notamment les genres Musa (bananiers) et Ensete↩︎

  2. Sous licence GPLv3. ↩︎

  3. Actuellement Drupal 7, en attendant que MGIS soit porté en Drupal 9. ↩︎

felip
01/06/2021

Par Christophe MOLLET
Christophe Mollet

Quel site internet pouvons-nous créer sous Drupal ?

Si vous avez comme projet de créer un site internet pour votre activité, il faut savoir que le choix du CMS a un impact direct sur ce que vous souhaitez faire. En effet, il est important d’avoir à l’esprit que l’on ne choisit pas un CMS par hasard, mais parce qu’il correspond au besoin envisagé. Ici, nous allons vous parler de Drupal, un CMS open-source à la fois puissant et flexible.

Par kgaut
Kevin Gautreau

Drupal - Utiliser Devel Generate pour générer des entités personnalisées

Devel Generate est un sous module de Devel permettant de générer du contenu de test pour son site drupal, que cela soit des nœuds, des termes de taxonomy, des utilisateurs ou encore des éléments de menu.

Il est aussi possible de développer un petit plugin permettant de générer des entités d'un type custom, en renseignant ses champs mais aussi ses propriétés (basefield).

Voici le code du plugin de mon module me permettant de générer des entités de type « cadeau ». Attention, c'est fonctionnel, mais c'est du rapidos, la propreté du code est perfectible !

Fichier : modules/mon_module/src/Plugin/DevelGenerate/CadeauDevelGenerate.php

<?php
namespace Drupal\mon_module\Plugin\DevelGenerate;

use Drupal\Core\Field\Plugin\Field\FieldType\UriItem;
use Drupal\Core\Form\FormStateInterface;
use Drupal\devel_generate\DevelGenerateBase;
use Drupal\image\Plugin\Field\FieldType\ImageItem;
use Drupal\kebrina\Entity\Cadeau;
use Drupal\text\Plugin\Field\FieldType\TextLongItem;

/**
* Provides a ContentDevelGenerate plugin.
*
* @DevelGenerate(
*   id = "cadeau", // Le nom machine de mon type d'entité
*   label = @Translation("Cadeau"),
*   description = @Translation("Génère des cadeaux"),
*   url = "cadeau",
*   permission = "administer devel_generate",
*   settings = { // Les paramètres par défaut
*     "num" = 50,
*     "kill" = FALSE,
*   }
* )
*/
class CadeauDevelGenerate extends DevelGenerateBase {

  /**
   * Le formulaire à renseigner avant la génération du contenu
   */
  public function settingsForm(array $form, FormStateInterface $form_state) {

    $form['num'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Combien de cadeaux voulez-vous générer ?'),
      '#default_value' => $this->getSetting('num'),
      '#size' => 10,
    ];

    $form['kill'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Supprimer tous les cadeaux en base avant la génération ?'),
      '#default_value' => $this->getSetting('kill'),
    ];

    return $form;
  }
  protected function generateElements(array $values) {
    $num = $values['num'];
    $kill = $values['kill'];

    if ($kill) {
      $nbDeletedItems = 0;
      // Suppression des contenus existants
      foreach (Cadeau::loadMultiple() as $cadeau) {
        $cadeau->delete();
        $nbDeletedItems++;
      }
      $this->setMessage($this->formatPlural($nbDeletedItems, '1 cadeau a été supprimé', '@count cadeaux supprimés'));
    }

    $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
    $entity_type = $definition_update_manager->getEntityType('cadeau'); // À modifier en fonction du nom machine de votre type d'entité
    for ($i = 1; $i <= $num; $i++) {
      // Création de l'entité avec des valeurs générée aléatoirement en fonction de leur type
      // ImageItem, TextLongItem, UriItem sont a adapter en fonction des types de vos propriétés
      $cadeau = Cadeau::create([
        'title' => $this->getRandom()->word(mt_rand(2, 50)),
        'photo' => ImageItem::generateSampleValue(Cadeau::baseFieldDefinitions($entity_type)['photo']),
        'description' => TextLongItem::generateSampleValue(Cadeau::baseFieldDefinitions($entity_type)['description']),
        'url' => UriItem::generateSampleValue(Cadeau::baseFieldDefinitions($entity_type)['url']),
      ]);
      // On renseigne aussi les champs s'il y'en a.
      $this->populateFields($cadeau);
      // Et on sauvegarde notre contenu
      $cadeau->save();
    }
  }

  public function validateDrushParams(array $args, array $options = []) {
    return [
      'num' => $options['num'],
      'kill' => $options['kill'],
    ];
  }
}

 

Un petit coup de vidage de cache, puis sur l'uri /admin/config/development/generate, vous aurez maintenant une nouvelle option :

Image

Devel Generate

Par Christophe MOLLET
Christophe Mollet

Installer Drupal 9 avec Composer

Si vous vous lancez dans la création de site web personnalisé, et souhaitez posséder d'un processus de création le plus professionnel possible, notre agence web vous recommande d'installer Drupal avec Composer. Cela vous permettra entre autres d'avoir le contrôle sur le versionning de la base de données et des extensions contrib de Drupal. Afin de vous accompagner au mieux dans votre projet web, un de nos experts Drupal vous a préparé un tutoriel.

Par Artusamak
Julien Dubois

Remplacer son code jQuery par du code natif "vanilla"

Remplacer son code jQuery par du code natif "vanilla"
Artusamak
jeu 08/04/2021 - 09:42

Drupal 9 a initié une tendance de fond depuis plusieurs années au sein de sa base de code qui consiste à retirer sa dépendance à jQuery afin d'alléger le poids des pages (en l'invoquant à la carte) puis en le remplaçant par des implémentations dites vanilla (en javascript natif pur).

Cette tendance de fond est possible car les navigateurs ont bien progressé et leurs implémentations sont uniformisées, au point que les années de jQuery soient comptées (pas seulement à cause de cela).

Par réflexe ou par habitude, beaucoup de développeurs (back) savent développer certains comportements interactifs avec jQuery mais ne savent pas le faire de façon vanilla. Ces liens recensent quelques techniques et snippets d'équivalence pour les taches les plus courantes.

 

Catégories
Auteur
Par kgaut
Kevin Gautreau

Drupal 8 & Drupal 9 - Importer de la config via un update

Il est parfois nécessaire d'importer de la config directement dans un HOOK_update().

Évidement il est préférable de respecter le process normal (avec par exemple la commande drush  deploy). Mais il peut arriver de ne pas avoir le choix, dans ce cas, voici comment faire :

/**
* Import config du dossier config/install de mon_super_module
*/
function mon_super_module_update_9001() {
  $configFolder = drupal_get_path('module', 'mon_super_module') . '/config/install';
  $configFileStorage = new \Drupal\Core\Config\FileStorage($config_path);
  \Drupal::service('config.installer')->installOptionalConfig($configFileStorage);
}

 

Par Mixalis44
Mickael Zafiriou
Développeur Drupal depuis 2013.

Quickie 02 : Ajouter une régle d'affichage personnalisée pour les blocs

Dans Drupal, les blocs sont les pierres angulaires de l'affichage des éléments du site. Bien-sûr en fonction des pages on n'affiche pas tous les blocs possible en même temps.
On peut paramétrer certaines règles d'affichage que le core certains modules proposent. Aujourd’hui je vais présenter comment créer des règles personnalisées.

Pages