Planète

Par Artusamak
Julien Dubois

Améliorer son référencement pour prendre en charge les types d'entités personnalisés dans Pathauto

Améliorer son référencement pour prendre en charge les types d'entités personnalisés dans Pathauto
Artusamak
lun 21/02/2022 - 08:50

Lorsque vous créez un type d'entité personnalisé, vous voulez bénéficier des fonctionnalités tierces liées aux types de contenu (vues, révisions, traduction...). La génération des alias pour le référencement avec Pathauto est l'un des points incontournables.

Corps

Vous venez de créer un nouveau type d'entité. Vous contemplez votre œuvre, réfléchissant à la prochaine touche à ajouter pour la parfaire. Tout à coup, un éclair vous frappe : "Il nous faut prendre en charge les alias Pathauto". Évidemment ! Pourquoi se priver de la puissance de cet outil ? C'est l'un des modules indispensables de Drupal 9 qui vous permet d'améliorer la qualité de votre référencement (du SEO éthique et responsable bien sûr !). Comme il est 16h et que la fin de journée approche, vous espérez pouvoir boucler ça rapidement pour reprendre votre marathon visionnage de l'intégrale de Columbo au plus vite.

Scénario 1 : Je suis une personne chanceuse

L'accident heureux consiste à vous rendre dans l'interface de Pathauto et de voir si votre type d'entité n'est pas déjà visible. Si tel est le cas, vous aurez le temps de vous faire un épisode de plus car la journée est terminée, cela fonctionne. Pour les gens moins chanceux, voici ce qu'il faut faire pour que cela fonctionne.

Scénario 2 : J'ai besoin de débrider le chemin de chaque entité

L'intérêt d'un système de gestion de contenu est de maîtriser les URLs de ses contenus. Vous pouvez opter pour de la génération automatique mais vouloir débrider cette génération entité par entité (comme pour les nœuds).

Pathauto est pré-configuré pour prendre en charge n'importe quel type d'entité. La magie se passe dans \Drupal\pathauto\Plugin\Deriver\EntityAliasTypeDeriver::getDerivativeDefinitions(). Trois critères sont à respecter pour que cela fonctionne clé en main.

1. Votre type d'entité doit déclarer un template de lien "canonical".

# inspectors/src/Entity/Inspector.php

/**
* Defines the Inspector entity class.
*
* @ContentEntityType(
*   ...
*   links = {
*     "add-form" = "/admin/content/inspector/add/{inspector}",
*     "add-page" = "/admin/content/inspector/add",
*     "canonical" = "/inspector/{inspector}",
*     "edit-form" = "/admin/content/inspector/{inspector}/edit",
*     "delete-form" = "/admin/content/inspector/{inspector}/delete",
*     "collection" = "/admin/content/inspector"
*   },
*   ...
* )
*/
class Inspector extends RevisionableContentEntityBase {}

2. Votre type d'entité doit être fieldable.

3. Votre bundle doit avoir un champ "path" qui stockera le chemin vers l'entité pour les cas où vous voulez débrider.

Si vous remplissez ces trois critères, votre type d'entité est maintenant pleinement utilisable dans Pathauto. Vous pouvez fermer votre CMS préféré et retourner à votre visionnage, vous n'avez raté que la première moitié de l'épisode.

Scénario 3 : Je n'ai pas de champ "path" ou n'en ai pas besoin

Si le champ "path" peut être intéressant dans certains cas, il arrivera que vos types d'entités soient plus basiques. Dans ce cas, comment l'exposer à Pathauto ? Il y a un petit peu plus de travail mais rien d'insurmontable. La solution consiste à implémenter un plugin AliasType. (Si vous ne savez pas comment fonctionnent les plugins, je vous invite à relire notre article). N'oubliez pas de déclarer son annotation @AliasType.

# inspectors/src/Plugin/pathauto/AliasType/InspectorsAliasType.php

/**
* Defines the Inspector entity class.
*
* @AliasType(
*   id = "inspector_aliases",
*   label = @Translation("Inspectors"),
*   types = {"inspector"},
*   context_definitions = {
*     "inspector" = @ContextDefinition("entity:inspector")
*   }
* )
*/
class InspectorsAliasType extends EntityAliasTypeBase {}

Les deux attributs de l'annotation à regarder de près sont types qui liste des types d'entités pour lesquels votre plugin va s'appliquer et context_definitions qui permet d'accéder à la liste des tokens de votre type d'entité (et donc ses champs, ses métadonnées et toutes les fonctionnalités avancées de Pathauto).

Ne vous précipitez pas tout de suite sur la génération de vos alias car vous risquez d'être déçu(e). La configuration est possible mais il reste une étape importante pour pouvoir profiter de tout cela, déclencher la génération. Si l'on ne donne pas un coup de pouce au système, la génération de vos alias ne se fera jamais. Pathauto implémente les hook_entity_OP() pour déclencher la génération mais si vous n'avez pas de canonical ou de champ path comme évoqué précédemment, vous devrez déclencher vous même le générateur.

Les alias doivent se créer, se mettre à jour et se supprimer en fonction de l'opération effectuée sur votre entité, vous allez donc devoir implémenter vous aussi les hook_entity_OP(). Comme on cible un type d'entité précis, les hooks à implémenter sont hook_ENTITY_TYPE_OP(). Cela donne ce code :

# inspectors.module

/**
* Implements hook_ENTITY_TYPE_update().
*/
function inspectors_inspector_update(Drupal\Core\Entity\EntityInterface $entity) {
  $generator = \Drupal::service('pathauto.generator');
  try {
    $generator->createEntityAlias($entity, 'update');
  }
  catch (\InvalidArgumentException $e) {
    $generator->messenger()->addError($e->getMessage());
  }
}

