Avatar billede challenge Praktikant
20. marts 2007 - 17:03 Der er 5 kommentarer og
1 løsning

Fast template og php kode

Hej eksperter,

Til et større projekt, er jeg lige nu i gang med at undersøge mulighederne ved de såkaldte "Fast templates", dvs. PHP og HTML holdes hver for sig - Tekst, i HTML, udskiftes vha. f.eks. {TEKST} via PHP, hvori teksten defineres.

Jeg har dog tænkt på, hvordan lidt mere dynamisk content laves. Hvis jeg f.eks. skal have udskrevet en hel masse rækker vha. en while-løkke, og denne tabel ligger inde i en template hvori der også er en masse andet kode - hvordan laves denne while så?

Hvis man f.eks. ser på PHPBB's index template ses dette stykke HTML:

<!-- BEGIN forumrow -->
  <tr>
    <td class="row1" align="center" valign="middle" height="50"><img src="{catrow.forumrow.FORUM_FOLDER_IMG}" width="46" height="25" alt="{catrow.forumrow.L_FORUM_FOLDER_ALT}" title="{catrow.forumrow.L_FORUM_FOLDER_ALT}" /></td>
    <td class="row1" width="100%" height="50"><span class="forumlink"> <a href="{catrow.forumrow.U_VIEWFORUM}" class="forumlink">{catrow.forumrow.FORUM_NAME}</a><br />
      </span> <span class="genmed">{catrow.forumrow.FORUM_DESC}<br />
      </span><span class="gensmall">{catrow.forumrow.L_MODERATOR} {catrow.forumrow.MODERATORS}</span></td>
    <td class="row2" align="center" valign="middle" height="50"><span class="gensmall">{catrow.forumrow.TOPICS}</span></td>
    <td class="row2" align="center" valign="middle" height="50"><span class="gensmall">{catrow.forumrow.POSTS}</span></td>
    <td class="row2" align="center" valign="middle" height="50" nowrap="nowrap"> <span class="gensmall">{catrow.forumrow.LAST_POST}</span></td>
  </tr>
  <!-- END forumrow -->

Denne kode må vel, på en eller anden måde, blive duplikeret vha. en while eller andet, for at vise alle de fora der er blevet oprettet - men der er intet kode der tyder på dette i tpl filen.

Er der nogen der kan forklare mig, hvordan dette kan lade sig gøre? (Jeg håber at i forstår - det er lidt svært at forklare)
Avatar billede challenge Praktikant
20. marts 2007 - 17:24 #1
Deler man så bare HTML koden op i flere dele, eller hvad?
Avatar billede j4k0b Nybegynder
21. marts 2007 - 14:47 #2
Der er flere færdigbyggede template systemer du frit kan hente og benytte. Det mest populære til PHP er Smarty: http://smarty.php.net/. Det fungerer i teorien ret simpelt:

1) Gem variabler fra PHP til Smarty. Selvfølgelig er det kun variabler du videregiver til Smarty som kan benyttes i dine templates.

2) Compile template filen. Når dette gøres bliver lykker, funktioner mv. genereret til HTML og sendt til brugeren (udskrevet i browseren).

3) Smarty har sin egen syntax som ikke er helt ligesom PHP men det minder om, læs dokumentationen på deres hjemmeside.


Eksempel (PHP koden):

$smarty = Smarty();
$smarty->assign('headline', 'Mine venner :-)');
$smarty->assign('intro', 'Her er en liste over alle mine bedste venner:');
$smarty->assign('names', array('Morten', 'Anders', 'Henrik'));
$smart->display('min_template_fil.tpl');


Eksempel (min_template_fil.tpl):

<h1>{$headline}</h1>
<p>{$intro}</p>
{section name=liste loop=$names}
    {$names[liste]}<br>
{/section}

-----

Ovenstående eksempel ville resulterer i:

<h1>Mine venner :-)</h1>
<p>Her er en liste over alle mine bedste venner:</p>
    Morten<br>
    Anders<br>
    Henrik<br>
Avatar billede j4k0b Nybegynder
21. marts 2007 - 14:53 #3
Smarty er en god løsning, dog bruger jeg det ikke selv. Dels fordi jeg skriver mine hjemmesider i Python og dels fordi der er template systemer som er mere overskuelige og rene i syntaxen.

I Python bruger jeg et system som hedder TAL (Tag Attribute Language), og det findes også til PHP: http://phptal.motion-twin.com/

Man gemmer variabler til sine templates på samme måde som man gør i Smarty. I TAL skrives alle koder som attributes i dine HTML tags (deraf navnet).


Et eksempel på et TAL-tamplate ligende ovenstående:

<h1 tal:content="headline"></h1>
<p tal:content="intro"></p>
<span tal:repeat="name names" tal:content="string:name<br>"></span>


---

Den eneste forskel her, er at <span> tagget også bliver vist ved hvert navn (det kan man dog godt komme udenom, men det er sjældent aktuelt)
Avatar billede challenge Praktikant
21. marts 2007 - 18:19 #4
Lyder rigtig godt!

Kigger lidt på smarty - det virker som et godt system.

Smid et svar! Og tusinde tak for hjælpen!
Avatar billede j4k0b Nybegynder
22. marts 2007 - 08:07 #5
smidt :)
Avatar billede challenge Praktikant
22. marts 2007 - 14:30 #6
Udlevret ;)
Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester