[ Ivan Golubović @ 21.09.2002. 13:14 ] @
Bilo bi lepo kada bi neko objasnio zašto je ovo dobro i kako se radi, za nas koji neznamo. Ovde na forumu često se priča i o nekoj Smarty skripti koja ovaj posao olakšava. Voleo bih kada bi neko detaljno objasnio kako se ovo koristi.

Ova stranica bi mogla da bude dobar tutorial.
[ Goran Rakić @ 21.09.2002. 14:27 ] @
Smarty je klasa(e) koje omogućavaju napredan rad sa šablonima. Za neke manje sajtove eval() funkcija i šablon u mysql-u ili fajlovima rešava posao.
[ Dejan Topalovic @ 21.09.2002. 14:38 ] @
Danas u vecini profesionalnih firmi, koje se bave izradom web stranica, posao rasporedjuje na nekoliko dijelova:
- organizator: planira projekt, vodi brigu kako projekt napreduje i zadaje poslove ostalim radnicima
- graficki dizajner: osmislja i kreira grafiku za web sajt, layout, pojedine elemente i tako to
- webmaster (koji je najcesce i programer): na osnovu zadanog layouta i dizajna, radi PHP (ili s nekim drugim jezikom) aplikaciju koja ce nezavisno od dizajna i layouta uradjenog u HTML-u (ili XHTML-u, XML-u i sl.), ubacivati odredjeni sadrzaj na tu stranicu

To znaci da svako radi svoj posao nezavisno od drugih, a organizator sve to nadgleda da bude kako treba. Dizajner ne mora poznavati neki programski jezik, niti je to njegov posao, a takodje programer ne mora da se muci oko dizajna i grafike.
Ako se treba izvrsiti neka promjena na layoutu stranice ili oko dizajna ili oko samog funkcionisanja cijelog systema, svako radi svoj dio posla, tako da ne ometa onog drugog.

Po danasnjim definicijama to se zove "Template engine system" (sablonski uradjen sistem). Najbolji trenutno je Smarty Template Engine, kojeg mozes naci na adresi http://smarty.php.net/.

Da bih ti objasnio kako sve to izgleda, docaracu ti na jednom primjeru, koristeci Smarty Template Engine.
------------------------------------------------------------

Trebaju nam dvije datoteke:
- jedna u kojoj se nalazi layout uradjen u HTML-u sa definisanim sablonskim pojmovima (Template)
- druga u kojoj se nalazi PHP skripta koja parsira (obradjuje) zadani Template (stranicu sa HTML layoutom)

1 -- index.tpl -- POCETAK --
Code:

<html>
<head>
<title>Razdvajanje HTML i PHP koda</title>
</head>
<body bgcolor="#FFFFFF">

<table border="0" bgcolor="#EEEEEE" width="70%">
 <tr>
  <td>
  Ime
  </td>
  <td>
  [b]{ime}[/b]
  </td>
 </tr>
 <tr>
  <td>
  Prezime
  </td>
  <td>
  [b]{prezime}[/b]
  </td>
 </tr>
 <tr>
  <td>
  Godine
  </td>
  <td>
  [b]{godine}[/b]
  </td>
 </tr>
</table>

</body>
</html>

-- index.tpl -- KRAJ --

Tu vidis obican HTML kod sa ubacenim sablonskim pojmovima (varijablama), koje PHP skripta obradjuje i zatim prikazuje obradjen sablon sa ubacenim sadrzajem.
U slucaju da dizajner kaze da se treba promijeniti boja slova, pozadine ili neki graficki element, dovoljno je izmijeniti samo ovaj sablon, ne dirajuci PHP skriptu.
Dalje, PHP skripta upravlja podacima koje se prikazuju na stranicu. Obradjuje sve to i prikazuje u browseru.

-- index.php -- POCETAK --
Code:

<?php
require("Smarty.class.php");
$objekat = new Smarty;

$objekat->assign('ime','Dejan');
$objekat->assign('prezime','Topalovic');
$objekat->assign('godine','24');

$objekat->display('index.tpl');

-- index.php -- KRAJ --

Ti u browseru pozivas samo skriptu index.php, koja zatim radi sav posao i prikazuje ti nazad cjelokupni sadrzaj. Source kod bi trebao na kraju izgledati ovako:

Code:

<html>
<head>
<title>Razdvajanje HTML i PHP koda</title>
</head>
<body bgcolor="#FFFFFF">

<table border="0" bgcolor="#EEEEEE" width="70%">
 <tr>
  <td>
  Ime
  </td>
  <td>
  Dejan
  </td>
 </tr>
 <tr>
  <td>
  Prezime
  </td>
  <td>
  Topalovic
  </td>
 </tr>
 <tr>
  <td>
  Godine
  </td>
  <td>
  24
  </td>
 </tr>
</table>

</body>
</html>


Izgleda jednostavno? Mozda i jeste, ali tek kad se savlada sintaksa i shvati nacin na koji sve to funkcionise.
Procitaj dokumentaciju koja se odnosi na trazenu temu, vjezbaj i to je to.
[ broker @ 24.09.2002. 12:30 ] @
Ivane u stvari jeste jednostavno. Naprosto kada pises PHP kod
u okvru HTML-a gledaj da on ne geneise HTML nego samo da
"popunjava" mesta podacima. I to je sasvim dovoljno da se ipsuni osnovni zahtev, da dizajner moze da dizajnira stranu bez ulaska u php kod a PHP programer da napise kod bezulaska u dizajn...

[ Ivan Golubović @ 24.09.2002. 18:03 ] @
Izgleda da mi je neko ovde obrisao zadnji topic, ali ja o tome nisam obavesten.

OK. Shvatio sam ja kako to radi, e sada kako to da instaliram na WinXP sistemu i kako to da instaliram na Linux sistemu na kome nemam pristup i ne mogu da instaliram nove pluginove(da ih tako nazovem) za PHP (to znaci da stavim tamo gde mi je sajt hostovan).
[ broker @ 24.09.2002. 18:14 ] @
Nema nikakve razlike od standardne instalacije, radi se o tome da se drzis pravila prilikom pisanja skriptova.

Recimo, umesto:

<?
echo "<td>Email: " . $email . "</td>";
?>

ti stavljaj

<td>Email: <? echo $email ?></td>

i na taj nacin si u dovoljnoj meri "razdvojio" HTML od PHP koda.

Naravno, mnogo je bolje resenje koristiti neki template sistem kao sto ti je vec preporuceno, samo sto mislim da se to ne isplati za neke jednostavne poslove.
[ Goran Rakić @ 24.09.2002. 18:26 ] @
a i eval() radi lepo...