/**
* Implements hook_ENTITY_TYPE_insert().
*/
function inspectors_inspector_insert(Drupal\Core\Entity\EntityInterface $entity) {
  $generator = \Drupal::service('pathauto.generator');
  try {
    $generator->createEntityAlias($entity, 'insert');
  }
  catch (\InvalidArgumentException $e) {
    $generator->messenger()->addError($e->getMessage());
  }
}

/**
* Implements hook_ENTITY_TYPE_delete().
*/
function inspectors_inspector_delete(EntityInterface $entity) {
  \Drupal::service('pathauto.alias_storage_helper')->deleteEntityPathAll($entity);
}

Une fois vos hooks implémentés, vous devriez pouvoir tester la génération des alias et si tout s'est bien passé, cela devrait fonctionner.

Bonus : générer en masse les alias

Il vous reste une dernière action à faire si voulez bénéficier de la génération en masse des alias. Il faut implémenter la méthode \Drupal\mobility_plans\Plugin\pathauto\AliasType\MobilityPlanAliasType::bulkUpdate() dans votre plugin d'alias.

# inspectors/src/Plugin/pathauto/AliasType/InspectorsAliasType.php

class InspectorsAliasType extends EntityAliasTypeBase {

  /**
   * Update the URL aliases for multiple entities.
   *
   * @param array $ids
   *   An array of entity IDs.
   * @param array $options
   *   An optional array of additional options.
   *
   * @return int
   *   The number of updated URL aliases.
   */
  protected function bulkUpdate(array $ids, array $options = []) {
    $options += ['message' => FALSE];
    $updates = 0;
    $generator = \Drupal::service('pathauto.generator');

    $entities = $this->entityTypeManager->getStorage($this->getEntityTypeId())->loadMultiple($ids);
    foreach ($entities as $entity) {
      // Update aliases for the entity's default language and its translations.
      foreach ($entity->getTranslationLanguages() as $langcode => $language) {
        $translated_entity = $entity->getTranslation($langcode);

        try {
          $result = $generator->createEntityAlias($translated_entity, 'update');
        }
        catch (\InvalidArgumentException $e) {
          $generator->messenger()->addError($e->getMessage());
        }

        if ($result) {
          $updates++;
        }
      }
    }

    if (!empty($options['message'])) {
      $this->messenger->addMessage($this->translationManager
        ->formatPlural(count($ids), 'Updated 1 %label URL alias.', 'Updated @count %label URL aliases.'), [
        '%label' => $this->getLabel(),
      ]);
    }

    return $updates;
  }

}

Et nous y voilà ! À vous les alias finement ciselés pour parfaire votre chef d'œuvre ! Vous pouvez commiter tout cela et retourner prendre des nouvelles de Peter Falk, il est sur le point d'attraper le meurtrier et résoudre l'enquête.

Catégories
Développement
Drupal
Drupal 8
Drupal 9
Tags
pathauto
type d'entité
seo
alias
Par Artusamak
Julien Dubois

11 raisons de choisir Drupal pour votre site web

11 raisons de choisir Drupal pour votre site web
stephanie@happyculture.coop
lun 06/12/2021 - 10:25

Drupal s’est imposé comme une référence parmi les meilleures solutions pour la réalisation de sites web. Il fait partie du top 6 des systèmes de gestion de contenu. C’est une solution robuste, flexible et fiable, qui sait s’adapter aux évolutions et aux attentes des utilisateurs.







Corps

Drupal est un CMS, ou SGC en français, libre et ouvert, écrit en PHP en 2001.
Conçu pour couvrir un large éventail de types de sites, il s’est imposé comme l’un des acteurs majeurs de la sphère web.

Il existe plusieurs options pour créer des sites web, mais chez Happyculture, nous les concevons avec Drupal depuis presque 15 ans. C’est pour nous l’outil idéal pour réaliser votre site internet de contenu et pour vous convaincre, nous vous avons listé les 11 principales raisons. 

1/ Compatibilité

Site internet, intranet ou encore extranet, site vitrine ou e-commerce, de quelques pages à des millions de contenus, multilingue… Drupal est conçu pour couvrir un large éventail de types de sites, du plus simple au plus complexe grâce à son évolutivité. Il saura s’adapter aux besoins de votre infrastructure pour encaisser des pics de trafic réguliers ou un grand volume de visiteurs.

2/ Simplicité d’utilisation

D’une manière générale, la gestion de contenu est un point fort de Drupal. Ainsi, Drupal permet de créer facilement des contenus et de les afficher sous forme de listes, de messages, de galeries, de tableaux, de cartes ou de blocs : il suffit simplement de remplir des champs qui constituent des types de contenu. Et pour vos textes riches, il vous facilite la saisie via l’éditeur WYSIWYG CKEditor 4 (et bientôt 5 !). 

3/ Modularité

Drupal est riche d'un écosystème bien vivant depuis 2001 qui lui permet de compléter les fonctionnalités variées et proposées par le cœur de Drupal. De cette force est né l'adage "il y a un module pour ça", décrivant la profondeur du catalogue de modules gratuits à disposition.
Tous les 6 mois, Drupal publie également une mise à jour avec de nouvelles fonctionnalités afin de rester en phase avec son marché et la demande des utilisateurs.

4/ Des technologies dans l’air du temps

Thèmes compatibles avec le “responsive design” et le “mobile friendly”, utilisation du HTML5, intégration avec des webservices, meilleur respect des standards : Drupal s’appuie sur les pratiques du web moderne, favorisant le référencement naturel et l’accessibilité.

