Hi mensen,

Ik ga dus nu voor mijn site een template engine knutselen, maar ik heb al bij de scripts gekeken, maar daar kan ik niet zo veel uit op maken hoe het nou precies werkt...
Wat is de beste manier om een GOEDE template engine te maken? (de reden dat ik niet smarty e.d. download, omdat ik 1: die niet snap 2: die niet werkt op mijn host(kweenie waarom) 3: ik wil niet zo iets uitgebreid, ik wil het gewoon zelf kunnen maken, niet dat ik alles download.. ik heb het veel liever zelf gemaakt.. + dat ik dan geen reclame op mijn site hoef te zetten...

Iemand?

MvG,
Niek
niek schreef op 21.07.2006 20:00
maar als ik het goed begrijp doet dit niet meer dan [pname] en [content] vervangen door een variabele?

Niet lullig bedoelt ofzo, integendeel, ik probeer het te snappen!!??


Het komt er op neer dat dat dus zo is?
Ja niek ik denk het wel en gewoon doorvragen wanneer je iets niet snapt!

Wanneer ik jouw vraag goed begrijp wil je graag een template maken en deze toepassen in de simpele template-engine zoals deze hier in een tutorial staat?
ja inderdaad.
Om mee te beginnen dus bijvoorbeeld gewoon zon structuur:

<html>
<head>
<title>dynamisch invullen door tpl engine</title>
</head>
<body>
dynamisch invullen door tpl, MAAR! ander php bestand! (functie include?)
</body>
</html>

Ik kom er alleen neit uit hoe ik met die simpele parser hier bij de scripts een ander script kan includen, ik krijg deze error:

Warning: include(registger.php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\xampp\htdocs\template\parser\parser.php on line 5

Warning: include() [function.include]: Failed opening 'registger.php' for inclusion (include_path='.;C:\Program Files\xampp\php\pear\') in C:\Program Files\xampp\htdocs\template\parser\parser.php on line 5


met gewoon deze code:
<?
require_once("parser.class.php"); // het script dus
$parse = new parser("template.tpl"); // de template
$parse->assign("pname", "henk en annie zitten op de wc"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", include 'registger.php'); // zie hierboven
$parse->output(); // de pagina outputten
?>

iemand?
We gaan kijken of we dit aan de praat krijgen want ik ga gewoon met je mee doen en ga er een apart mapje on-line voor maken hier:

www.funnybunny.info/parser.php

is zien wat gaat lukken.

Heb nu deze pagina gemaakt en staat in de include-map:
class-parser.php

<?php
# NRSTP - Nille's Real Simple Template Parser
# Copyright 2006 @ Nille
# [email protected]
error_reporting(0);
class parser 
{
	var $versie = "1.0";
	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;
	}
}
?>


nu moet je dus een idex.tpl maken en deze staat in de map template:


<html>
<head>
<title>[pname]</title>
</head>
<body>
[content]
</body>
</html>


dan staat in de root parser.php

<?php
require_once("include/class-parser.php"); // het script dus
$parse = new parser("template/index.tpl"); // de template
$parse->assign("pname", "parser voorbeeld"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", "Dit is een voorbeeld"); // zie hierboven
$parse->output(); // de pagina outputten
?>


ps ik ga die tutorial als uitgangspunt nemen deze:
http://www.phphulp.nl/php/scripts/5/686/
die heb ik nu ook, ik had dus van die allles letterlijk overgenomen, werkte PERFECT! alleen nu wil ik een php file include (zie hierboven) maar dan krijg k dus die error!
Ga maar naar de link en kijk maar hij doet het !!

http://www.funnybunny.info/parser.php

PS wel de juiste mappen ervoor vermelden. kijk maar goed in mijn voorbeeld. het maakt namelijk niet uit hoe je je bestand noemt mits de verwijzing maar gelijk is wanneer je afwijkt van de code die er staat. deze dient dan ook te worden gewijzigd evenals mijn voorbeeld waarbij ik een en ander in mapjes heb gedaan.
dat werkte idd ook bij mij, maar het includen van een ander PHP bestand (als content) wil niet werken!
OK ga ik proberen en wanneer ik je goed begrijp dit stuk:


$parse->assign("content", "Dit is een voorbeeld"); // zie hierboven


hier wil je bijv. test.php aan toevoegen en dan de content van test.php laten weergeven?

En wanneer je dit toepast?

VERBETERING!!
Leuk simpel template script, maar wat als je:

<html>
<head>
<title>[pname]</title>
</head>
<body>
[content]
</body>
</html> 

Zou kunnen vervangen door een nieuw bestand template.php met als inhoud:

<?php
echo '<html>',"\n",
'<head>',"\n",
'<title>',$pname,'</title>',"\n",
'</head>', "\n",
'<body>',"\n",
$content, "\n",
'</body>',"\n",
'</html>',"\n";
?>
Heb ik net gedaan en geeft uiteraard letterlijk weer wat er staat kijk maar ;-0)
maar waarom werkt dan bv dit niet:

<?
require_once("parser.class.php"); // het script dus
$parse = new parser("template.tpl"); // de template
$parse->assign("pname", "henk en annie zitten op de wc"); //naam van blok zonder [ of ] + inhoud
$parse->assign("content", include 'registger.php'); // zie hierboven
$parse->output(); // de pagina outputten
?>

wat ik dus net ff in elkaar had geflanst?

Reageren