comparison includes/class.skeleton.php @ 32:4cea8b128fdd

Possibilité de choisir des templates différents en fonction du type de sortie. Le fichier templates.conf permet d'associer à chaque type de sortie (correspondant à une section du fichier INI) des templates pour le squelette, les posts et les commentaires. Il est possible de définir virtuellement une infinité de type de sorties différents, pour le moment seul de quoi obtenir un flux Atom a été ajouté. Pour changer le type de sortie, il faut passer en GET au script appellant un paramètre outputType. Si le paramètre reçu ne correspondant à aucun des types de sorties définis dans templates.conf, alors on prend du xhtml par défaut.
author Franck Deroche <webmaster@defr.org>
date Mon, 05 Nov 2007 09:06:46 +0100
parents 710fe2fd2ff7
children e776701841ba
comparison
equal deleted inserted replaced
31:2d98421d43da 32:4cea8b128fdd
6 private $showCalendar = false; 6 private $showCalendar = false;
7 private $calendarMonth; 7 private $calendarMonth;
8 private $calendarYear; 8 private $calendarYear;
9 private $useXML; 9 private $useXML;
10 10
11 const OUTPUT_XHTML = 'xhtml';
12 const OUTPUT_ATOM = 'atom';
13 const OUTPUT_RSS = 'rss';
14
15 private static $outputType = OUTPUT_XHTML;
16 private static $templates = array();
17
11 public function __construct() { 18 public function __construct() {
12 parent::__construct('main.xml'); 19 parent::__construct(Skeleton::getTemplateFile('skeleton'));
13 parent::shouldStripAttributesInTemplateNS(true); 20 parent::shouldStripAttributesInTemplateNS(true);
14 $this->styleSheets = array(); 21 $this->styleSheets = array();
15 $this->addDefaultSheets(); 22 $this->addDefaultSheets();
16 $this->blogPosts = array(); 23 $this->blogPosts = array();
17 $this->useXML = empty($_SERVER['HTTP_ACCEPT']) || 24 $this->useXML = empty($_SERVER['HTTP_ACCEPT']) ||
214 header('Content-Type: application/xhtml+xml; charset=utf-8'); 221 header('Content-Type: application/xhtml+xml; charset=utf-8');
215 else 222 else
216 $returnValue = ereg_replace('<\?xml[^\?]*\?>', '', $returnValue); 223 $returnValue = ereg_replace('<\?xml[^\?]*\?>', '', $returnValue);
217 return $returnValue; 224 return $returnValue;
218 } 225 }
226
227 public static function getTemplateFile($type) {
228 if(count(Skeleton::$templates) == 0) {
229 // Construction du tableau des différents templates
230 // permettant de répondre au "type" de sortie demandé
231 $iniFile = parse_ini_file('templates.conf', true);
232
233 $format = Factory::getRequete()
234 ->get('outputType', null, Skeleton::OUTPUT_XHTML);
235
236 if(array_key_exists($format, $iniFile)) {
237 Skeleton::$templates = $iniFile[$format];
238 Skeleton::$outputType = $format;
239 } else {
240 Skeleton::$templates = $iniFile[Skeleton::OUTPUT_XHTML];
241 Skeleton::$outputType = Skeleton::OUTPUT_XHTML;
242 }
243 }
244 return Skeleton::$templates[$type];
245 }
246
247 public static function getOutputType() {
248 // On s'assure que la demande a été analysée, si ce n'est pas
249 // le cas on le fait maintenant, en demandant un template
250 if(count(Skeleton::$templates) == 0)
251 Skeleton::getTemplateFile('skeleton');
252 return Skeleton::$outputType;
253 }
219 } 254 }
220 ?> 255 ?>