5/ Pérennité

Choisir Drupal, c’est faire le choix de l’open source pour ne pas être lié à une solution CMS propriétaire empêchant les évolutions de prestataire et le contrôle des coûts. C’est un outil gratuit et ouvert.
Dès sa création, la communauté mondiale de Drupal n'a eu de cesse de trouver des solutions pour s'assurer que Drupal soit un outil pérenne et ne se laisse pas dépasser par le dynamisme du marché. Publication de correctifs de sécurité réguliers, maintenance mensuelle, conférences pluriannuelles internationales et nationales permettent à la communauté de faire vivre la solution.

6/ Communautaire

Drupal s’appuie sur un réseau mondial de plus d’1 million d’utilisateurs dont 31 000 développeurs dans plus de 230 pays et plus de 3 000 contributeurs à son cœur. C’est l'un des plus gros projets open source au monde.
Happyculture fait d’ailleurs partie de ces contributeurs et reverse régulièrement du code depuis plusieurs années. Happyculture contribue à l’organisation de la communauté en étant impliquée dans les événements nationaux, en proposant des conférences ou en animant des ateliers. Ce qui fait  de nous l’une des 70 sociétés les plus prolifiques au monde par leur contribution au cœur de Drupal.

7/ SEO optimisé

On ne peut pas parler site web sans aborder la question du SEO. Votre site a besoin d’un minimum de visibilité. Drupal propose alors une suite d’outils SEO pour optimiser le référencement naturel de votre site et améliorer son positionnement dans les résultats des moteurs de recherche.

8/ Accessibilité

Drupal propose clé en main une solution compatible avec les exigences WCAG 2.0 équivalentes au niveau bronze/A du RGAA 3.0 et ambitionne d’atteindre le niveau argent/AA.
C’est un des seuls outils à proposer un tel niveau d’exigence clé en main. Il reste de votre responsabilité de maintenir ce niveau d’accessibilité lors de la rédaction de vos contenus ou la création de votre identité graphique pour ne pas perdre en qualité.
Nous vous renvoyons vers notre article dédié à l’accessibilité pour (re)découvrir quelques points de vigilance et conseils de mise en œuvre.

9/ Sécurité

La communauté Drupal assure le suivi des failles de sécurité, la publication de correctifs et la mise à disposition des utilisateurs d’informations pour assurer la sécurité de leurs sites web contre les attaques. 
Drupal dispose de milliers de modules complémentaires centralisés sur le site officiel drupal.org. Cela permet de garantir la couverture par son équipe de sécurité et vous protéger d’éventuelles attaques ou fuites de données (si votre site applique les mises à jour !). Les modules sont développés par la communauté, 85% par des personnes payées pour le faire, 15% par des bénévoles.
Autant dire que Drupal est bien sécurisé !

10/ Réversibilité 

L’une des raisons intéressantes qui jouent en faveur de Drupal est la facilité à trouver un autre prestataire pour reprendre un projet en cours, c’est le principe de réversibilité. Vous pouvez récupérer l’intégralité de la base de code et de la base de données, les installer très simplement chez un autre prestataire et continuer à faire vivre votre site. Mais cela peut dépendre de votre contrat avec votre prestataire, pensez à vérifier !

11/ Une référence dans le monde

Drupal est une solution qui dispose notamment d’une belle notoriété dans les secteurs de l’éducation et de la recherche, mais également dans la santé, auprès de gouvernements ou encore de structures de l’ESS. 

En France :

Dans le monde :

Et bien d’autres encore :

Drupal est aujourd’hui l’un des meilleurs systèmes de gestion de contenu et nous espérons que les raisons citées vous ont convaincu ou donné envie d’en savoir plus. 
Alors, si vous souhaitez lancer un projet ou avez des questions sur l’utilisation de Drupal, n'hésitez pas à nous contacter.
 

Catégories
Développement
Drupal
Drupal 10
Drupal 9
Tags
Drupal
CMS
accessibilité
seo
Par Iloofo
Iloofo

Vulgarisation: Fonctionnement des Cache tags sous Drupal

Fonctionnement historique des caches

Comme beaucoup de sites web et de systèmes de gestion de contenu, avant sa version 8, Drupal gérait les caches en fonction d’une temporalité. Celle-ci devait donc être suffisamment longue pour permettre de soulager le serveur, mais suffisamment courte pour permettre d’avoir un contenu à jour.

La mise à jour des pages en cache était aisée pour une page de contenu lorsque le contenu de celle-ci était mis à jour (possibilité de demander la suppression du cache de la page en question), mais plus compliquée lorsqu’il s’agissait de pages de listing où ce contenu était censé apparaître : difficile de savoir sur quelles pages de listing le contenu est ou devrait être remonté.

Ainsi par exemple, un cache était généré pour une durée de 5 minutes, et donc distribué et stocké par les couches intermédiaires tels qu’un reverse proxy Varnish pendant 5 minutes sans nécessairement avoir la possibilité d’invalider ces caches.

Fonctionnement actuel via Tags

Depuis Drupal 8, les caches de Drupal fonctionnent via le principe d’étiquettes de cache (ou Cache tags), et non plus uniquement de temporalité.

Les caches doivent par défaut avoir une durée de vie importante (recommandé à 1 an) pour permettre une mise en cache par défaut longue, puis gérer la mise en cache et la re-génération des caches à la demande en fonction de la création/mise à jour du contenu.

Une page est générée à partir de plusieurs éléments imbriqués que l’on nommera composants. Exemple : le rendu d’un contenu, un bloc de listing de contenu, un template de rendu d’un élément etc.

On attribue un ou plusieurs tags à chaque composant qui reflètent le contenu de celui-ci.

Exemple : node:1 pour le rendu du contenu node:1, ou node:10 node:11 node:12 liste_actualites pour un bloc de listing des actualités qui affiche les nodes 10, 11 et 12.

Par Artusamak
Julien Dubois

Pourquoi encore choisir un CMS pour son site web en 2022 ?

Pourquoi encore choisir un CMS pour son site web en 2022 ?
stephanie@happyculture.coop
mar 02/11/2021 - 09:44

Au fil du temps, la production de sites internet s’industrialise. Le coût d’entrée d’un site s’est considérablement abaissé et plusieurs options s’offrent à vous lorsque vous devez lancer un nouveau site. Explorons-les ensemble.







illustration des différentes fonctionnalités d'un CMS
Corps

Mais c’est quoi un CMS ?

Un CMS, ou SGC en français, est un logiciel ou une plateforme permettant de créer et modifier facilement le contenu qui alimente un site internet. Le contenu peut être généré par une personne seule ou une équipe de webmasters mais il est également possible de laisser les visiteurs publier leur propre contenu. On parle dans ce cas de contenu généré par les utilisateurs (UGC).

Le CMS est protéiforme, il peut gérer votre site institutionnel, votre boutique en ligne, votre blog, votre médiathèque, votre site d’offres d’emploi.... Bien configuré, il peut propulser des sites allant d’une dizaine de visiteurs jusqu’à plusieurs dizaines de milliers par jour.
Un système de gestion de contenu est dans sa zone de confort pour la saisie, la validation, la classification, la gestion de médias, la configuration du référencement (SEO), l’attribution de rôles/droits à des utilisateurs(rices), l’agrégation, la navigation au sein de ces contenus...

Les CMS ne sont bien sûr pas la seule solution pour créer un site, mais ils sont accessibles et possèdent une base de fonctionnalités déjà existantes et suffisamment complètes. En optant pour un CMS, vous avez déjà un panel de fonctionnalités à votre disposition.

Le CMS peut être open source (Drupal, Wordpress, Prestashop…) ou propriétaire (Sitecore, Kentico, Adobe site manager...). Selon votre choix, des coûts de licence peuvent s’appliquer et votre niveau d’autonomie pour modifier / voir sous le capot varie très fortement.
À l’heure où les supports et canaux se multiplient pour se spécialiser (applications mobiles, réseaux sociaux, site institutionnel, site RH, site du support utilisateurs…), une constante est toujours présente : le besoin de rédiger votre contenu ! Vous avez donc toujours un intérêt à avoir un système de gestion de contenu au sein de votre structure.

Le marché tend à se rapprocher du modèle suivant : vous créez un site dédié à l’administration de votre contenu pour centraliser votre contenu et vos sites / applications se connectent à ce système de gestion de contenu pour présenter les bons contenus au(x) bon(s) endroit(s). Grâce à cette mutualisation vous simplifiez la mise à jour de l’information en évitant la répétition.

 

Faites votre choix

Chaque structure a ses propres besoins et le modèle décrit ci-dessus ne s’applique pas forcément à votre organisation. Rassurez-vous, il existe des solutions pour chaque taille de structure / projet. Passons en revue vos options de la moins onéreuse à la plus onéreuse.

Nous ne vous détaillerons pas ici, ni ailleurs, les avantages et inconvénients de chacun des logiciels car il en existe plusieurs dizaines dans chaque langage (PHP, Python, Ruby…). De plus, nous estimons que seule l’expérience d’utilisation et la mise en œuvre de ces outils permettrait de donner un avis objectif et légitime. Ce n’est pas notre cas, nous sommes experts Drupal.

À noter que nous mentionnons le terme de réversibilité dans les 3 options, ce terme désigne la capacité à repartir avec le code de votre site et vos contenus pour pouvoir les mettre chez un autre prestataire / hébergeur et les modifier.
 

Option 1 : Un site générique, hébergé sur une plateforme SaaS

Ce peut être l’offre de votre hébergeur type Ionos (1&1) ou un service dédié type Wix, Hubside. Il existe aussi des services spécialisés si vous voulez monter une boutique par exemple : Squarespace ou Shopify sont les services les plus connus.

Pour quelques euros par mois vous pouvez choisir parmi une collection de gabarits et ambiances visuelles celui qui vous plaît pour ensuite modifier le contenu des pages.
Les possibilités de personnalisation sont très limitées mais pour un site simple (type plaquette), cette option fait le travail. Vous n’avez pas à vous préoccuper de la maintenance, de l’hébergement, des sauvegardes. Tout est compris dans l’offre.

La contrepartie est que vous ne pourrez pas transformer le site pour en faire ce que vous voulez si le site doit évoluer au bout de quelques mois ou années. Vous ne pourrez pas non plus repartir avec le code source du site (réversibilité) pour l’héberger ailleurs ou le faire modifier par un(e) développeur(se). C’est la plateforme sur laquelle vous créez votre site qui est propriétaire de vos données.

Le coût de ces services est très accessible :

  • Coût de la conception et du développement : Gratuit si vous le faites vous même. Quelques centaines d’euros si vous passez par un prestataire.
  • Adaptabilité aux besoins métiers : Inexistante
  • Coût récurrent tout au long de la vie du site : 
    • Licence : Entre 1 et 50 € par mois pour le service
    • Hébergement : Compris
    • Maintenance : Compris
  • Personnalisation à votre image de marque : Inexistante à Faible
  • Connaissances techniques requises : Aucune
  • Réversibilité : Impossible

 

Option 2 : Un site sur mesure à partir d’un CMS

Si vous souhaitez un site qui reflète fidèlement votre identité visuelle et pour lequel l’expérience de navigation est taillée sur mesure pour vos contenus, alors le site hébergé sur une plateforme tierce ne conviendra pas. Vous aurez besoin de gérer votre site en autonomie.

Selon que vous possédiez les compétences au sein de votre structure ou via un prestataire type agence web (tel qu’Happyculture ;-)), les étapes de conception de l’interface (Design / Responsive), l’organisation de la circulation au sein des pages (ergonomie et organisation de l’information) et le développement seront des passages obligés pour rendre du mieux possible un service à vos visiteurs.

Pour construire ce site sur mesure, plutôt que de partir d’une feuille blanche, le CMS est l’outil nécessaire à votre projet pour les raisons mentionnées précédemment.
Avec un CMS vous partez d’un socle de fonctionnalités extensible. L’équipe technique se charge de configurer et enrichir ce socle en piochant dans la bibliothèque de modules complémentaires gratuits ou payants. Si vos besoins sont pointus et non couverts par un module complémentaire, les développeurs peuvent créer des fonctionnalités sur mesure. Dans certains cas, il pourra être nécessaire de déconstruire certaines fonctionnalités pour les redévelopper si le comportement par défaut ne vous convenait pas (ex : recherche de contenu sur mesure).

Drupal dispose de milliers de modules complémentaires centralisés sur le site officiel drupal.org. Cela permet de garantir la couverture par son équipe de sécurité et vous protéger d’éventuelles attaques ou fuites de données (si votre site applique les mises à jour (!)). Les modules sont développés par la communauté, 85% par des personnes payées pour le faire, 15% par des bénévoles.

Pour maîtriser votre image de marque et l’organisation de votre contenu votre site devra donc être hébergé sur vos serveurs ou chez un hébergeur. Selon la taille du site, le coût varie de quelques dizaines à quelques centaines d’euros par mois.

Il faudra ajouter à cela une ligne budgétaire dédiée à la maintenance du site. Qu’elle soit corrective ou évolutive, votre site vit au-delà de sa mise en ligne initiale. Des failles de sécurité peuvent être découvertes et votre site doit être mis à jour pour que vous restiez protégés. Des bugs peuvent également être corrigés par la communauté qui développe ces modules et vous en faire bénéficier gratuitement en appliquant ces mises à jour.

Pour résumer, vous êtes pleinement propriétaires de votre site, vous maîtrisez la mise en forme, l’organisation du contenu. 

Le coût de la conception et du développement représentent l’essentiel de la création du site mais permettent de se distinguer de ses concurrents et de garantir une réponse aux besoins de vos visiteurs.

  • Coût de la conception et du développement : Plusieurs milliers à dizaines de milliers d’euros selon la taille du site
  • Adaptabilité aux besoins métiers : Moyenne
  • Coût récurrent tout au long de la vie du site : 
    • Licence : 0 € pour les CMS open source
    • Hébergement : À partir de 50 € par mois
    • Maintenance : À partir de 100 € par mois pour une version minimale (correctifs de sécurité), plus si on ajoute des correctifs autres + des évolutions
  • Personnalisation à votre image de marque : Totale
  • Connaissances techniques requises : Une équipe technique interne ou un prestataire est indispensable
  • Réversibilité : Possible (peut dépendre du contrat, pensez à vérifier !)

 

Option 3 : Un site sur mesure à partir d’une page blanche

La troisième et dernière option qui s’offre à vous et votre équipe technique est l’utilisation d’un Framework (Symfony, Express, Django, Ruby on Rails…). Un framework est une boîte à outils qui permet à l’équipe technique de construire un outil personnalisé de A à Z. Vous tirerez les mêmes bénéfices que l’option 2 et irez plus loin dans la personnalisation en imaginant également la partie administration du site sur mesure.

Ce cas peut être intéressant pour des sites qui comportent une partie “métier” forte qui ne peut pas être réalisée via des modules complémentaires et le cœur d’un CMS ou qui nécessiteraient beaucoup de développements sur mesure.

Cette solution d’une certaine façon implique de réinventer la roue pour la saisie et l’administration des contenus car toutes les fonctionnalités de saisie du contenu et d’administration doivent être développées, là où le CMS propose une solution clé en main. C’est autant de budget en plus à y dédier.

Les avantages du Framework comparés au CMS sont faibles, le seul cas qui justifiera le surcoût sera l’intégration de nombreuses fonctionnalités métier.

  • Coût de la conception et du développement : Plusieurs milliers à dizaines de milliers d’euros selon la taille du site
  • Adaptabilité aux besoins métiers : Totale
  • Coût récurrent tout au long de la vie du site :
    • Licence : 0 €
    • Hébergement : À partir de 50 € par mois
    • Maintenance : À partir de 100 € par mois pour une version minimale (correctifs de sécurité), plus si on ajoute des correctifs autres + des évolutions
  • Personnalisation à votre image de marque : Totale
  • Connaissances techniques requises : Une équipe technique interne ou un prestataire est indispensable
  • Réversibilité : Possible (peut dépendre du contrat, pensez à vérifier !)

 

Conclusion

Voici un tableau récapitulatif des différents critères que nous vous avons présentés ci-dessus.

  Option 1 :
Site SaaS

Option 2 :
Site CMS

Option 3 :
Site Framework
Coût de la conception et du développement + +++ ++++
Adaptabilité aux besoins métiers Impossible ++ +++
Personnalisation à votre image de marque + +++ +++
Connaissances techniques requises + +++ +++
Réversibilité Impossible Possible Possible
Coût récurrent tout au long de la vie du site :
Licence / Abonnement ++ Gratuit (open source)
 / 
