[Templates/PHP] Welk systeem kiezen?

Pagina: 1
Acties:

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Gegroet beste Tweakers,

Ik zit met een dilemma.. Ik ben zo wat sites in elkaar aant pruttelen met templates. Maar ik zit toch te twijfelen wat ik bij een nieuwe site ga gebruiken.

Ik gebruik nu Smarty.. Werkt perfect, maar is toch niet hetgene waar ik naar op zoek ben. Ik wil graag een snel template systeem dus zit ik erover te denken om er zelf een te schrijven. Begrijp me niet verkeerd, Smarty werkt perfect, maar ik vind dat het teveel zut en overige zooi heeft. IMHO vertraagd het daar alleen maar door.

Nu zit ik dus te denken over een eigen template systeem. Echt moeilijk zal het bouwen ervan niet zijn, maar er zitten toch wat dingen in waar ik nog niet helemaal over uit ben. Zo bijv het cachen. Wat is het nut precies van cachende templates? Vbulletin forums zijn er met 1+ miljoen postings, en draaien op een template systeem uit hun eigen DB.

1) Wat is het exacte nut van cachende templates en is er veel performancewinst?
2) Is het verstandig om templates in een DB te proppen?

Voor zover ik weet gebruikt topix cachende templates en ik merk het soms heel af en toe.. maar misschien was dat het cachesysteem van opera wel

Wie kan mij duidelijkheid over templates geven?

Thnx in advance :)

Ik bespeur hier een zekere mate van onethische logica.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Wedden dat het jou niet lukt om een snellere dan Smarty te vinden? :)

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 16:23 schreef Nielsz het volgende:
Wedden dat het jou niet lukt om een snellere dan Smarty te vinden? :)
Te vinden misschien niet, te bouwen misschien wel :P

Ik bespeur hier een zekere mate van onethische logica.


  • MikeN
  • Registratie: April 2001
  • Laatst online: 16:32
Op dinsdag 09 juli 2002 16:23 schreef Nielsz het volgende:
Wedden dat het jou niet lukt om een snellere dan Smarty te vinden? :)
Dat valt ook wel weer mee: http://www.phpinsider.com/benchmarks/

BTW, voor een kleiner projectje gebruik ik gewoon die PHPLib zut. Werkt goed en redelijk snel.

Voor een groter project zou ik zelf een engine schrijven. Is misschien wat meer werk, maar je weet zeker dat je geen overbodige zut hebt.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Gewoon lekker zelf schrijven :Y)

• je leert er weer van
• het doet precies wat jij wil
• je hoeft niet anderman's code door te lezen als je iets wil uitbreiden/verwijderen.

Stop uploading passwords to Github!


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 21:36

TheDane

1.618

die template engine van phplib is imo 1 van de betere/snellere die ik ken. we hebben 'm hier en daar wel zelf een beetje getweaked, maar over all zijn we er zeer tevreden over.

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Dat bedoel ik dus met Smarty.. het enige dat ik van een template engine eis is:

1) [$blabla] Dat ie parsed (of met {} van mij part)
2) een include bijv: {$include="file"}

Assignen, en parsen

Meer hoef tie niet te doen. Zoiets kan ik dus best zelf maken denk ik en is waarschijnlijk sneller dan een template engine die ook nog if/else statements kan uitvoeren

Correct me if i'm wrong :?

/edit: maakt cachen dan ook veel uit?

Ik bespeur hier een zekere mate van onethische logica.


  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 30-08 21:01
Ben zelf fan van twee template engines. Smarty is gewoon goed en snel. Een goede tweede is Yapter (www.yapter.com). Is van die ene gast van phpfreakz.com, bevalt me ook goed.

zeroxcool.net - curity.eu


Verwijderd

Op dinsdag 09 juli 2002 16:37 schreef Bolk het volgende:
Dat bedoel ik dus met Smarty.. het enige dat ik van een template engine eis is:

1) [$blabla] Dat ie parsed (of met {} van mij part)
2) een include bijv: {$include="file"}

Assignen, en parsen

