Alors dans le bootstrap.php (dans Config) je mets la ligne :
Config::write('Maintenance',true);//Ou false si je suis plus en maintenance...
Puis dans le fichier AppController.php dans les controllers, dans la fonction beforeFilter, je fais en sorte de bloquer seulement les controllers de présentation (pages, services et products). Je ne bloque surtout pas le prefix admin et les controllers contact et medias. Bien sur je change le layout par default pour éviter de faire appel à des éléments en maintenance. J'ai aussi créé un controller maintenance qui a une fonction index seulement pour afficher le message de maintenance (d'ailleur il se peut du coup que votre message soit en base de donnée, ce qui n'est pas le cas pour moi ^^). Ca donne ça :
if(Configure::read('Maintenance')){//Si la variable Maintenance est à true!
if(isset($this->request->params'prefix']) && ($this->request->params'prefix'] == 'admin' or $this->request->params'prefix'] == 'membre')){//Je vérifie le prefix
$this->layout = 'admin'; // et j'y place le layout admin (oui pour l'administration)
}else{
$this->layout = 'maintenance';//Si non je suis en maintenance quoi qu'il arrive
if($this->request->params'controller'] == 'pages' or $this->request->params'controller'] == 'products' or $this->request->params'controller'] == 'services'){
$this->redirect(array('controller'=>'maintenance','action'=>'index'));//Redirection vers la page de maintenance.
}
}
}
}
Voilà :D