j cop
Erfahrenes Mitglied
Hallo,
ich arbeite zur zeit an meinem Templatesystem. Alles klappt prima. Das einzige Problem: Ich schaff es nicht auch Blöcke einzubauen.
Mit Block meine ich sowas(in der html-Datei):
Aber zuerst mal das Templatesystem, wie es jetzt ist:
Ich will nun im PHP-Code einfach nur das angeben müssen, um den Block zu aktivieren:
Wenn ich den Block nie mit assign_block aktiviere soll er ganz weggelassen werden(z. B. um Inhalte nur für registierte Benutzer anzuzeigen). Manche Blöcke müssen auch mehrmals verwendet werden(um Inhalte aus der Datenbank anzuzeigen).
Ich glaub, das war es soweit.
Würde mich freuen wenn ihr irgendeine Idee habt
Danke!!
ich arbeite zur zeit an meinem Templatesystem. Alles klappt prima. Das einzige Problem: Ich schaff es nicht auch Blöcke einzubauen.
Mit Block meine ich sowas(in der html-Datei):
Code:
<!--BEGIN block-->
{block.text}
{block.platzhalter}
<!--END block-->
PHP:
<?php
class template
{
public $template_dir = "";
public $language_dir = "";
public $left_delimiter = '{';
public $right_delimiter = '}';
protected $template_file = "";
protected $language_file = "";
protected $template_name = "";
protected $template = array();
public $tplvars = array();
public function template($tpl_dir = "", $lang_dir = "")
{
// Template Ordner ändern
if (!empty($tpl_dir)) {
$this->template_dir = $tpl_dir;
}
// Language Ordner ändern
if (!empty($lang_dir)) {
$this->language_dir = $lang_dir;
}
return true;
}
/**
* Die Templatedatei öffnen
*
* @access public
* @param string $file Dateiname des Templates
* @return boolean
*/
public function load($file,$name)
{
// Die Eigenschaften zuweisen
$this->template_name = $file;
$this->template_file = $this->template_dir.$file;
// Wenn ein Dateiname übergeben wurde, versuchen, die Datei zu öffnen
if(!empty($this->template_file)) {
if($fp = @fopen($this->template_file, "r")) {
// Den Inhalt des Templates einlesen
$this->template[$name] = fread($fp, filesize($this->template_file));
fclose ($fp);
}
else
{
return false;
}
}
return true;
}
/**
* Die Standard-Platzhalter ersetzen
*
* @access public
* @param string $replace Name of var which should be replaced
* @param string $replacement Text with which to replace the var
* @return boolean
*/
public function assign($vars)
{
reset ($vars);
while (list($key, $val) = each($vars))
{
$this->tplvars[0][$key] = $val;
}
foreach($vars as $key => $wert)
{
$this->template = str_replace($this->left_delimiter.$key.$this->right_delimiter, $wert, $this->template);
}
return true;
}
/**
* Das fertige Template ausgeben
*
* @access public
* @return boolean
*/
public function out($name)
{
echo $this->template[$name];
return true;
}
}
?>
Ich will nun im PHP-Code einfach nur das angeben müssen, um den Block zu aktivieren:
PHP:
$tpl->assign_block("Name des Blocks",array(Platzhalter =>zuweisen))
Wenn ich den Block nie mit assign_block aktiviere soll er ganz weggelassen werden(z. B. um Inhalte nur für registierte Benutzer anzuzeigen). Manche Blöcke müssen auch mehrmals verwendet werden(um Inhalte aus der Datenbank anzuzeigen).
Ich glaub, das war es soweit.
Würde mich freuen wenn ihr irgendeine Idee habt
Danke!!