Meer hoef tie niet te doen. Zoiets kan ik dus best zelf maken denk ik en is waarschijnlijk sneller dan een template engine die ook nog if/else statements kan uitvoeren

Correct me if i'm wrong :?

/edit: maakt cachen dan ook veel uit?
En wat van secties/if testen/...? Want als je voor ELKE loop of ELKE if-test of voor ELKE... (vul maar aan) een aparte template moet gaan maken, dan weegt die kleine snelheidswinst echt niet op tov. de overzichtelijkheid/gemakkelijkheid van een template opgebouwd met sections en if-testen?

Verwijderd

Trouwens:
code:
1
2
3
4
5
6
7
8
9
function parse ( $vars, $tpl )
{
       // str_replace(array_keys($vars),$vars,$tpl);
   
    foreach ( $vars as $key => $value )
        $tpl = str_replace ( '{' . $key . '}', $value, $tpl );
    
    return $tpl;
}

en in je code dan:
code:
1
2
3
4
5
6
$file = implode ( "", file ( "templates/file.html" ) );
/* query en zooi */
$output["dit"] = $row[2];
$output["dat"] = $row[3];

echo parse ($output, $file);

Zo, je template is af... maar wat heb je nu in godsnaam? :?

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 16:43 schreef DiEana het volgende:
Trouwens:
code:
1
2
3
4
5
6
7
8
9
function parse ( $vars, $tpl )
{
       // str_replace(array_keys($vars),$vars,$tpl);
   
    foreach ( $vars as $key => $value )
        $tpl = str_replace ( '{' . $key . '}', $value, $tpl );
    
    return $tpl;
}

en in je code dan:
code:
1
2
3
4
5
6
$file = implode ( "", file ( "templates/file.html" ) );
/* query en zooi */
$output["dit"] = $row[2];
$output["dat"] = $row[3];

echo parse ($output, $file);

Zo, je template is af... maar wat heb je nu in godsnaam? :?
Precies wat ik dus wil.. geen html in mijn source :)
Die if/else meuk doe ik in mijn php source, en dat laat ik niet de template engine doen. Dat lijkt mij nl trager als dat php het direct zelf doet

Ik bespeur hier een zekere mate van onethische logica.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
En hoe wil je gaan afhandelen als er geen records zijn gevonden in de database?

"dit topic is niet gevonden";
Hoe wil je dit dan afhandelen in je parser?

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 16:48 schreef Nielsz het volgende:
En hoe wil je gaan afhandelen als er geen records zijn gevonden in de database?

"dit topic is niet gevonden";
Hoe wil je dit dan afhandelen in je parser?
code:
1
2
3
$error = mysql query die de error uit db trekt
assign("error",$error);
parse("error.tpl");

Error.tpl:
code:
1
<html><head><title>bla</title></head><body>Helaas, er is een fout op getreden: [error]</body></html>

Dat is toch niet zo moeilijk? zo doe ik het nu ook. Wel netjes in een functie die autmagisch direct de template parsed.. zo doe ik het dus ook met Smary enzo..

Of ik moet jullie niet begrijpen :)

Ik bespeur hier een zekere mate van onethische logica.


Verwijderd

Op dinsdag 09 juli 2002 16:48 schreef Bolk het volgende:

[..]

Precies wat ik dus wil.. geen html in mijn source :)
Die if/else meuk doe ik in mijn php source, en dat laat ik niet de template engine doen. Dat lijkt mij nl trager als dat php het direct zelf doet
zeker niet

Stel voor je hebt een HTML tabel, niet zo simpel opgebouwd. Nu wil je dat je voor admins in je html tabel fototjes zet, die duiden op "edit", "delete", "close", etc... Gewone gebruikers mogen die niet zien.
Dat betekent dat je, in jouw systeem, 2 template-files moet maken: eentje voor de admins en eentje voor de users, en dat je steeds in je php code moet wisselen tussen deze 2 files.

Met if/else testen in je template systeem heb je maar 1 file nodig: tijdwinst

