Drupal, scripter en dehors du CMS

Un post très succinct qui fera office de pense-bête.

Si comme moi vous devez scripter en dehors des outils Drupal mais que vous avez besoin des données générées via le CMS (session, données de l'utilisateurs, etc), vous aurez besoin de 3, voir 4 lignes de code supplémentaires.

En effet, Drupal modifie le comportement de PHP "standard" et il est impossible de récupérer une session php générée dans le CMS en utilisant ce code :

<?php
session_start();
var_dump($_SESSION); // affiche array(0) { }

Du fait de cette restriction et on ne peut absolument rien faire de potable.

Les 3 lignes de code "magiques" sont les suivantes :

<?php
define("DRUPAL_ROOT", getcwd() );
require_once('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);

Ici, on admet que le script est à la racine du CMS. Si vous êtes dans une autre arborescence, il faudra ajouter un chdir avant le define :

<?php
chdir('/chemin/vers/drupal');
define("DRUPAL_ROOT", getcwd() );
require_once('./includes/bootstrap.inc');
drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);

Vous pourrez constater que ça fonctionne bien avec un var_dump de $user ou $_SESSION.

Simon Vieille

Cet article a été rédigé par Simon Vieille, développeur français animé par la culture du libre et du hacking.

Il intervient à Tinternet & Cie, une association d’éducation numérique populaire. Depuis septembre 2022, il est lead developer à Trinaps, un opérateur télécom local et indépendant.


Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown

Renouveler