Avatar billede _anden_ Nybegynder
16. juni 2004 - 15:21 Der er 12 kommentarer og
1 løsning

PHP + Templates

Hej Eksperter

Jeg er på udkig efter en totorial hvor man benytter PHP sammen med templates. Jeg vil gerne lave en hjemmeside som kun er opbygget af templates, hvor der ligger nogle klasser og styre dem.

Er der nogen af jer der kan henlede mig til en artikel eller øvelse hvor jeg kan danne mig et inblik i hvordan jeg kan begynde at arbejde med dette ??
Avatar billede dennismp Nybegynder
16. juni 2004 - 15:56 #1
Prøv at gå herind og se på et par forskellige systemer - se hvordan de virker og om du kan lide dem generelt.

Smarty er der nogle der er meget glade for, andre er ikke. Mange af dem minder dog om hinanden.

http://freshmeat.net/search/?q=template+php&section=projects&Go.x=0&Go.y=0
Avatar billede _anden_ Nybegynder
16. juni 2004 - 16:00 #2
Ok jeg prøver at kigge på det.
Avatar billede coderdk Praktikant
17. juni 2004 - 03:05 #3
Templatesystemer sløver altid systemet ned.
Hvorfor i det hele taget bruge et templatesystem, når php i sig selv er et templatesystem? Det kræver blot lidt diciplin!
F.eks. en side der hiver en liste ud kunne se sådan ud:

side.php:
<?php

  require_once( "mydb.php" );
  $sql = "SELECT navn, telefonnummer FROM user";
  $qh = $db->query( $sql );
  $brugere = array();
  while ( $row = $db->next_record() )
  {
    $brugere[] = $row;
  }
  $db->free();

  require_once( "side.tpl.php" );

?>

og templaten side.tpl.php:

<?php

  require_once( "header.tpl.php" );

  if ( count( $brugere ) == 0 ):

?>
    <p>Der er ingen personer i databasen</p>
<?php

  else:

?>
  <table>
  <th>
    <td>navn</td>
    <td>telefonnummer</td>
  </th>
  <? foreach ( $brugere as $bruger ): ?>
  <tr>
    <td><?= $bruger['navn'] ?></td>
    <td><?= $bruger['telefonnummer'] ?></td>
  </tr>
  <? endforeach ?>
  </table>
<?php

  endif;

?>

Jeg har brugt det før, og det er simpelt! Hvis man tæver nogle designere, er det meget nemt for dem at lære :) Designerne er også grunden til at jeg bruger PHP's alternative syntaks, det er nemmere for almindelige mennesker at forstå end { og }...
Avatar billede dennismp Nybegynder
17. juni 2004 - 08:34 #4
Det er billigere at købe hardware end at have en programmør til at rode med uoverskuelig kode. Desuden er langt de fleste sites slet ikke så krævende, at man behøver at tænke på performance. Som med "rigtig" programmering, så bør man lave det, så det er pænt. Og derefter teste og se om der er flaskehalse der skal ses på. Ikke omvendt.

Men ellers bruger jeg samme fremgangsmåde ved at bruge php som template engine - men jeg syntes stadig at det er en god ting at se på hvordan andre har gjort det og hvad man selv syntes der er smart.

Der er en lidt pænere måde at gøre det på her:
http://www.massassi.com/php/articles/template_engines/
Avatar billede coderdk Praktikant
17. juni 2004 - 10:21 #5
Enig, enig. Vi prøvede også adskillige templateengines, og vi var ved at skrive vores egen, indtil vi til sidst besluttede os at bruge php, samt et par af vores egne funktioner så man slap for linier som "if ( count( $recordset ) == 0 )" osv.

Det link du smed bruger næsten det samme eksempel som jeg gjorde, og som han skriver:

"the point of template engines should be to separate your business logic from your presentation logic, not separate your PHP code from your HTML code"

Og man kan vil næppe være uenig i det! ;)

Så _anden_, prøv et par stykker, som Smarty og FastTemplates eller lignende, og prøv så at lave det med php selv, evt. med den alternative syntaks. Men bemærk, du skal have disciplin, og bære opmærksom på at du ikke bruger "business logic" i dine templates :)
Avatar billede thorus Nybegynder
17. juni 2004 - 12:27 #6
Ja der er mange forskellige template systemer, jeg bruger et meget basalt et som virker godt. eks. hvis der er en html'er som ikke fatter php  så er koden delt 100% op i html og php

http://www.phpuniverset.dk/show_source.phtml?script_id=11
Avatar billede _anden_ Nybegynder
21. juni 2004 - 14:58 #7
Efter en stresset weekend har jeg fået læst jeres forslag igennem :-) Men jeg leder stadig ikke efter en færdig template enginen, men mere efter nogle aktikler eller tutorials der kan guide / hjælpe mig til at lære at arbejde med sådanne, så jeg kan få den helt gundlæggende forståelse.

Og ang. det med at man ikke skal dele HTML og PHP op så det ligger hver for sig, er nu ikke lige hvad jeg har hørt. Men ret mig endlig hvis det jeg siger ikke passer... Som sagt tidligere er jeg ikke lige frem professor på dette her område :-)
Avatar billede coderdk Praktikant
21. juni 2004 - 15:01 #8
Idéen er ikke at adskille php og html, men rettere at adskille præsentations- og businesslogik. Selv når du bruger templatesystemer, bruger du jo typisk noget "kode" - Loops/if/then/else osv. :)
Avatar billede _anden_ Nybegynder
21. juni 2004 - 15:59 #9
Templates = HTML -> f.eks "<table><tr><td>{BODY_CONTENT}</td></tr></table>"
PHP = Index.php -> Kalder klasser f.eks require_once("Design.class"); -> returnere Templates eller andre værdier.
Design = CSS -> Style.css

Er det ikke sådan man indeler tingene når man arbejde med templates ?

og så laver man eks. file_get_content("templates/body_content.tpl") og herefter laver man så str_replace("{BODY_CONTENT}",$temp,$this->template);

Ved godt det er fortalt lidt i grove træk. Men ville bare hører om det er ikke er sådan man arbejde med templates hvis det skal foregå efter en eller anden standart ?
Avatar billede coderdk Praktikant
21. juni 2004 - 16:21 #10
Jo, det ville være et simpelt template system.
Avatar billede _anden_ Nybegynder
21. juni 2004 - 17:05 #11
OK så har vi fat i den lange ende.
Jeg leder efter en totorial eller lign, hvor de beskriver hvordan man kan komme i gang med at arbedje med templates(system) der bruger netop disse ting jeg nævnte før, som str_replace, file_get_content, klasser osv. hvor man kan få en dybdegående forståelse i hvordan dette fungerer.
Avatar billede _anden_ Nybegynder
21. juni 2004 - 17:07 #12
Ved nu godt det er PHP på et lidt mere avanceret plan, men hvis du forstår :-)
Avatar billede _anden_ Nybegynder
27. juni 2004 - 16:23 #13
Hmm så lukker vi den nu hvor der ikke kommer flere svar til mit spørgsmål
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