+ (propriétaire)
Gratuit
Hébergement Compris ++ ++
Maintenance Compris ++ ++

 

Avec toutes ces informations, nous espérons que vous y voyez plus clair sur l’intérêt d’un CMS et les situations où il est adapté.

Si vous comptez lancer un projet ou souhaitez des conseils sur l’organisation de votre contenu, n’hésitez pas à nous transmettre vos questions.

Catégories
Développement
Drupal
Drupal 9
Par Artusamak
Julien Dubois

Mettre à jour vers Drupal 9 à l'aide de Lenient

Mettre à jour vers Drupal 9 à l'aide de Lenient
DuaelFr
lun 11/10/2021 - 09:00

À ce jour il reste un peu plus de 3000 modules qui n'ont pas encore été mis à jour de Drupal 8 vers Drupal 9. Découvrez dans cet article comment contourner ce problème pour monter la version de votre site.







Corps

Comme nous l'indiquions dans un précédent article, Drupal 8 cessera d'être supporté le 2 novembre 2021 soit, à l'heure où cet article est écrit, dans moins d'un mois. Or, même si les mises à jour majeures ont été largement simplifiées depuis la sortie de Drupal 8, le fait d'avoir plusieurs modules en retard peut être complexe à gérer pour passer à cette nouvelle version majeure. En effet, chaque module (ou thème) déclare la ou les versions avec lesquelles il est compatible et si la personne qui le maintient n'est plus très réactive cela peut retarder votre propre montée de version.

Fonctionnement concret du système de gestion des dépendances

Concrètement, à partir du fichier info.yml des modules, le serveur packagist de Drupal va générer un arbre de dépendances. Lorsque votre composer va réclamer une mise à jour, cet arbre de dépendances sera analysé pour vérifier que tous vos paquets (core, modules, thèmes, etc.) sont compatibles entre eux. Un module qui ne déclarera donc pas officiellement supporter Drupal 9 ne sera pas reconnu comme compatible avec une montée de version du cœur et bloquera donc la procédure.

La mise à jour de Drupal 8 vers Drupal 9 étant principalement liée au remplacement de code déprécié et à la déclaration effective du support de la nouvelle version, la communauté a mis en place il y a plusieurs mois un robot qui est passé sur tous les modules ayant une version compatible avec Drupal 8 pour y indiquer les problématiques à traiter et proposer un patch lorsque c'était possible. Cependant, tant que ce patch n'est pas intégré par les personnes en charge de la maintenance des modules, le système de gestion des dépendances ne peut pas mettre à jour son arbre. En effet, même si vous appliquez le patch localement, cela intervient après le calcul des dépendances et ne permet donc pas de contourner le problème.

Initiative d'accélération des mises à jour

Face à l'approche de la fin de vie de Drupal 8, la communauté propose deux pistes pour aider la transition à se faire.

Ouverture à l'adoption des modules

Tous les modules et thèmes ayant une version de Drupal 8 mais pas de Drupal 9 ont été ouverts à l'adoption. Au terme d'une période de deux semaines durant laquelle les personnes en charge de la maintenance peuvent choisir de refuser de céder leur place (et potentiellement faire le nécessaire pour corriger le problème de compatibilité), il est possible pour quiconque dans la communauté de demander à se faire transférer la charge pour prendre la suite et rendre le module ou le thème compatible.

Création du point d'entrée composer Lenient

Auparavant, la méthode recommandée pour contourner le problème de gestion des dépendances de composer était de déclarer manuellement, pour chaque module ou thème impliqué, un repository personnalisé pour aller récupérer le code directement via git au lieu de passer par le packagist de Drupal. C'était un processus fonctionnel mais très fastidieux. La communauté, à l'écoute de tous les gestionnaires de sites en détresse, a donc mis en place un nouveau service appelé Lenient. C'est un nouveau dépôt packagist qui ne contient que les modules n'ayant pas encore de compatibilité Drupal 9 et qui ne déclare pas de dépendance sur le cœur de Drupal. Il vous permet ainsi de monter votre version du cœur sans blocage et d'appliquer ensuite les patchs qui permettront au module de fonctionner effectivement. Dès que le module aura été repris en main et que sa compatibilité aura été officialisée, il sera automatiquement retiré de Lenient et repassera pas le système original.

Utiliser Lenient pour votre mise à jour

Pour exploiter le potentiel de ce nouveau point d'entrée, vous devez utiliser composer 2 et mettre à jour votre composer.json en y ajoutant le nouveau repository avant le gestionnaire habituel de drupal.org.