De winst die je maakt is: de tijd nodig om te wisselen tussen de templates + de tijd nodig om die extra file (wat bij een grote site heel veel extras kunnen worden) te openen + wat kleingheidjes.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Ik heb de templates in kleine brokjes in de db zitten.
Doordat de templates continu gebruikt worden blijven ze in geheugen gecached en gaat het dus rete-snel.
Zo snel zelfs dat ik op diverse plaatsen (uit luiheid) nog per getoonde rij de template opnieuw ophaal zonder merkbaar performance verlies.

Who is John Galt?


Verwijderd

Op dinsdag 09 juli 2002 16:52 schreef Bolk het volgende:

[..]
code:
1
2
3
$error = mysql query die de error uit db trekt
assign("error",$error);
parse("error.tpl");

Error.tpl:
code:
1
<html><head><title>bla</title></head><body>Helaas, er is een fout op getreden: [error]</body></html>

Dat is toch niet zo moeilijk? zo doe ik het nu ook. Wel netjes in een functie die autmagisch direct de template parsed.. zo doe ik het dus ook met Smary enzo..

Of ik moet jullie niet begrijpen :)
Dan ga je ervan uit dat je een key {$error} hebt in je template.. maar wat als er GEEN error is? Hoe los je dat dan op met een template systeem zonder if/else structuren?

Je laat die leeg? Ok, goede oplossing.. maar wat doe je dan met je {$datum} {$bla}'s .. en je andere html code? Die kan je dus NIET weglaten hé.

Enige oplossing in dat geval: extra template file aanmaken.

En ga jij maar eens een site aanpassen, tussen 100'en template files, zonder 1 overzicht :D

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 16:54 schreef DiEana het volgende:

[..]

Dan ga je ervan uit dat je een key {$error} hebt in je template.. maar wat als er GEEN error is? Hoe los je dat dan op met een template systeem zonder if/else structuren?
Als er geen error is, dan komt die hele error niet naar voren?

Dus word die hele tpl niet geparsed maar een andere file.
code:
1
2
3
4
5
if(error) {
$error = mysql query die de error uit db trekt
assign("error",$error);
parse("error.tpl");
}

Maar zoals ik al zei is het dan netjes weggewerkt in een functie en een include.

Als er geen error is krijg je een totaal andere output of curz
Op dinsdag 09 juli 2002 16:53 schreef DiEana het volgende:

[..]

zeker niet

Stel voor je hebt een HTML tabel, niet zo simpel opgebouwd. Nu wil je dat je voor admins in je html tabel fototjes zet, die duiden op "edit", "delete", "close", etc... Gewone gebruikers mogen die niet zien.
Dat betekent dat je, in jouw systeem, 2 template-files moet maken: eentje voor de admins en eentje voor de users, en dat je steeds in je php code moet wisselen tussen deze 2 files.

Met if/else testen in je template systeem heb je maar 1 file nodig: tijdwinst

De winst die je maakt is: de tijd nodig om te wisselen tussen de templates + de tijd nodig om die extra file (wat bij een grote site heel veel extras kunnen worden) te openen + wat kleingheidjes.
Daar heb je een punt, maar dat is ook te omzeilen door een lege variabele te parsen. dan krijg je dus ook geen output. alleen jouw systeem is idd dan wel een stuk netter. Je zou dan ook dmv een if/else in php andere assignes kunnen doen.

Ik bespeur hier een zekere mate van onethische logica.


Verwijderd

Op dinsdag 09 juli 2002 16:37 schreef Bolk het volgende:
Dat bedoel ik dus met Smarty.. het enige dat ik van een template engine eis is:

1) [$blabla] Dat ie parsed (of met {} van mij part)
2) een include bijv: {$include="file"}

Assignen, en parsen

Meer hoef tie niet te doen. Zoiets kan ik dus best zelf maken denk ik en is waarschijnlijk sneller dan een template engine die ook nog if/else statements kan uitvoeren

Correct me if i'm wrong :?

/edit: maakt cachen dan ook veel uit?
als je dit wilt kan je met eval volgens mij heel veel :+

en anders kijk ff voor mijn template engine, is klein maar fijn

http://members.lycos.nl/phpfreak/mtp.php

