[PHP] Welke Template engine?

Pagina: 1
Acties:
  • 266 views sinds 30-01-2008
  • Reageer

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
Dag beste PHP-ers,
Ik ben opzoek naar een goeie template-engine in PHP. Ik het al FastTemplate gebruikt, en dat werk in principe wel redelijk. Maar ik wil eigenlijk wat meer mogelijkheden.

Wie kent er goeie template-engines (php scripts dus... geen cgi-bin)?

|_____vakje______|


Verwijderd

Ik vond XTemplate wel lekker werken...Deze kan je vinden op http://phpclasses.upperdesign.com/browse.html/package/62

Verwijderd

PHPLib http://phplib.netuse.de/index.php3 werkt wel grappig, kun je in iedergeval wat van leren

Verwijderd

Ik werk gewoon met de commando's include en virtual, daarmee kan ik zelfs de uitkomsten van cgi-scripts op mijn pagina plaatsen, en hele websites in maar 1 pagina maken. Een voorbeeld daarvan is www.vanzwamcs.com/home , Deze is alleen nog niet af, heb ik nog geen tijd voor gehad.

  • Tom
  • Registratie: Juni 1999
  • Niet online

Tom

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 02 november 2000 12:57 schreef eldeejee het volgende:
Ik werk gewoon met de commando's include en virtual, daarmee kan ik zelfs de uitkomsten van cgi-scripts op mijn pagina plaatsen, en hele websites in maar 1 pagina maken. Een voorbeeld daarvan is www.vanzwamcs.com/home , Deze is alleen nog niet af, heb ik nog geen tijd voor gehad.[/quote]Gewone templates zijn veel koeler, ga daar maar eens mee aan de slag!

Verwijderd

Hmmmzzzzal eens kijken

  • tomato
  • Registratie: November 1999
  • Niet online
* tomato gebruikt ook XTemplate

Verwijderd

Kan er iemand even die description.txt van XTemplates cut&pasta-en, want ik heb geen zin om lid te worden van die club om een beschrijving te lezen. BVD :)

Verwijderd

template engine for php, allows to store your html code apart from your php code.
(tested with php 3.0.11)

features:
-simple variable interpolation ( {STUFF} )
-array variable interpolation
for eg. {ROW.ID} {ROW.NAME} {ROW.WHATEVER}, you assign an array to the variable ROW once
-global PHP variables available without making assigns
for eg. {PHP.HTTP_HOST} {PHP.PHP_SELF} or any variable: {PHP.session_id}
-assign using arrays
for eg. $xtpl->assign(array(STUFF=>"kewlstuff",ROW=>$row));
-default nullstring for unassigned variables and unparsed blocks,
custom nullstring for every variable or block
-dynamic blocks:
-multiple level dynamic blocks (nested blocks)
-autoreset feature (do not reset subblocks when reparsing parent block)
-recursive parse to parse all subblocks of a block
-file(template) include: {FILE "another.template.xtpl"}, the included templates can
also contain includes recursively.. uses fopen so you can include http:// and ftp:// files too
-very simple and powerful syntax, you'll love it :)

the code is very short and very optimized, according to my speed tests it's the
fastest template engine around which can do nested blocks and variables..

the basic syntax is from FastTemplate and QuickTemplate (http://phpclasses.upperdesign.com/browse.html/package/49),
but the entire class was written by me from scratch in one day, without a line from other
template engines. THIS IS NOT A REWRITE OF OTHER ENGINES!
the algorithm used makes this code amazing fast, you can do a bunch of
nested dynamic blocks and everything you want, because it doesn't use recursive calls
to build up the block tree.

contains 7 examples (which covers all features i think),
i tried to write them so even newbies should understand easily.

docs and some functions i didn't need (clearing variables, etc) are still missing, but they'll come.

current version is 0.2.4.

licensed LGPL.

Verwijderd

Ik gebruik ook FastTemplates en ik vind het echt ideaal. Ik vind ook dat het ruim voldoende functionaliteit biedt :)

  • Arjen
  • Registratie: Juni 1999
  • Laatst online: 03-01 08:52
De meeste Template systemen zuigen zwaar. Het werkt allemaal perfect enzow, maar de snelheid is ver te zoeken. Komt natuurlijk vooral omdat de meeste bij elk request alle template files tot tree geparsed moeten worden (dit is iig bij XTemplate het geval). Met een beetje grote layout en veel bezoekers is het dan niet meer vooruit te branden.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Kun je die engines dan niet zo veranderen dat die tree gecached wordt?

  • Arjen
  • Registratie: Juni 1999
  • Laatst online: 03-01 08:52
