Réflexion autour du CMS

Dans cet article, je vous propose de vous présenter rapidement les grands principes du CMS puis de vous parler des raisons qui m'ont poussé vers cette orientation particulière. Dans un second temps, nous verrons comment ces CMS s’intègrent dans le contexte de projets réels. Le personnage clef dans la réalisation d’un site web est le développeur. Souvent Ingénieur, nous parlerons des origines du métier.

Pour finir j'aborderai les concepts oubliés du CMS et l'importance du développeur dans cette approche de réalisation de sites web.

Drupal 7 – Réécriture d’url dynamique

logo_drupal

Il arrive parfois que certaines urls soient dynamiques, et que l'on souhaite les réécrire par des urls statiques.

Par rapport à la réécriture d'url statique, que ce soit une page custom ou une page de contenu (cela pourrait réaliser via le backoffice Drupal. Et éventuellement de définir des patterns par type de contenu avec Pathauto), ce sera un peu plus compliqué pour la réécriture d’une url dynamique.

Nous allons voir comment faire cette réécriture.

Import d’un site existant dans aegir depuis un dépôt git

gdo_aegir

Dans cet article, nous allons voir comment importer un site existant dans aegir depuis un dépôt git, mais tout d'abord, voici un petit préambule pour bien comprendre le vocabulaire d'aegir.

Imaginons que vous ayez un site sur monurl.fr qui pointe sur /var/www/monsite (la plateforme) dans votre vhost avec un sous-répertoire /sites/monurl.fr (le site), le tout géré par votre dépôt git sous gitlab.

Pour faire simple aegir appelle un drupal sans base de données, une plateforme et un drupal avec sa base de données, un site :

  • une plateforme au sens aegir, c’est le dépôt git d'un répetoire drupal avec sa branche courante (qu’on ne peut plus changer à postériori)
  • une site au sens aegir c’est : à l'intérieur d'une plateforme, un répertoire dans sites avec le settings.php (généré par aegir, il ne faut pas y toucher), une base de données, un alias, et un vhost

Installation d’aegir pour gérer un parc de sites Drupal

gdo_aegir

Aegir est un outil web qui permet de piloter un parc de sites Drupal. Ce qu'on fait en général via des commandes drush (drush updb, drush fra, etc...), on peut le faire via un site web directement. C'est un site Drupal, qui pilote la gestion d'autres sites Drupal. Bien sûr, on pourrait faire tout ça et même plus via des scripts ou quelques outils de supervision.

L'intérêt, c'est de donner à l'utilisateur (le client) la possibilité de créer des sites à la volé par exemple ou de lancer des opérations sur plusieurs sites à la fois sans "mettre les mains dans le cambouis".

Améliorer Behat pour Drupal avec 3 extensions : screenshot, code coverage, et watchdog

behat-logo

Behat est très puissant pour faire des tests de non régression. Comment le rendre encore plus puissant ? Avec 3 petites extensions très pratiques pour le debug :

  1. En affichant les warning rajoutés dans le watchdog automatiquement à la fin d'un test. Très pratique pour s'assurer qu'il n'y a pas d'erreur cachées pendant l'exécution des tests
  2. En rajoutant un test de couverture du code avec xdebug et phpcov pour voir si tout est bien testé
  3. En prenant un screenshot automatique de l'étape behat si elle plante, afin de pouvoir voir où est le problème sans avoir à passer par un "Then I break"

Démarche d’amélioration des performances Drupal

Améliorer les performances d'un site (Drupal ou non) peut se révéler être une tâche complexe puisque, par définition, tous les niveaux d'architecture matérielle et logicielle sont potentiellement concernés (Apache, PHP, MySQL, infrastructure).

Une démarche rigoureuse et méthodique est impérative afin de ne pas se lancer dans des optimisations en aveugle. En voici les principales étapes :

Constater, Reproduire, Diagnostiquer, Prioriser, Corriger, Mesurer, Itérer

Pour chaque étape, nous mentionnerons certains outils classiquement utilisés, sans être exhaustif. Chacun d'entre eux mériterait un développement à part.

Création de portail avec Liferay

partners-logos-liferay-v2

Liferay est un portail Open Source Java. Il est compatible avec les portlets (JSR 168 et 286). Une version communautaire CE (gratuite) et une version professionnelle EE sont disponibles.

L’architecture est modulaire et permet d’intégrer de nombreuses technologies en fonction des choix et besoins des projets. Liferay est basé sur JavaEE et inclus depuis la version 7 un container OSGi. Liferay inclut également : spring, elasticsearch, hibernate, ehcache…

Au niveau frontend Liferay imposait alloyUI, les développeurs peuvent maintenant utiliser la librairie de leur choix (angular, react..). De base, la nouvelle version de Liferay (Version 7) contient Bootstrap, SaSS et EcmaScript 2015.

De nombreuses fonctionnalités sont disponibles et peuvent être adaptées au besoin du portail. La solution intègre un CMS pour la gestion de contenu, de nombreuses portlets (applications autonomes) comme wiki, agenda, blog, une GED et un mécanisme de droits et de gestion des utilisateurs.