[Smarty] Inladen variabelen uit template

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 399721

Topicstarter
Voor een eigen module zou ik graag het volgende willen:

In mijn template (bericht.tpl) wil ik een aantal tags (zelf) aanmaken, bijvoorbeeld: {titel} en {bericht}.

De code ziet er dan globaal zo uit:
code:
1
2
3
4
5
6
<tr>
<td>{titel}</td>
</tr>
<tr>
<td>{bericht}</td>
</tr>


Nu wil ik in een ander bestand uitlezen welke variabelen ik gebruik in verschillende templates.
Dus in uitlezen.php wil ik krijgen dat voor deze template een titel en bericht nodig zijn. (Zodat ik hier input field voor kan maken).

Zodat wanneer ik bericht2.tpl uitlees (met een titel, bericht EN foto) een derde input field krijg.

Zou iemand mij kunnen uitleggen hoe ik dit voor elkaar krijg?
Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 02-05 16:18
Je wilt dus in code bepalen welke velden er in de template allemaal gebruikt worden?

Dan moet je dus opzoek naar een manier om de tekst uit het templatebestand in te lezen, en hier tags in te vinden. Weet je op voorhand hoe die tags kunnen heten?
Kijk eens naar strpos() of preg_match()

Bijv;
PHP:
1
2
$iNumberOfTags = preg_match_all('/\{(\w+)\}/', file_get_contents('bericht2.tpl'), $aTags);
var_dump($aTags);

[ Voor 14% gewijzigd door frickY op 14-03-2011 17:32 ]


Acties:
  • 0 Henk 'm!

Anoniem: 35775

je kunt het ook enigszins omdraaien ... is maar een idee ;)

dat je in een template aanroept <?=$this->image('myimage')?> waar myimage een verwijzing is naar het veld. In de frontend wordt er met deze method een imagetag gemaakt, aan de achterkant wordt er een invulveld/imagepicker geladen. Die image method zou dan als een soort helpen gedefinieerd kunnen worden (zoals bij Zend View Helper)

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 02:24
Een dergelijk iets heb ik eens nodig gehad voor een site met vertalingen. Daarvoor hadden we een speciale plugin toegevoegd aan smarty (op deze manier), zodat je bijvoorbeeld {tr key=loginSubmit} kon doen. In debug mode werd in een database vervolgens opgeslagen op welke pagina welke keys gebruikt werden en middels een backoffice applicatie was het daarna mogelijk om die te vertalen.

Alternatief zou je ook frickY's oplossing kunnen gebruiken, dan hoef je minder aan te passen in je template, maar het is niet echt ideaal vrees ik om je eigen parser te schrijven :)

Overigens: Smarty is gewoon open source, kun je niet zelf deze functionaliteit erin bouwen? Dat je net zoiets doet als get_template_vars maar ipv assigned variabelen juist de benodigde variabelen?

[ Voor 7% gewijzigd door FragFrog op 14-03-2011 18:00 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 01-05 11:45
Wil je CMS Made Simple nabouwen? :D

ik weet natuurlijk niet waar je mee bezig bent maar het kan vast geen kwaad om even in de source van CMS MS te kijken hoe zij dat doen