<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 02 november 2000 19:16 schreef OlafvdSpek het volgende:
Kun je die engines dan niet zo veranderen dat die tree gecached wordt?[/quote]Dat is een mogelijkheid ja, pas ik in dit forum ook toe.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
En voor dat cachen... zijn daar handige hulpmiddelen (scripts) voor? Of heb je zelf iets geschreven...

En het updaten van de cache.. gebeurt dat automatisch? En zoja.. wanneer (aan de hand van een tijdsinterval oid?)

|_____vakje______|


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
[DUBBELPOST] :(

|_____vakje______|


  • Arjen
  • Registratie: Juni 1999
  • Laatst online: 03-01 08:52
Ik heb 't zelf geschreven, is niet zo moeilijk. Volgens mij zijn er ook Cached Template classes..

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 11-09 08:57

TheDane

1.618

phplib templates ! staat hierboven trouwens ook al geloof ik..

gebruik ik ook (sinds kort)
kan je zo'n beetje ALLES mee doen, inclusief conditionele templates; afhankelijk van omgeving, rol of bijvoorbeeld referer. erg grappig :)

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
Maar voor PHPLib moet je toch zo'n auto-prepend instelling hebben??
(toch?)

|_____vakje______|


Verwijderd

What's wrong met 1 .php3 pagina maken (= de template)

de includes in een variabele zetten, en die parsen in de template?

Bij mij staat op de plaatsen waar de includes komen <? echo $menu ?> bijvoorbeeld

werkt als een trein

Verwijderd

Best interessant dat template gedoe,
hier wat over dat gecache:
http://www.phpbuilder.com/tips/item.php?id=141

Maar kan iemand mij uitleggen wat je doet ALS je cached met die templates ?

Verwijderd

Snow-in-a-can: Best interessant dat template gedoe, maar kan iemand mij uitleggen wat je doet ALS je cached met die templates?

Dan bewaar je de geparsde ("ingevulde") templates zodat als de volgende bezoeker komt zonder te parsen direct de pagina getoond kan worden (nl de gecachde kopie).

Of was dat niet wat je wilde weten?

Verwijderd

jup, dat wilde ik weten, dus het wordt gecached op de server, ik zag al dat je daar een verloop tijd aan mee kan geven, wordt die optie zoieso altijd ondersteunt door php?

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
Nou.. ik ben begonnen met XTemplate, en het werkt best lekker. De code is verbazingwekkend klein (354 regeltjes), maar bevatte een klein foutje (lijkt het althans).

Example 6 (over SetNullBlock()) werkt niet naar behoren en bij mij was het vervangen van de reset()-functie door de volgende code genoeg om hem aan de gang te krijgen:

function reset ($bname) {
unset($this->parsed_blocks[$bname]);
}

Misschien is dit nuttig voor alle beginnende XTemplate-gebruikers :)

|_____vakje______|


Verwijderd

Ik gebruik Smarty Templates, en ben daat zeer tevreden over:

http://www.phpinsider.com/php/code/Smarty/

Verwijderd

Leuk dat je zo'n oud topic weer eens op het scherm zet CoDeR

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
idd, het staat je weer netjes :(

:P

Verwijderd

NP :)

Verwijderd

Ik gebruik gewoon include &zo, werkt helemaal perfect, nix geen gezeur met snelheid.

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Maar zijn er ook al mensen die pagina's met verschillende template engenis hebben gebruikt en dus echt kunnen zeggen wat de snelste is?

  • Steyn
  • Registratie: September 2000
  • Laatst online: 07:54
leuk die template engines... maar zijn er nou ook goede template engines die while loopjes en for loopjes aankunnen? en zo ja ook genesteld??

* Steyn heb er nog steeds geen één gevonden :(

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Topicstarter
Weet-je-wat.. ik doe ook weer mee :)

Is dat Smarty template ding (http://www.phpinsider.com/php/code/Smarty/) gemaakt door de makers van PHP ??

XTemplate schiet soms wel een beetje te kort, dus ik ben weer opzoek naar iets beters.... Alle suggesties welkom!

P.S. Bloemetje voor Coder :) Hij weet de search-functie te vinden!

|_____vakje______|


Verwijderd

Op maandag 12 februari 2001 23:02 schreef CyberSnooP het volgende:
Weet-je-wat.. ik doe ook weer mee :)

Is dat Smarty template ding (http://www.phpinsider.com/php/code/Smarty/) gemaakt door de makers van PHP ??
Volgens mij niet :)

XTemplate schiet soms wel een beetje te kort, dus ik ben weer opzoek naar iets beters.... Alle suggesties welkom!
Ik gebruik nu Smarty Templates en tot nu toe doetie alles wat ik wil :)

