preprost template engine
4 naročniki
4 naročniki
Torej z template engini nimam nič izkušenj in iščem čimbolj preprost template engine. Gledal sem smarty ampak se mi zdi za stran ki jo izdelujem veliko preobsežen. Rad bi nekaj majhnega, mogoče z podporo cachiranja..
Našel sem en primer in me zanima, če je primeren za uporabo in ali se najde še kaj podobnega? Hvala za nasvete.
8 odgovorov
Super, nekaj takega sem iskal. Malo sem probaval kako in kaj s tem in se mi je zalomilo. Torej imam datoteke: main.tpl, header.tpl, user.tpl, footer.tpl.
main.tpl
<head>
<title>{site_title}</title>
</head>
<body>
{include header.tpl}
<div id="content">{site_content}</div>
{include header.tpl}
</body>
</html>
v header.tpl in footer.tpl imam nek tekst
user.tpl
<h1>{username} profile</h1>
<ul>
<li><span>Name:</span>{name}</li>
<li><span>Age:</span>{age}</li>
<li><span>Location:</span>{location}</li>
<li><span>Date:</span>{date}</li>
</ul>
<ul>
{foreach $users as $id=>$user}
<li><a href="{id|escape}">{user}</a></li>
{/foreach}
</ul>
in datoteka user.php
<?php
include('class.minitpl.php');
$tpl = new minitpl;
$tpl->load('user.tpl');
$data = array(
"username" => "test",
"name" => "Kwak",
"age" => "150",
"location" => "Slovenija",
"date" => date("m.d.Y")
);
$tpl->assign($data);
$users = array(
"users" => array("test1", "test2", "test3", "test4", "test5"),
);
$tpl->assign($users);
$tpl->render();
?>
Zdaj bi pa jas želel, da je main.tpl glavn fajl in je kot neke vrste iztočnica za druge datoteke. Torej če jas v brskalniku odprem user.php bi mi preko main.tpl moralo naložit header in footer ter vsebino user.tpl. Torej zanima me kako spremenljivko $tpl "vpisati" pod site_content v main.tpl. Upam da razumete. :)
Če prav razumem?
{include header.tpl}
<h1>{username} profile</h1>
<ul>
<li><span>Name:</span>{name}</li>
<li><span>Age:</span>{age}</li>
<li><span>Location:</span>{location}</li>
<li><span>Date:</span>{date}</li>
</ul>
<ul>
{foreach $users as $id=>$user}
<li><a href="{id|escape}">{user}</a></li>
{/foreach}
</ul>
{include footer.tpl}
Al sem narobe razumel tvoje vprašanje ?
V bistvu ne popolnoma, rad bi da bi vse izhajalo iz main.tpl, da nebi rabo v vsaki strani z vsebino (ki ni footer ali header) inkludat teh dveh datotek. Nekako da bi v datoteki user.php zloadal main.tpl in kot content vstavil user.tpl. Upam da je bolj razumljivo..
{include header.tpl}
<div id="content">
{if $data['username'] != null } <!-- ustvariš en pogoj -->
{include user.tpl}
{/if}
</div>
{include footer.tpl}
Če te sedaj prav razumem :D
Še zmeraj nisma na istem. Imam datoteko user.php v kateri zloadam main.tpl:
$tpl->load('main.tpl');
v katerem se avtomatsko inkudata header in footer.tpl, zaenkrat imam obliko strani z header in footer (ter potrebne html, body, meta tage). Moram še samo vstaviti vsebino torej morem nekako preko assign funkcije vstaviti vsebino user.php (v prejšnji datoteki) v main.tpl:
$tpl = new minitpl;
$tpl->load('user.tpl');
$data = array(
"username" => "test",
"name" => "Kwak",
"age" => "150",
"location" => "Slovenija",
"date" => date("m.d.Y")
);
$tpl->assign($data);
$users = array(
"users" => array("test1", "test2", "test3", "test4", "test5"),
);
$tpl->assign($users);
$tpl->render();
v main.tpl, vrjetno nekako takole:
$tpl->assign("content", $tpl->load('user.tpl'));
ali pa si jas to stvar narobe predstavljam.