[PHP] [Backend] templates

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Beste tweakers,

Ik ben bezig met een back-end systeem waarop ik al de sites die ik maak wil laten draaien.
Het gaat dus om een aantal libraries namelijk:
* mysql.lib.php
* output.lib.php

Ik gebruikte altijd om php van html te scheiden voor elke module die ik maak 1 php bestand waar in een class alles van die module stond en 1 template bestand wat tevens een class was en waar alle functies in stonden waar html in staat.

Nu wil ik dus eigenlijk geen classes / functies in mijn template bestanden maar ik wil dus dat een template bestand er ongeveer zo uit gaat zien:
HTML:
1
2
3
{product_row}
hier alle html van product_row
{/product_row}


Nu parse ik die tpl dan weer zodat variables worden omgezet etc. met een aantal functies die in output.lib.php staan.

Het probleem is nu dat ik in die template bestanden ook kleine selectieve stukjes php wil gebruiken bv. een if().
Ik heb de template na dat die geparsed is in een variable staan en daar kunnen dus stukjes code zoals bv. <? if($var1 == $var2) { ?> in staan.
Helaas ziet mijn parser dat stukje gewoon als html en niet als php.

Weet iemand een oplossing zodat de stukjes php in mijn template bestanden gewoon werken ?

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Met een preg_replace_callback in combinatie met de eval functie kom je een heel eind. "<?(.*)>?" vervangen door een eval van de match tussen haakjes.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 20:04

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
i.p.v. de php toe te laten in je templates, kan je ook je parser aanpassen zodat je if statements kan inbouwen zoals react dat bijv doet.

Dus {product_row!=yes}hier alle html van product_row{/product_row}. Of is dat niet wat je bedoelt :) ? Het is maar een idee, weet niet of het ingewikkeld is om te maken.

Edit: Na het nog eens lezen van de reactie van -NMe- begrijp ik nu wat hij vertelt. Mijn opmerking is dus dubbel, my bad. Ik dacht dat -NMe- iets anders bedoelde

offtopic:
chuxiej, u heeft mail

[ Voor 27% gewijzigd door We Are Borg op 14-01-2005 20:12 ]


Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Ah bedankt hier heb ik wat aan!

edit:
Ja We Are Borg dat bedoel ik ;)

[ Voor 41% gewijzigd door chuxiej op 14-01-2005 15:15 ]

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
chuxiej schreef op vrijdag 14 januari 2005 @ 14:24:
Het probleem is nu dat ik in die template bestanden ook kleine selectieve stukjes php wil gebruiken bv. een if().
Ik heb de template na dat die geparsed is in een variable staan en daar kunnen dus stukjes code zoals bv. <? if($var1 == $var2) { ?> in staan.
Helaas ziet mijn parser dat stukje gewoon als html en niet als php.

Weet iemand een oplossing zodat de stukjes php in mijn template bestanden gewoon werken ?
http://smarty.php.net/?
Is in het begin iets lastiger, maar uiteindelijk heb je er waarschijnlijk meer voordelen van.

Acties:
  • 0 Henk 'm!

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
OlafvdSpek schreef op vrijdag 14 januari 2005 @ 18:01:
[...]

http://smarty.php.net/?
Is in het begin iets lastiger, maar uiteindelijk heb je er waarschijnlijk meer voordelen van.
Smarty? Lastig?
Euh ...

Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
OlafvdSpek schreef op vrijdag 14 januari 2005 @ 18:01:
[...]

http://smarty.php.net/?
Is in het begin iets lastiger, maar uiteindelijk heb je er waarschijnlijk meer voordelen van.
Ja ik heb gekeken naar smarty, het is een goed template systeem maar toch schrijf ik het liever zelf.
Vooral omdat ik vaak ook sites maak voor bedrijven.

Ik ben nu tijdje bezig en het gaat super met wat ik wil.
Enige waar ik nu op stuit is als ik zeg maar me template heb in een variable:
PHP:
1
2
3
4
5
6
7
<tr>
  <td>
    <? if($var == true) { ?>
             hoi
    <? } ?>
  </td>
</tr>


Hoe ik dan met eval() die php tags laat werken, als ik die hele var in de eval() zet krijg ik een foutmelding :(

edit:
Ok na even gezocht te hebben kan eval() dus geen html aan (zonder dat die tussen een bv. echo() staat).
Het zou wel moeten werken als ik het eerst naar een cache.txt file schrijf en daarna incude.
Nadeel hier is dat het de template ook meteen print wat ik dus niet wil :(
Weet iemand een oplossing hiervoor ?

[ Voor 57% gewijzigd door chuxiej op 14-01-2005 20:10 ]

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
chuxiej schreef op vrijdag 14 januari 2005 @ 19:58:
Ja ik heb gekeken naar smarty, het is een goed template systeem maar toch schrijf ik het liever zelf.
Vooral omdat ik vaak ook sites maak voor bedrijven.
Bijt Smarty bedrijven dan?

Acties:
  • 0 Henk 'm!

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Nee maar ik vind het prettiger om te kunnen zeggen: ik heb zelf de voledige code geschreven.
ipv. nee er zit een library van een open source project in wat ik gebruik.

En ik vind het ook leuker en prettiger werken als ik precies weet hoe elk deeltje van me code werkt en het ook naar me eigen wensen kan maken.

www.dannyhiemstra.nl


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
chuxiej schreef op vrijdag 14 januari 2005 @ 20:23:
Nee maar ik vind het prettiger om te kunnen zeggen: ik heb zelf de voledige code geschreven.
ipv. nee er zit een library van een open source project in wat ik gebruik.
Maar waarom wel PHP functies/libraries? Omdat die standaard meegeleverd worden?

En ik vind het ook leuker en prettiger werken als ik precies weet hoe elk deeltje van me code werkt en het ook naar me eigen wensen kan maken.[/quote]
Dat is waar.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
chuxiej schreef op vrijdag 14 januari 2005 @ 20:23:
Nee maar ik vind het prettiger om te kunnen zeggen: ik heb zelf de voledige code geschreven.
ipv. nee er zit een library van een open source project in wat ik gebruik.
Dat lijkt mij juist een voordeel: "Voor de templates maak ik gebruik van een goed-getest en bewezen open-source component." Je eigen template engine zal nooit door zoveel mensen getest worden als Smarty. Bovendien bespaar je je erg veel tijd. Is het voor eigen prutswerk, dan is er niets aan de hand. Maar als je commercieel tijd bespaart, betekent dat geld. Je kunt dus je product goedkoper verkopen of je kunt er meer winst op maken.
En ik vind het ook leuker en prettiger werken als ik precies weet hoe elk deeltje van me code werkt en het ook naar me eigen wensen kan maken.
Smarty is open-source, remember, je kunt het dus ook zelf aanpassen. Smarty heeft verder een goede plugin structuur en is eenvoudig uit te breiden. Bijna alles kan er wel mee.

[ Voor 20% gewijzigd door Skaah op 15-01-2005 11:12 . Reden: hmm, ik word een beetje een Smarty-evangelist geloof ik... ]

Pagina: 1