diff --git a/ecrire/action/redirect.php b/ecrire/action/redirect.php
index 021ec5d4d51137492049f2a57d25f11657653c16..178fcdd1adee45a85b9e651c0d83b5905cd4027f 100644
--- a/ecrire/action/redirect.php
+++ b/ecrire/action/redirect.php
@@ -19,7 +19,8 @@ function action_redirect_dist()
 	$type = _request('type');
 	if (!preg_match('/^\w+$/', $type)) return;
 	if ($m = _request('var_mode')) {
-		$GLOBALS['var_urls'] = true; // forcer la mise a jour de l'url de cet objet !
+		// forcer la mise a jour de l'url de cet objet !
+		if (!defined('_VAR_URLS')) define('_VAR_URLS',true);
 		$m = 'var_mode='.urlencode($m);
 	}
 	$h = generer_url_entite_absolue(intval(_request('id')), $type, $m, '', true);
diff --git a/ecrire/balise/formulaire_admin.php b/ecrire/balise/formulaire_admin.php
index 11c21a87b2c91d7e3dce73097bd154d5dbd4de7e..fd3c95f676f66374d00fead39c85570bf478fb9c 100644
--- a/ecrire/balise/formulaire_admin.php
+++ b/ecrire/balise/formulaire_admin.php
@@ -70,9 +70,9 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
 	$env['divclass'] = $float;
 	$env['lang'] = admin_lang();
 	$env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
-	$env['debug'] = _VAR_PREVIEW ? "" : admin_debug();
+	$env['debug'] = ((defined('_VAR_PREVIEW') AND _VAR_PREVIEW) ? "" : admin_debug());
 	$env['analyser'] = (!$env['debug'] AND !$GLOBALS['xhtml']) ? '' : admin_valider();
-	$env['inclure'] = ($GLOBALS['var_inclure']?'inclure':'');
+	$env['inclure'] = ((defined('_VAR_INCLURE') AND _VAR_INCLURE)?'inclure':'');
 
 	if (!$use_cache)
 		$env['use_cache'] = ' *';