Par exemple, si votre composer.json ressemble à ça (si vous vous demandez ce qu'est ce repository "assets" je vous invite à lire notre article sur la gestion des librairies front via composer) :

    "repositories": {
        "assets": {
            "type": "composer",
            "url": "https://asset-packagist.org"
        },
        "drupal": {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    }

Il faut le transformer pour qu'il ressemble à ça :

    "repositories": {
        "assets": {
            "type": "composer",
            "url": "https://asset-packagist.org"
        },
        "lenient": {
            "type": "composer",
            "url": "https://packages.drupal.org/lenient"
        },
        "drupal": {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        }
    }

Ce nouveau repository prendra la priorité sur l'ancien pour tous les modules et thèmes n'étant pas encore officiellement portés et retirera leur dépendance au cœur (et uniquement au cœur) pour débloquer votre processus de mise à jour via composer. Cependant, pour que votre dépendance puisse être utilisée dans Drupal il est nécessaire que les changements soient appliqués au code. Bien heureusement il est aussi possible de le faire via composer et ce relativement facilement ! Je vous invite à consulter cet article d'un de nos confrères de la communauté Drupal française qui vous expliquera comment utiliser composer pour appliquer un ou plusieurs patchs sur vos dépendances.

Catégories
Drupal
Drupal 8
Drupal 9
Tags
composer
upgrade
Par Artusamak
Julien Dubois

Charger vos librairies front via composer

Charger vos librairies front via composer
DuaelFr
lun 04/10/2021 - 15:00

De nombreux modules requièrent des librairies front externes pour fonctionner correctement. Plutôt que les charger manuellement, cet article explique comment les gérer via composer.







Corps

Depuis la sortie de Drupal 8, composer est devenu la façon la plus répandue de gérer les dépendances des projets. Ainsi, nous pouvons charger modules contribués et thèmes de façon unifiée ainsi que, si nécessaire, les librairies PHP dont ils dépendent. Cependant, certains modules ont besoin de librairies venant du monde du front et n'étant pas nativement supportées par composer. Ainsi, pour chacun de ces modules, il est nécessaire d'aller télécharger la librairie manuellement et de l'ajouter dans son dépôt de code. Il faut ensuite suivre régulièrement les mises à jour de toutes les librairies de tous les projets et les télécharger de nouveau en cas d'évolution ou de faille de sécurité.

Ça, c'était avant.

Cela fait bien longtemps maintenant que cette problématique a été résolue par les personnes travaillant sur le front des projets via divers package managers comme npm et bower, dont composer est d'ailleurs inspiré. Mais alors, pourquoi est-ce si compliqué de gérer ces librairies dans Drupal ?

npm, bower et composer ne référencent pas les mêmes types de paquets. En effet, les paquets PHP n'ont pas la même organisation et le même usage que les paquets Javascript. Cependant, même s'il est techniquement possible de déclarer un paquet Javascript dans packagist (la base de données alimentant composer), les auteurs de ces paquets ne le font généralement pas pour ne pas avoir à gérer tous les gestionnaires de paquets du monde et parce que cela n'est généralement pas pertinent pour l'usage que l'on peut faire de leur outil. Les personnes maintenant des outils Javascript se concentrent donc sur npm et bower, les deux plus utilisés.

Bienvenue Asset Packagist

La communauté étant pleine de ressources, le projet Asset Packagist a émergé pour répondre à ce besoin. Son but, mettre à disposition les paquets présents sur npm et bower via composer à moindre effort. Ainsi, il est possible de récupérer ces dépendances et de les maintenir à jour de la même façon que le reste de nos modules.

composer étant configuré pour uniquement chercher ses paquets sur son propre packagist, nous allons devoir tout de même procéder à quelques configurations dans notre projet pour pouvoir utiliser Asset Packagist comme source, suivez le guide !

Configurer le repository

Comme lorsque l'on souhaite pouvoir récupérer les modules et thèmes de Drupal, nous devons déclarer un repository spécifique au sein de notre fichier composer.json. Voilà à quoi ressemble la section repositories de mon fichier :

    "repositories": {
        "drupal": {
            "type": "composer",
            "url": "https://packages.drupal.org/8"
        },
        "assets": {
            "type": "composer",
            "url": "https://asset-packagist.org"
        }
    },

Désormais, vous avez la possibilité de récupérer les dépendances front de vos modules via les commandes composer require npm-asset/PAQUET ou composer require bower-asset/PAQUET en cherchant sur le site d'Asset Packagist le nom correspondant.

Cependant, en l'état nos dépendances seront installées dans le dossier /vendor, comme les dépendances PHP, ce qui ne nous arrange pas puisque les modules les chercheront dans le dossier /libraries pour les rendre accessibles aux visiteurs.

Configurer l'emplacement des librairies

Pour faire en sorte que composer place les fichiers à l'endroit voulu, il nous faut exploiter les possibilités offertes par le paquet composer/installers. Si ce dernier n'est pas déjà installé dans votre projet (ce qui est peu probable si vous gérez vos modules via composer), il vous suffit de taper la commande composer require composer/installers pour ajouter la dépendance.

Ensuite, il faut ajouter quelques informations dans la section extra de votre composer.json.

  • L'entrée installer-types permet de déclarer les types de paquets en provenance de Asset Packagist.
  • L'entrée installer-paths permet de déterminer l'endroit où chaque type de paquet sera déposé. Dans le code ci-dessous, les déclarations ont été ajoutées à celles de Drupal.
    "extra": {
        "installer-types": ["bower-asset", "npm-asset"],
        "installer-paths": {
            "web/core": ["type:drupal-core"],
            "web/libraries/{$name}": [
                "type:drupal-library",
                "type:bower-asset",
                "type:npm-asset"
            ],
            "web/modules/contrib/{$name}": ["type:drupal-module"],
            "web/profiles/contrib/{$name}": ["type:drupal-profile"],
            "web/themes/contrib/{$name}": ["type:drupal-theme"],
            "drush/Commands/contrib/{$name}": ["type:drupal-drush"],
            "web/modules/custom/{$name}": ["type:drupal-custom-module"],
            "web/themes/custom/{$name}": ["type:drupal-custom-theme"]
        },
    }

Et voilà, votre projet est prêt à recevoir ces dépendances et à les maintenir à jour suivant le même processus que vos modules et vos thèmes !

Catégories
Drupal
Drupal 10
Drupal 8
Drupal 9
Tags
composer
libraries
Par Christophe MOLLET
Christophe Mollet

Quel CMS choisir entre Wordpress et Drupal ?

Si vous souhaitez créer un site internet, il est important de bien évaluer vos besoins et vos objectifs afin de choisir, par la suite, le CMS le plus adapté à votre projet. Afin de vous aider à y voir plus clair, notre agence web vous présente, dans cet article, les 2 CMS les plus populaires, à savoir : Wordpress et Drupal.

Par Artusamak
Julien Dubois

Avez-vous anticipé la fin de vie de Drupal 7 et 8 ?

Avez-vous anticipé la fin de vie de Drupal 7 et 8 ?
stephanie@happyculture.coop
lun 02/08/2021 - 17:24

Alors que Drupal 8 cèdera sa place à Drupal 9 cette année, Drupal 7 quant à lui reste en sursis jusqu’en novembre 2022.
Alors n’attendez plus, passez à Drupal 9 !




Migrer de Drupal 7 ou 8 à Drupal 9
Corps

Que se passe-t-il ?

Dès 2019, la date de fin de vie de Drupal 7 et Drupal 8 a été annoncée. Ce sera pour le mois de novembre 2021.

La règle dans la communauté Drupal c’est 2 versions majeures maintenues en simultané (Drupal 7 et Drupal 8 à l’époque). L’arrivée de Drupal 9 devait pousser Drupal 7 vers la retraite mais papy fait de la résistance !

En effet, son utilisation importante chez de nombreux utilisateurs finaux, la migration complexe vers Drupal 8 et le COVID ont repoussé son arrêt de carrière de 12 mois, il jouera donc les prolongations jusqu’en novembre 2022

De son côté, Drupal 8 est toujours rangé au placard à la date prévue car c’est sa dépendance à Symfony 3 qui arrive en fin de vie et qui lui fera quitter les projecteurs en novembre 2021.


Drupal release cycle
@hugovk

 

Quels sont les risques ?

Avec le retrait de ces deux versions, votre système de gestion de contenu ne va pas arrêter de fonctionner du jour au lendemain.

Ce que signifie leur fin de vie c’est que les équipes officielles qui s’occupent de maintenir le logiciel ne le feront plus. Il n’y aura donc plus de mises à jour de correctif ou de sécurité. Votre site ne bénéficiera plus de la protection offerte par l’équipe de sécurité de drupal.org. Elle s’assure que tous les modules, thèmes, distributions et le cœur de Drupal sont sécurisés. Qu’aucune faille ne peut être exploitée par des pirates et le cas échéant, produit des patchs de sécurité pour que vous puissiez mettre à jour vos sites en toute sérénité. C’est cette partie là qui s’arrête au mois de novembre 2021 pour Drupal 8.

 

Que dois-je faire ?

Selon vos sites, vous êtes dans l’une des deux situations suivantes :

Mon site est sous Drupal 7

D’ici au mois de novembre 2022, vous devez lancer le chantier de montée de version de votre site. Vers Drupal 9 ou vers un autre CMS, vous devez vous posez la question de l’impact de cette échéance.
À l’instar de Drupal 6, quelques grosses sociétés expertes Drupal ont annoncé qu’elles contribueraient à la maintenance de correctifs de sécurité de Drupal 7. Si une faille de sécurité importante venait à être découverte, ils s’engagent à reverser à la communauté le patch de sécurité aussitôt qu’il sera disponible.
Bien que cela soit une bonne nouvelle, ils ne maintiendront pas tout l’écosystème des modules utilisés par Drupal 7. Vous devez tenir compte de cette échéance pour gérer la montée de version de votre site.

Si votre site n’est plus dynamique, vous pouvez envisager une statification pour ne pas vous engager dans une refonte.

Il vous reste 16 mois pour agir, la durée moyenne d’un projet de refonte est de plusieurs mois. Ne traînez pas, nous pouvons vous aider !

Mon site est sous Drupal 8

Si votre site est sous Drupal 8, l’échéance est dans 4 mois mais, la bonne nouvelle c’est que la route est bien plus droite. En effet, le principal reproche fait à Drupal 6 et 7 était la complexité des montées de versions majeures. Comme nous l’avons indiqué précédemment, passer de Drupal 7 à Drupal 9 est un coût non négligeable. Ce frein a été entendu par la communauté et la gestion des montées de version a été revue pour en tenir compte. Depuis Drupal 8, la montée de version est sans friction car pour peu que vous mainteniez votre site Drupal 8 à jour, le passage à Drupal 9 consiste à simplement retirer le code déprécié entre les deux versions. Ce qui est une quantité bien moindre que précédemment.

Le coût de la montée de version est donc quasiment le même que celui d’une montée intermédiaire. On parle de quelques jours tout au plus contre des semaines voire des mois précédemment (car on en profitait en général pour changer bien d’autres choses par la même occasion).

Votre équipe technique devra donc s’occuper de cela et ne devrait pas avoir de problèmes pour gérer cette montée de version. Les quelques freins qui peuvent exister étant des modules contribués non compatibles avec Drupal 9 mais ils sont minoritaires. 100% du top 200 des modules et 95% du top 1000 est compatible avec Drupal 9.

Vous souhaitez en savoir plus ? Vous souhaitez migrer votre site vers Drupal 9 ?
Contactez-nous !

Catégories
Drupal
Drupal 7
Drupal 8
Drupal 9
Tags
Drupal
Par Christophe MOLLET
Christophe Mollet

Les 10 modules Drupal 9 indispensables

Drupal possède déjà de nombreux modules de base, appelés module du cœur, extrêmement puissants et efficaces pour la construction de votre site web. Étant également un CMS très modulable et pouvant être personnalisé selon les besoins de chaque projet, il est important de connaître certains modules de la communauté, appelés module contrib, indispensables peu importe votre domaine. Un de nos experts Drupal vous présente, dans cet article, son TOP 10 des modules Drupal 9 les plus indispensables.

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

Pages