La recherche dans un site Drupal avec SearchAPI

La recherche est un élément primordial dans un site web.

Les moteurs d'indexation tel que SolR ou ElasticSearch ont la puissance nécessaire pour répondre aux demandes fortes de recherche de nos clients et de simplicité d'utilisation des internautes. Cependant, la mise en place d'un tel moteur d'indexation a un coût important. Il existe sous Drupal une solution alternative à moindre coût. Nous utilisons pour cela un moteur d'indexation en base de données.

Ce moteur d'indexation est fournit par le module search_api_db. Cette API permet de mettre en place une recherche FullText et à facette dans un site Drupal en stockant les indexes en base de données.

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.

Drupal theme api : Hook into the theme (partie 1)

Drupal_logo

Je vous propose une série d'articles qui ont pour but de discuter de l'api Drupal dédiée au rendu et à l'affichage, afin de mieux comprendre ce processus et la manière dont s'articulent les nombreux hooks et fonctions à disposition du développeur et du thémeur.

Ces articles sont basés sur la version 7.x de Drupal. Sachez cependant qu'un certain nombre d'éléments restent très similaires voire identiques en ce qui concerne la version 8.x.

Ce premier article présentera la theme api : comment sont générés des éléments html grâce aux fonctions de thème et comment les surcharger. Un second article, toujours sur la theme layer, se focalisera sur les templates et les fonctions de preprocess. D'autres articles sont prévus afin de discuter de la render api et autres subtilités.