Web fejlesztés - Smarty Template

Egy oldal felépítése / végszó

Nézzük meg a továbbiakban, hogyan lehet egy a smartyval egyszerűen felépíteni egy weblapot. Legyen a egy 3 részes (felső banner, oldalsó menü és középső terület) szerkezetű oldal a példa, ahol a középső rész cserélődik a menü hatására.

A html kód:

<html>
<head>
<title>cim</title>
</head>
<body>
<table width="100%">
<tr>
<td colspan="2">banner</td>
</tr>
<tr>
<td width="20%">menü</td>
<td>középső rész</td>
</tr>
</table>
</body>
</html>

A smarty-t használva a középső részt külön fájlokba téve egyszerűen cserélgethetjük:

<td>
...ez a középső rész...
{include file=$kozepso_resz}
</td>

Ezzel behívjuk azt a fájlt középre, aminek a fájlneve (elérési úttal együtt) a $kozepso_resz változóban van, ezt a PHP vezérlésben állítsuk be, nézzük is megy hogyan. Index.php:

<?php

//inicializálás: osztályok (smarty) betöltése, db kapcsolat indítása,...

$smarty = new smarty();
$smarty->template_dir="";
$smarty->compile_dir="smarty_php";

$site="fooldal"; // ha nincs kiválasztva semmi menü ez jelenik meg

if (isset($_GET['page'])) {

if ($_GET['page']=="menu1") {
//Menüpont tartalmának előkészítése:
$smarty->assign("adat","blablabla");
$site="menu1hez_tartozo_sablonfajl";
}

if ($_POST['page']=="form1") {
form1t_feldolgozasat_vegzo_fuggveny();
}

}

$smarty->assign("kozepso_resz",$site.".tpl");
$smarty->display("index.tpl");

?>

A sablonok a smarty_php mappába generálódnak, maguk a sablonfájlok pedig az index.php mellé kerülnek (lásd a smarty konfig részében), azért hogy az "álomtakáccsal" dolgozó grafikus kollégák, hacsak részben is, de meg tudják úgy nyitni szerkesztésre a sablonfájlokat, hogy a képek, és egyéb fájlokat is tudja kezelni a webszerkesztő program.

Nagyon hasznosnak ítélem a smarty-t, és ma már a szinte legegyszerűbb dinamikus weblapnál is ezt használom.

Egy kis példa a smarty hasznosságára: Nemrég volt egy melóm, ahol egy olyan weblapot kellett rendbe tennem, amit már kb. másfél éve toldozott-foldozott több programozó is. Függvények több helyen definiálva, a php fájlok mérete kb 5MB; php, html összevissza keveredve. Az első nap még röhögtem magamba, illetve a kollégákkal a kódon, hogy milyen gányolások voltak benne, de utána már nem volt olyan vicces. Három héttel később a kód 80kb-ra csökkent, a sablonfájlokkal és az oldal összes képével együtt nem érte az 1 MB-t az összméret.

És hogy miért is érte meg ez a munka, azon kívül, hogy minden úgy működött, ahogy kellett? 1-2 hónappal később kellett egy ugyanolyan szerkezetű, de más designnel rendelkező weboldalt készíteni ugyanannak a megrendelőnek. A grafikus kollégák munkáján kívül (~3 óra) kb. 5 óra alatt már a tárhelyen volt a weblap :D

Ha tetszett az írásom, és lesz időm a következők bemutatására gondoltam még:
- Webfejlesztő programok
- Ajax, 1-2 hasznos PHP függvénykönyvtár, JavaScript függvénykönyvtár
- PHP keretrendszerek
- Hasznos algoritmusok weboldalak felépítéséhez