Verwijderd

Op dinsdag 09 juli 2002 17:02 schreef Bolk het volgende:

[..]

Daar heb je een punt, maar dat is ook te omzeilen door een lege variabele te parsen. dan krijg je dus ook geen output. alleen jouw systeem is idd dan wel een stuk netter. Je zou dan ook dmv een if/else in php andere assignes kunnen doen.
Je snapt het niet hé :)

Stel je voor op GOT, als de dbase down ligt ofzo (bedenk maar wat). Wel DAN moet er simpelweg getoond worden "dbase down, bla bla", en heb je al die html tabellen (van de verschillende fora, de header, ...) niet nodig.

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 16:54 schreef DiEana het volgende:

Je laat die leeg? Ok, goede oplossing.. maar wat doe je dan met je {$datum} {$bla}'s .. en je andere html code? Die kan je dus NIET weglaten hé.

Enige oplossing in dat geval: extra template file aanmaken.
Hoe bedoel je dit? Die {datums} enzo?
En ga jij maar eens een site aanpassen, tussen 100'en template files, zonder 1 overzicht :D
Ik bouw geen Vbulletin en ga niet voor elke error een andere template bouwen..

Zo heb je dus 1 error template waar je elke keer andere msg's voorbij laat komen. Zo kun je redirect EN error in 1 file verwerken zelfs.

Ik bespeur hier een zekere mate van onethische logica.


  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 17:06 schreef DiEana het volgende:

[..]

Je snapt het niet hé :)

Stel je voor op GOT, als de dbase down ligt ofzo (bedenk maar wat). Wel DAN moet er simpelweg getoond worden "dbase down, bla bla", en heb je al die html tabellen (van de verschillende fora, de header, ...) niet nodig.
Idd, bij een db error heb je dan 1 extra file nodig. Dat kan niet anders. Maar de rest van de errors trek ik regelrecht uit MySQL. Als je er dan een header boven wil kun je dan toch gewoon een include doen? Das toch geen probleem, of snap ik je nu nog steeds niet? :P

Ik bespeur hier een zekere mate van onethische logica.


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
code:
1
2
3
4
5
6
7
{if records}
{foreach records as blaat}
<tr><td>{blaat.id}</td><td>{blaat.woei}</td></tr>
{/foreach}
{else}
GEEN RECORDS |:(
{/if}

Dit is gewoon ongeveer het beste ;)

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 17:14 schreef Nielsz het volgende:
code:
1
2
3
4
5
6
7
{if records}
{foreach records as blaat}
<tr><td>{blaat.id}</td><td>{blaat.woei}</td></tr>
{/foreach}
{else}
GEEN RECORDS |:(
{/if}

Dit is gewoon ongeveer het beste ;)
Kijk en dat is het verschil tussen mijn en jouw mening. Persoonlijk vind ik dat je dit de php code moet laten doen ipv de templateengine, maar dan zul je me wel weer een boerenlul vinden :P

Ik bespeur hier een zekere mate van onethische logica.


Verwijderd

Op dinsdag 09 juli 2002 17:26 schreef Bolk het volgende:

[..]

Kijk en dat is het verschil tussen mijn en jouw mening. Persoonlijk vind ik dat je dit de php code moet laten doen ipv de templateengine, maar dan zul je me wel weer een boerenlul vinden :P
YUP :*

Je moet op termijn denken :)

Verwijderd

Op dinsdag 09 juli 2002 17:26 schreef Bolk het volgende:

[..]

Kijk en dat is het verschil tussen mijn en jouw mening. Persoonlijk vind ik dat je dit de php code moet laten doen ipv de templateengine, maar dan zul je me wel weer een boerenlul vinden :P
Helemaal mee eens, dit is dus absoluut te veel van het goede. Het wordt gewoon een scripting taal geschreven binnen PHP. Denk je dat een designer zulke code wel kan lezen en PHP code niet? En dat is toch waar je zo'n template engine voor gebruikt neem ik aan?
Op dinsdag 09 juli 2002 17:31 schreef DiEana het volgende:
[..]
YUP :*

Je moet op termijn denken :)
Als je niet tevreden bent met PHP kun je ook gewoon je eigen scripting taal schrijven :+

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
FF een vergelijking:

PHP -> if/else -> template -> parsen -> output (HTML)

PHP -> template -> if/else -> terug naar php (template engine) -> parsen -> output (HTML)

Om php een scripttaal uit te laten voeren lijkt mij langzamer als het gewoon rechtstreeks doen.

Begrijp me niet verkeerd, ik probeer hier mijn mening te verdedigen, en die van jullie accepteer ik ook gewoon :P

Ik bespeur hier een zekere mate van onethische logica.


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

output in xml via php en daar een xsl stylesheet over gooien :? :P

If it ain't broken it doesn't have enough features


  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 18:54 schreef Apache het volgende:
output in xml via php en daar een xsl stylesheet over gooien :? :P
Werd mij net ook verteld.. Die XML is dan wel voor iedereen toegankelijk lijkt mij.

Ik bespeur hier een zekere mate van onethische logica.


Verwijderd

Op dinsdag 09 juli 2002 19:08 schreef Bolk het volgende:

[..]

Werd mij net ook verteld.. Die XML is dan wel voor iedereen toegankelijk lijkt mij.
Nee, als je dat serverside met sablotron doet niet. Maar al zou het zo zijn, wat dan nog?

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 19:42 schreef Zef het volgende:

[..]

Nee, als je dat serverside met sablotron doet niet. Maar al zou het zo zijn, wat dan nog?
Iemand kan dan een complete site bouwen met mijn info.. Maargoe

Ik ga nu aan de stok met Smarty, beetje in die onbegrijpelijke source knoeien, en dan kijken wat ik er van kan bouwen. Iig bedankt :)

Ik bespeur hier een zekere mate van onethische logica.


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 02-09 12:24

Apache

amateur software devver

hoeft niet, je moet je xml niet naar een file outputten, kan wel, is leuk voor caching, maar je zet em in een dir x met daarin een index.html:<h1>he Gh3yboy ga ff iets nuttig doen</h1> en klaar :)
t'is echt niet de reden om het niet te gebruiken, verder kan je zo ook makkelijk skins voor je site maken/laten maken etc :)

If it ain't broken it doesn't have enough features


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Op dinsdag 09 juli 2002 19:43 schreef Bolk het volgende:
Ik ga nu aan de stok met Smarty, beetje in die onbegrijpelijke source knoeien, en dan kijken wat ik er van kan bouwen. Iig bedankt :)
Waarom wil je Smarty in godsnaam aanpassen als je eerder aangeeft voldoende te hebben aan een simpel zoek-en-vervang-template systeempje?

|_____vakje______|


Verwijderd

Op dinsdag 09 juli 2002 20:33 schreef CyberSnooP het volgende:

[..]

Waarom wil je Smarty in godsnaam aanpassen als je eerder aangeeft voldoende te hebben aan een simpel zoek-en-vervang-template systeempje?
Ik denk dat hij hem gaat kaalplukken om het wat duidelijker te maken...

  • Bolk
  • Registratie: Februari 2001
  • Niet online

Bolk

Change the equation.

Topicstarter
Op dinsdag 09 juli 2002 20:33 schreef CyberSnooP het volgende:

[..]

Waarom wil je Smarty in godsnaam aanpassen als je eerder aangeeft voldoende te hebben aan een simpel zoek-en-vervang-template systeempje?
zie hieronder
Op dinsdag 09 juli 2002 20:52 schreef int het volgende:

[..]

Ik denk dat hij hem gaat kaalplukken om het wat duidelijker te maken...
:)

Ik bespeur hier een zekere mate van onethische logica.


  • BobDay
  • Registratie: December 2001
  • Laatst online: 11-08-2025
Ik vind deze fijn: http://templatepower.codocad.com
Ik gebruik deze al heel lang, zie dat versie 3 ook beschikbaar is. Even overstappen dus.

Of ie snel is weet ik niet. Iemand?

43% of all statistics are worthless

Pagina: 1