P.S. Bloemetje voor Coder :) Hij weet de search-functie te vinden!
/me voelt zich vereerd!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

ik gebruik een zelf gemaakte template engine, en ik uhm, hij heet bij deze :) Moo0Templates

hij is bruut snel, en je kan loopjes doen etc.
Je roept de parse functie aan met de naam v.d. template + een array van variabelen die hij moet replacen, dus
a["title"] = "boe";
a["subject"] = "boeee";
parse("message",$a);

en dat gaat perfect. Ik heb ook een lijst met 'standaard' variabelen etc.

toedeledoki

Klaar voor een nieuwe uitdaging.


Verwijderd

vertraagd zo'n template niet?
ik heb altijd het idee dat het alleen maar handig voor de coder zelf is, en nadelig voor de gebruiker van de site......

dan weet ik wel waar ik voor kies....

Verwijderd

Op zaterdag 04 november 2000 14:41 schreef CyberSnooP het volgende:
Nou.. ik ben begonnen met XTemplate, en het werkt best lekker. De code is verbazingwekkend klein (354 regeltjes), maar bevatte een klein foutje (lijkt het althans).
Zo veel?! Ik heb zelf een template class geschreven van nog geen 40 regels :)
En die kan alle templates in 1 query uit een MySQL table halen :)

Verwijderd

Ja ja, ik ga deze thread weer een beetje omhoog gooien.

Ik ben nu bezig met een site, en ik wil graag de meest complete template class. Op de uurste plaats komt dus de functionaliteit en op de tweede plaats komt de snelheid.

Hij mag dus best iets langzamer zijn als ie maar lekker snel is.

Ik gebruik nu vooral FastTemplate/ CachedFastTemplate, deze voldoet zeker goed. Maar ik wil effe weten of er niet nog template classes zijn met meer functies zodat ik daar in de toekomst niet tegen aan hik (dat ik ineens iets mis, en mijn hele templates kan gaan omgooien omdat ik een nieuwe template class ga gebruiken).

  • DiSiLLUSiON
  • Registratie: September 2000
  • Laatst online: 30-05 14:58
Op woensdag 14 februari 2001 04:49 schreef [nielsonline] het volgende:
[..]
Zo veel?! Ik heb zelf een template class geschreven van nog geen 40 regels :)
En die kan alle templates in 1 query uit een MySQL table halen :)
Die van mij is lekker 31 regeltjes :P:P

  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 13:41
Op maandag 26 maart 2001 22:12 schreef dennis@wacky het volgende:
Hij mag dus best iets langzamer zijn als ie maar lekker snel is.
Mooie zin! :P

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op maandag 26 maart 2001 22:29 schreef DiSiLLUSiON het volgende:

[..]

Die van mij is lekker 31 regeltjes :P:P
Die van mij is lekker 165 regels :+:+
features:
• if constructies
• aanmaken van verschillende blokken binnen een pagina
• alles wordt met 1 preg_replace() geparsed :9

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 11-09 10:09

Tuinhark

Retro

Op maandag 26 maart 2001 23:21 schreef freak007 het volgende:
alles wordt met 1 preg_replace() geparsed :9
Euh... :? Ik geloof dat ik onder de indruk ben. *D;)

Details? :D

:Y)

Verwijderd

Op maandag 26 maart 2001 23:21 schreef freak007 het volgende:

[..]

Die van mij is lekker 165 regels :+:+
features:
• if constructies
• aanmaken van verschillende blokken binnen een pagina
• alles wordt met 1 preg_replace() geparsed :9
En meneer hier zit op dit moment alles om te zetten naar $blaat en eval() :+

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Op maandag 26 maart 2001 23:32 schreef Tuinhark het volgende:
Euh... :? Ik geloof dat ik onder de indruk ben. *D;)

Details? :D

:Y)
zie gathering.tweakers.net/showtopic.php/149049/1:
Op zaterdag 24 maart 2001 11:13 schreef tomato het volgende:
WouZz: Ik heb ook gewoon heel simpel mn eigen template-engine gemaakt die het template-bestand inleest in een string, vervolgens de variabelen toewijst met str_replace en dan het hele zooitje afdrukt. Maar op mijn manier moet ie dus ook voor iedere waarde de hele string doorzoeken. Hoe heb jij dat opgelost dan?

Met een replace regex één keer je hele block doorlopen, dus zoiets:
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
<?
function evaluate($s) {



   global $vars;



   return $vars[$s];



}







$pattern = "!{(.*)}!isUe";



$replace = "evaluate('\\1')";



$b = preg_replace($pattern, $replace, $b);
?>

Weel heel sterk versimpeld, maar dit is waar het op neer komt. De regexen die ik gebruik zijn wat uitgebreider, om gelijk conditions, references naar andere blocks en arrays te matchen.
* WouZz is dit voorbeeld ook nog grondig aan het bestuderen.. :)

On track


  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Hmmz... dit verduidelijkt al wat meer.. :Y)

On track


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op maandag 26 maart 2001 23:32 schreef Tuinhark het volgende:

[..]

Euh... :? Ik geloof dat ik onder de indruk ben. *D;)

Details? :D

:Y)
Zoals al duidelijk was geworden: ik gooi alle patterns en replaces in een array. Vervolgens geef ik preg_replace() de arrays mee.

Ik weet niet of het erg veel tijd scheelt, maar toch. Het scheelt een loopje die alle losse elementen weer uit de array haalt.

Verwijderd

Tuinhark: Ik geloof dat ik onder de indruk ben. *D;) Details? :D

Doe ook inspiratie op (met uitleg :P).

Zoals in dat draadje staat kan het nog efficienter, maar hoe is left as an exercise to the reader. ;)

Verwijderd

freak007: Ik gooi alle patterns en replaces in een array. Vervolgens geef ik preg_replace() de arrays mee. Ik weet niet of het erg veel tijd scheelt, maar toch. Het scheelt een loopje die alle losse elementen weer uit de array haalt.

Als je je inspiratie er even bijpakt :P zie je dat dat efficienter kan (if you care about that).

(Lay-out gefixed... beter laat dan nooit. :P)

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Op dinsdag 27 maart 2001 06:18 schreef Arien het volgende:
...
Als je je inspiratie er even bijpakt :P zie je dat dat efficienter kan (if you care about that).
Mm, ik begrijp het verhaaltje nog niet echt daar, maar ik neem aan dat de manual ook een leuke uitleg heeft.

Verwijderd

freak007: Ik begrijp het verhaaltje nog niet echt daar, maar ik neem aan dat de manual ook een leuke uitleg heeft.


Ik heb even gekeken voor je maar ik heb het niet gevonden.
Het gaat erom dat een array regexen voor elke regex door het subject heen gaat en dat je dat ook met een regex kan doen. Als je een goede regex gebruikt is dat efficienter.
Zie het voorbeeld van de $smartRegex in dat verhaal.

  • tomato
  • Registratie: November 1999
  • Niet online
In dat verhaal riep ik een functie aan in m'n regex replace (of bedoelde je je eigen smartregex? nouja, maakt niet uit), misschien dat dat het onnodig ingewikkeld eruit liet zien. Kon dus ook zo geschreven worden:
PHP:
1
2
3
4
5
6
7
<?
$pattern = "!{(.*)}!isUe";

$replace = "$vars['\\1']";

$b = preg_replace($pattern, $replace, $b);
?>

Misschien dat het zo een iets simpeler voorbeeld is. Als je niet snapt wat er gebeurt, check dan de e delimiter in de manual.

HTH :Y)

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Arien: Ik heb even gekeken voor je maar ik heb het niet gevonden.
Het gaat erom dat een array regexen voor elke regex door het subject heen gaat en dat je dat ook met een regex kan doen. Als je een goede regex gebruikt is dat efficienter.
Zie het voorbeeld van de $smartRegex in dat verhaal.


Je bedoelt dus dat je alles door 1 regex laat doen i.p.v. een array?

* Rense Klinkenberg begrijpt regex'en normaal wel, maar volgt het nu effe niet meer

Verwijderd

freak007: Je bedoelt dus dat je alles door 1 regex laat doen i.p.v. een array?

Ja. Dan loop je maar een keer door de string heen. Bijvoorbeeld om FOO, BAR en BAZ te matchen, kan je ze in een array zetten of er een regex van maken: /FOO|BAR|BAZ/ of beter /FOO|BA[RZ]/.

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Arien: Ja. Dan loop je maar een keer door de string heen. Bijvoorbeeld om FOO, BAR en BAZ te matchen, kan je ze in een array zetten of er een regex van maken: /FOO|BAR|BAZ/ of beter /FOO|BA[RZ]/.

Ja, maar bij zo'n template engine, moeten FOO, BAR en BAZ wel telkens door wat anders vervangen worden.

't enige waar ik het wel voor kan gebruiken is de {if....} constructie.

* Rense Klinkenberg gaat morgen effe kijken of het sneller zal gaan.

Verwijderd

freak007: Bij zo'n template engine, moeten FOO, BAR en BAZ wel telkens door wat anders vervangen worden.

En we waren met /e bezig... ;)
Pagina: 1