@@ -132,7 +132,7 @@ function admin_objet()
 // http://doc.spip.org/@admin_preview
 function admin_preview($type, $id, $desc=null)
 {
-	if (_VAR_PREVIEW) return '';
+	if (defined('_VAR_PREVIEW') AND _VAR_PREVIEW) return '';
 
 	if (!$desc) {
 		$trouver_table = charger_fonction('trouver_table','base');
diff --git a/ecrire/inc/filtres_images_lib_mini.php b/ecrire/inc/filtres_images_lib_mini.php
index d4431251dfbdf94d064308589302caaaa6ffefcb..604ea7857b5a36aa70fc39554d75489dc2aae0a2 100644
--- a/ecrire/inc/filtres_images_lib_mini.php
+++ b/ecrire/inc/filtres_images_lib_mini.php
@@ -193,7 +193,7 @@ function _image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cr
 	
 	$creer = true;
 	// si recalcul des images demande, recalculer chaque image une fois
-	if (isset($GLOBALS['var_images']) && $GLOBALS['var_images'] && !isset($images_recalcul[$fichier_dest])){
+	if (defined('_VAR_IMAGES') AND _VAR_IMAGES AND !isset($images_recalcul[$fichier_dest])){
 		$images_recalcul[$fichier_dest] = true;
 	}
 	else {
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index b11e28ecb3e473491f45bde1bd62c10decf22bae..5785c2e17950ab52e21c97732b1c35221ef348fc 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1526,10 +1526,7 @@ function init_var_mode(){
 	if (!$done) {
 		// On fixe $GLOBALS['var_mode']
 		$GLOBALS['var_mode'] = false;
-		$GLOBALS['var_preview'] = false;
-		$GLOBALS['var_images'] = false;
-		$GLOBALS['var_inclure'] = false;
-		$GLOBALS['var_urls'] = false;
+
 		if (isset($_GET['var_mode'])) {
 			// tout le monde peut calcul/recalcul
 			if ($_GET['var_mode'] == 'calcul'
@@ -1546,36 +1543,35 @@ function init_var_mode(){
 				)) {
 					switch($_GET['var_mode']){
 						case 'preview':
-							// forcer le compilo et ignorer les caches existants
-							$GLOBALS['var_mode'] = 'recalcul';
-							// truquer les boucles
-							$GLOBALS['var_preview'] = true;
+							// basculer sur les criteres de preview dans les boucles
 							if (!defined('_VAR_PREVIEW')) define('_VAR_PREVIEW',true);
+							// forcer le calcul
+							$GLOBALS['var_mode'] = 'calcul';
 							// et ne pas enregistrer de cache
-							$GLOBALS['var_nocache'] = true;
+							if (!defined('_VAR_NOCACHE')) define('_VAR_NOCACHE',true);
 							break;
 						case 'inclure':
 							// forcer le compilo et ignorer les caches existants
 							$GLOBALS['var_mode'] = 'calcul';
-							$GLOBALS['var_inclure'] = true;
+							if (!defined('_VAR_INCLURE')) define('_VAR_INCLURE',true);
 							// et ne pas enregistrer de cache
-							$GLOBALS['var_nocache'] = true;
+							if (!defined('_VAR_NOCACHE')) define('_VAR_NOCACHE',true);
 							break;
 						case 'urls':
 							// forcer le compilo et ignorer les caches existants
 							$GLOBALS['var_mode'] = 'calcul';
-							$GLOBALS['var_urls'] = true;
+							define('_VAR_URLS',true);
 							break;
 						case 'images':
 							// forcer le compilo et ignorer les caches existants
 							$GLOBALS['var_mode'] = 'calcul';
 							// indiquer qu'on doit recalculer les images
-							$GLOBALS['var_images'] = true;
+							if (!defined('_VAR_IMAGES')) define('_VAR_IMAGES',true);
 							break;
 						case 'debug':
 							$GLOBALS['var_mode'] = 'debug';
 							// et ne pas enregistrer de cache
-							$GLOBALS['var_nocache'] = true;
+							if (!defined('_VAR_NOCACHE')) define('_VAR_NOCACHE',true);
 							break;
 						default :
 							$GLOBALS['var_mode'] = $_GET['var_mode'];
@@ -1598,7 +1594,6 @@ function init_var_mode(){
 				}
 			}
 		}
-		if (!defined('_VAR_PREVIEW')) define('_VAR_PREVIEW',false);
 		$done = true;
 	}
 }
diff --git a/ecrire/public/boucles.php b/ecrire/public/boucles.php
index 9d2cc97f9e31f1b48038afd34bbb2a93efdbb53a..d9ae8685c4f812ac7fc64ac890cb1d988b907e59 100644
--- a/ecrire/public/boucles.php
+++ b/ecrire/public/boucles.php
@@ -80,7 +80,7 @@ function boucle_DOCUMENTS_dist($id_boucle, &$boucles) {
 
 		$boucle->group[] = "$id_table.id_document";
 
-		if (_VAR_PREVIEW) {
+		if (defined('_VAR_PREVIEW') AND _VAR_PREVIEW) {
 			array_unshift($boucle->where,"'(aa.statut IN (\'publie\',\'prop\') OR bb.statut  IN (\'publie\',\'prop\') OR rr.statut IN (\'publie\',\'prive\')"
 			.(test_plugin_actif('forum')? " OR ff.statut IN (\'publie\',\'prop\')":"")
 			.")'");
diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php
index 259da68fc29f16d44e26ce36f5f143622a3890a3..4f636656227598a4a7bf4845a8034c1d6965b16f 100644
--- a/ecrire/public/cacher.php
+++ b/ecrire/public/cacher.php
@@ -94,7 +94,7 @@ function gunzip_page(&$page) {
 /// http://doc.spip.org/@cache_valide
 function cache_valide(&$page, $date) {
 
-	if (isset($GLOBALS['var_nocache']) AND $GLOBALS['var_nocache']) return -1;
+	if (defined('_VAR_NO_CACHE') AND _VAR_NO_CACHE) return -1;
 	if (isset($GLOBALS['meta']['cache_inhib']) AND $_SERVER['REQUEST_TIME']<$GLOBALS['meta']['cache_inhib']) return -1;
 	if (defined('_NO_CACHE')) return (_NO_CACHE==0 AND !isset($page['texte']))?1:_NO_CACHE;
 	if (!$page OR !isset($page['texte']) OR !isset($page['entetes']['X-Spip-Cache'])) return 1;
@@ -142,7 +142,7 @@ function creer_cache(&$page, &$chemin_cache) {
 	// grave s'est presentee (compilation du squelette, MySQL, etc)
 	// le cas var_nocache ne devrait jamais arriver ici (securite)
 	// le cas spip_interdire_cache correspond a une ereur SQL grave non anticipable
-	if ((isset($GLOBALS['var_nocache']) AND $GLOBALS['var_nocache'])
+	if ((defined('_VAR_NO_CACHE') AND _VAR_NO_CACHE)
 		OR defined('spip_interdire_cache'))
 		return;
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index bcfe72eadf958f5185c37d6812f07adfda6219bb..9bc70d05fe9a39a9bf2825d3f89fa737f74ebde1 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -271,12 +271,13 @@ function calculer_boucle($id_boucle, &$boucles) {
 				if (isset($s['post_date']) AND $s['post_date']
 					AND $GLOBALS['meta']["post_dates"] == 'non'){
 					$date = $id.'.'.preg_replace(',\W,','',$s['post_date']); // securite
-					array_unshift($boucle->where,"\n_VAR_PREVIEW?'':quete_condition_postdates('$date',"._q($boucle->serveur).")");
+					array_unshift($boucle->where,"\nquete_condition_postdates('$date',"._q($boucle->serveur).")");
 				}
 				array_unshift($boucle->where,
 					"\nquete_condition_statut('$mstatut',"
-					."_VAR_PREVIEW?"._q($s['previsu']).":"._q($s['publie'])
-					.","._q($boucle->serveur).")"
+						. _q($s['previsu']).","
+						._q($s['publie']).","
+						._q($boucle->serveur).")"
 				);
 			}
 		}
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 8f7b4cf8b6f4340c79ef8ee707a48039dd28ab39..213d0e4e516f7c96d51da0355d71d1924948df00 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -122,7 +122,7 @@ function squelette_traduit($squelette, $sourcefile, $phpfile, $boucles)
  */ " ;
 
 	$code = '<'. "?php\n" . $code . join('', $boucles)  . "\n?" .'>';
-	if (!isset($GLOBALS['var_nocache']) OR !$GLOBALS['var_nocache'])
+	if (!defined('_VAR_NO_CACHE') OR !_VAR_NO_CACHE)
 		ecrire_fichier($phpfile, $code);
 	return $code;
 }
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index 914f0fadc5ff94ea0696c1fea0f6178ed70abf3b..b6eb0e8ae1453ad8b1025bad0c4e7ff29a95d06e 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -152,16 +152,15 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='')  {
 			$page['entetes']['X-Spip-Cache'] = isset($GLOBALS['delais'])?$GLOBALS['delais']:36000;
 
 		$page['contexte'] = $contexte;
+	  
 		// faire remonter le fichier source
-		//if ($GLOBALS['var_inclure'])
-
-		static $var_inclure = false;
-		if ($GLOBALS['var_inclure']){
+		static $js_inclus = false;
+		if (defined('_VAR_INCLURE') AND _VAR_INCLURE){
 			$page['sourcefile'] = $sourcefile;
 			$page['texte'] =
 				"<div class='inclure_blocs'><h6>".$page['sourcefile']."</h6>".$page['texte']."</div>"
-				. ($var_inclure?"":"<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs > h6:first-child').hover(function(){jQuery(this).parent().addClass('hover')},function(){jQuery(this).parent().removeClass('hover')})});</script>");
-			$var_inclure = true;
+				. ($js_inclus?"":"<script type='text/javascript'>jQuery(function(){jQuery('.inclure_blocs > h6:first-child').hover(function(){jQuery(this).parent().addClass('hover')},function(){jQuery(this).parent().removeClass('hover')})});</script>");
+			$js_inclus = true;
 		}
 
 		// Si un modele contenait #SESSION, on note l'info dans $page
diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php
index 027cf08fc63cb92d066c572a86a1319029165a87..c4c1f940949428e23479e135ff3b5c60d2c0ecf5 100644
--- a/ecrire/public/quete.php
+++ b/ecrire/public/quete.php
@@ -87,6 +87,8 @@ function quete_profondeur($id, $connect='') {
  * @return string
  */
 function quete_condition_postdates($champ_date, $serveur='') {
+	if (defined(_VAR_PREVIEW) AND _VAR_PREVIEW)
+		return "1=1";
 	return
 	  ($GLOBALS['meta']['date_prochain_postdate'] > time())
 			? "$champ_date<".sql_quote(date('Y-m-d H:i:s',$GLOBALS['meta']['date_prochain_postdate']),$serveur)
@@ -99,11 +101,18 @@ function quete_condition_postdates($champ_date, $serveur='') {
  *
  * @param string $mstatut
  *  le champ de la table sur lequel porte la condition
- * @param string $liste
- *  statut ou liste des statuts separes par une virgule
+ * @param string $previsu
+ *  mode previsu : statut ou liste des statuts separes par une virgule
+ * @param string $publie
+ *  mode publie : statut ou liste des statuts separes par une virgule
+ * @param string $serveur
+ *  serveur de BDD
  * @return array
  */
-function quete_condition_statut($mstatut,$liste, $serveur=''){
+function quete_condition_statut($mstatut,$previsu,$publie, $serveur=''){
+	$liste = $publie;
+	if (defined(_VAR_PREVIEW) AND _VAR_PREVIEW)
+		$liste = $previsu;
 	$not = false;
 	if (strncmp($liste,'!',1)==0){
 		$not = true;