|_____vakje______|
Verwijderd
Verwijderd
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.[/quote]Gewone templates zijn veel koeler, ga daar maar eens mee aan de slag!
Verwijderd
Verwijderd
(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
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.
En het updaten van de cache.. gebeurt dat automatisch? En zoja.. wanneer (aan de hand van een tijdsinterval oid?)
|_____vakje______|
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
(toch?)
|_____vakje______|
Verwijderd
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
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
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
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
http://www.phpinsider.com/php/code/Smarty/
* Steyn heb er nog steeds geen één gevonden
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
|_____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 CoderHij weet de search-functie te vinden!
/me voelt zich vereerd!
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
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
Zo veel?! Ik heb zelf een template class geschreven van nog geen 40 regelsOp 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).
En die kan alle templates in 1 query uit een MySQL table halen
Verwijderd
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).
Die van mij is lekker 31 regeltjes :P:POp 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
Mooie zin!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.
Die van mij is lekker 165 regels :+:+Op maandag 26 maart 2001 22:29 schreef DiSiLLUSiON het volgende:
[..]
Die van mij is lekker 31 regeltjes :P:P
features:
• if constructies
• aanmaken van verschillende blokken binnen een pagina
• alles wordt met 1 preg_replace() geparsed
Euh...Op maandag 26 maart 2001 23:21 schreef freak007 het volgende:
alles wordt met 1 preg_replace() geparsed
Details?
Verwijderd
En meneer hier zit op dit moment alles om te zetten naar $blaat en eval()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
zie gathering.tweakers.net/showtopic.php/149049/1:Op maandag 26 maart 2001 23:32 schreef Tuinhark het volgende:
Euh...Ik geloof dat ik onder de indruk ben. *D;)
Details?
* WouZz is dit voorbeeld ook nog grondig aan het bestuderen..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.
On track
On track
Zoals al duidelijk was geworden: ik gooi alle patterns en replaces in een array. Vervolgens geef ik preg_replace() de arrays mee.Op maandag 26 maart 2001 23:32 schreef Tuinhark het volgende:
[..]
Euh...Ik geloof dat ik onder de indruk ben. *D;)
Details?
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
Doe ook inspiratie op (met uitleg
Zoals in dat draadje staat kan het nog efficienter, maar hoe is left as an exercise to the reader.
Verwijderd
Als je je inspiratie er even bijpakt
(Lay-out gefixed... beter laat dan nooit.
Mm, ik begrijp het verhaaltje nog niet echt daar, maar ik neem aan dat de manual ook een leuke uitleg heeft.Op dinsdag 27 maart 2001 06:18 schreef Arien het volgende:
...
Als je je inspiratie er even bijpaktzie je dat dat efficienter kan (if you care about that).
Verwijderd
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.
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
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
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
En we waren met /e bezig...