Template file includen
Ik ben bezig met het schrijven van een eigen template system, alleen ik heb nu één opstakel waar ik niet uit kom. Nu wil ik een template file in een andere laden, alleen het enige wat hij dan weer geeft is deze tekst:
"templates/default/home.tpl"
Nu is dit mijn simpele parser:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
error_reporting(0);
class parser {
var $templatecontent;
var $templatefile;
function parser($file) {
$this->templatefile = $file;
$this->templatecontent = file_get_contents($this->templatefile)or die("Fout: \"$this->templatefile\" kon niet geopend worden!");
}
function assign($block, $content) {
$block = '{' . $block . '}';
$this->templatecontent = str_replace($block, $content, $this->templatecontent);
}
function output() {
echo $this->templatecontent;
}
}
?>
error_reporting(0);
class parser {
var $templatecontent;
var $templatefile;
function parser($file) {
$this->templatefile = $file;
$this->templatecontent = file_get_contents($this->templatefile)or die("Fout: \"$this->templatefile\" kon niet geopend worden!");
}
function assign($block, $content) {
$block = '{' . $block . '}';
$this->templatecontent = str_replace($block, $content, $this->templatecontent);
}
function output() {
echo $this->templatecontent;
}
}
?>
Wat moet ik veranderen of erbij zetten, zodat ik dit op de juiste manier wordt weergegeven?
Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Geoffrey
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
error_reporting(E_ALL);
class parser {
var $templatecontent;
var $templatefile;
function parser($file) {
$this->templatefile = $file;
$this->templatecontent = file_get_contents($this->templatefile)or die("Fout: \"$this->templatefile\" kon niet geopend worden!");
}
function assign($block, $content) {
$block = '{' . $block . '}';
$this->templatecontent = str_replace($block, $content, $this->templatecontent);
}
function output() {
echo $this->templatecontent;
}
}
$parser = new parser ('.htaccess');
$parser->output ();
?>
error_reporting(E_ALL);
class parser {
var $templatecontent;
var $templatefile;
function parser($file) {
$this->templatefile = $file;
$this->templatecontent = file_get_contents($this->templatefile)or die("Fout: \"$this->templatefile\" kon niet geopend worden!");
}
function assign($block, $content) {
$block = '{' . $block . '}';
$this->templatecontent = str_replace($block, $content, $this->templatecontent);
}
function output() {
echo $this->templatecontent;
}
}
$parser = new parser ('.htaccess');
$parser->output ();
?>
Werkt bij mij prima!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
require_once("includes/config.inc.php");
require_once("includes/classes/class.parser.php");
$parse = new parser($template_dir."index.tpl");
$page = $_GET['p'];
switch ($page) {
case $page:
$inc = $template_dir.''.$page.'.tpl';
break;
default:
$inc = $template_dir.''.$default_page.'.tpl';
break;
}
$parse->assign("template_dir", $template_dir);
$parse->assign("titel", $site_title);
$parse->assign("content", $inc);
$parse->output();
?>
require_once("includes/config.inc.php");
require_once("includes/classes/class.parser.php");
$parse = new parser($template_dir."index.tpl");
$page = $_GET['p'];
switch ($page) {
case $page:
$inc = $template_dir.''.$page.'.tpl';
break;
default:
$inc = $template_dir.''.$default_page.'.tpl';
break;
}
$parse->assign("template_dir", $template_dir);
$parse->assign("titel", $site_title);
$parse->assign("content", $inc);
$parse->output();
?>
Gewijzigd op 01/01/1970 01:00:00 door Geoffrey
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
require_once 'includes/config.inc.php';
require_once 'includes/classes/class.parser.php';
$parse = new parser($template_dir."index.tpl");
$parse->output();
?>
require_once 'includes/config.inc.php';
require_once 'includes/classes/class.parser.php';
$parse = new parser($template_dir."index.tpl");
$parse->output();
?>
Alles werk prima voor de rest, alleen het laden van een .tpl file in een ander werkt niet. het enige wat ik dan zie in het veld waar ik die file wil laden is dus wat ik al eerder had gepost.
Als ik zo bij andere parsers kijk, dan gebruiken hun iets van een assignInclude tag of iets in die richting. Dat is het gene wat ik nodig heb.
Zou je me daar mee kunnen helpen?
ik ging er van uit dat als de waarde van $page (in werkelijkheid $_GET['p']) veranderd, dat ik niet een lijst van al mijn pagina's hoefde te maken.
Dit dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
require_once("includes/config.inc.php");
require_once("includes/classes/class.parser.php");
$parse = new parser($template_dir."index.tpl");
$page = $_GET['p'];
switch ($page) {
case 'home':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'diensten':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'foto':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'home':
$inc = $template_dir.''.$page.'.tpl';
break;
default:
$inc = $template_dir.''.$default_page.'.tpl';
break;
}
$parse->assign("template_dir", $template_dir);
$parse->assign("titel", $site_title);
$parse->assign("content", $inc);
$parse->output();
?>
require_once("includes/config.inc.php");
require_once("includes/classes/class.parser.php");
$parse = new parser($template_dir."index.tpl");
$page = $_GET['p'];
switch ($page) {
case 'home':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'diensten':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'foto':
$inc = $template_dir.''.$page.'.tpl';
break;
case 'home':
$inc = $template_dir.''.$page.'.tpl';
break;
default:
$inc = $template_dir.''.$default_page.'.tpl';
break;
}
$parse->assign("template_dir", $template_dir);
$parse->assign("titel", $site_title);
$parse->assign("content", $inc);
$parse->output();
?>