Template Model¶
Dieses Model stammt vom 68kb Script ab.
Die originale Anleitung gibt es hier
Ich habe es nur etwas angepasst! Copyright liegt weiterhin bei http://68kb.com
Benutzung¶
In der Datei /system/application/config/config.php muss folgendes hinzugefügt werden:
1 $config['template']='default'; 2
Erklärung:
Über diese Variable wird definiert, welches Design/Template gewählt angezeigt wird.
In der Datei /system/application/config/autoload.php muss folgendes hinzugefügt werden:
1 $autoload['model'] = array('template_model'); 2
Erklärung:
Durch diesen Eintrag, wird das Template Model automatisch geladen und muss im Code nicht mehr "reingeladen" werden.
Nun legen wir im Ordner /system/application/models/ die Datei template_model.php an
und fügen anschließend folgenden Code ein:
1 <?php 2 3 class Template_model extends model 4 { 5 function Template_model() 6 { 7 parent::Model(); 8 $this->obj =& get_instance(); 9 } 10 11 function _testexists($body) 12 { 13 $file = 'templates/'.$this->config->item('template').'/'.$body.'.php'; 14 if (!file_exists($file)) 15 { 16 return false; 17 } 18 return true; 19 } 20 21 function display($template, $data=NULL) 22 { 23 24 $body_file='templates/'.$this->config->item('template').'/'.$template; 25 26 if($this->_testexists($body_file)) 27 { 28 $data['body'] = $this->load->view($body_file, $data, true); 29 } 30 else 31 { 32 $data['body'] = $this->load->view('templates/default/'.$template, $data, true); 33 } 34 35 $this->load->view('templates/'.$this->config->item('template').'/layout.php',$data); 36 } 37 38 function part($template, $data=NULL) 39 { 40 41 $body_file='templates/'.$this->config->item('template').'/'.$template; 42 43 if($this->_testexists($body_file)) 44 { 45 return $this->load->view($body_file, $data, true); 46 } 47 else 48 { 49 return $this->load->view('templates/default/'.$template, $data, true); 50 } 51 52 } 53 54 } 55
Erklärung:
Funktion display: Prüft ob das geforderte Template (z.B. contact.php) im Template Verzeichnis liegt (z.B. myTheme),
wenn nicht, nimmt er das Template "contact.php" aus dem "default" Ordner.
In der Funktion Display wird das Layout mit eingebunden.
Funktion part: Prüft wie bei Display ob das Template existiert. Bindet aber das Layout nicht mit ein.
(Für Helper nützlich)
Nun muss im Ordner /system/application/views/ folgende Ordner Struktur eingebaut werden:
/views - templates/ -- default/
Nun müssen alle vorhandenen Templates aus dem views Ordner in den Ordner default geschoben werden.
Jetzt muss noch die Datei layout.php im Ordner default angelegt werden:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- Head Tags --> </head> <body> <?php echo $body; ?> </body> </html>
Als letztes müssen die vorhanden
1 $this->load->view('template_name',$data); 2
durch
1 $this->template_model->display('template_name',$data); 2
ersetzt werden.
Um ein Template ohne Layout dazustellen nimmt man einfach
1 $this->template_model->part('template_name',$data); 2
Beide Funktionen funktionieren auch ohne den zweiten Parameter ($data).