Deblan blog

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.


Ajouter un commentaire

Vous pouvez utiliser du markdown.Afficher l'aide.