Versio

Gevonden: Smarty

Overzicht Reageren

Arend a

Arend a

03/02/2005 14:01:00
Quote Anchor link
http://smarty.php.net/

Fantastisch! Dit is een template engine die mijn geliefde HTML::Template van perl doet verbleken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
include('Smarty.class.php');

// create object
$smarty = new Smarty;

// assign some content. This would typically come from
// a database or other source, but we'll use static
// values for the purpose of this example.

$smarty->assign('name', 'george smith');
$smarty->assign('address', '45th & Harris');

// display it
$smarty->display('index.tpl');
?>


Template dingen als:
<html>
<head>
<title>User Info</title>
</head>
<body>

User Information:<p>

Name: {$name|capitalize}<br>
Addr: {$address|escape}<br>
Date: {$smarty.now|date_format:"%Y-%m-%d"}<br>

</body>
</html>

Vervolgens: het laden van meerdere info naar een template:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
include('Smarty.class.php');

// create object
$smarty = new Smarty;

// assign an array of data
$smarty->assign('name', array('bob','jim','joe','jerry','fred'));

// assign an associative array of data
$smarty->assign('users', array(
    array('name' => 'bob', 'phone' => '555-3425'),
    array('name' => 'jim', 'phone' => '555-4364'),
    array('name' => 'joe', 'phone' => '555-3422'),
    array('name' => 'jerry', 'phone' => '555-4973'),
    array('name' => 'fred', 'phone' => '555-3235')
    ));



// display it
$smarty->display('index.tpl');
?>



<table>
{section name=mysec loop=$name}
{strip}
<tr bgcolor="{cycle values="#eeeeee,#dddddd"}">
<td>{$name[mysec]}</td>
</tr>
{/strip}
{/section}
</table>

<table>
{section name=mysec loop=$users}
{strip}
<tr bgcolor="{cycle values="#aaaaaa,#bbbbbb"}">
<td>{$users[mysec].name}</td>
<td>{$users[mysec].phone}</td>
</tr>
{/strip}
{/section}
</table>


Dit wordt pas echt leuk:
Een tabel compleet naar een template sjouwen zonder moeite zou zo moeten kunnen (alles dmv fetcharray naar smarty slepen):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
// mysql connectie al gemaakt ga ik even voor de lol vanuit
// Dit is een simpele versie van wat ik in perl gebruik (in perl kan ie eigenlijk ook nog inserten, en updaten en andere leuke dingen)

function sjouwtabel ($query) {
    $result = mysql_query($query);
    $resultarray = array();
    // $query is bijv: SELECT * FROM TABEL
    while ($record = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($resultarray, $record);
    }

    return $resultarray;
}


// Nu het specifieke gedeelte:

include('Smarty.class.php');

// create object
$smarty = new Smarty;

$data = sjouwtabel("SELECT naam,comment,datum FROM guestbook");
// gegeven: naam en comments zijn strings, datum is mysql datetime
$smarty->assign('entries', $data);
$smarty->display('guestbook.tpl');

?>


Nu de template (voor de w3c fanaten: NU EVEN NIET!):

<html>
<head><title>Guestbook</title></head>
<body>
<h1>Guestbook</h1>
<table>
<tr><td>
{section name=entry loop=$entries}
{strip}
<tr bgcolor="{cycle values="#aaaaaa,#bbbbbb"}">
<td><b>{$entries[entry].name|escape:"htmlall"}</b></td>
<!-- // HTML entities.. --!>
<td>{$entries[entry].date|date_format:"%A, %B %e, %Y"}</td>
<!-- // Date format.. eet alle formaten (unixtime, time, mysql formaat --!>
</tr>
<tr bgcolor="{cycle values="#aaaaaa,#bbbbb"}">
<td colspan="2">{$entries[entry].comment|escape:"htmlall"}</td></tr>
</tr>
</table>
{/section}
</table>


Effectief gezien:
Alle opmaak informatie zit nu in de template. De code in php is beperkt tot 4 regels, niet geheel eerlijk, in de template zitten toch flink wat meer regels code.

Mijn punt is dat je met dit systeem een ongelofelijk krachtig systeem kan opzetten om met minder tijd, minder code meer te doen.
Gewijzigd op 03/02/2005 14:08:00 door Arend a
 
PHP hulp

PHP hulp

24/05/2012 19:49:12
Gesponsorde koppelingen:
 
Baken

Baken

03/02/2005 14:49:00
Quote Anchor link
Opzich kun je hier idd leuke dingen mee..

Jelmer
 
Roy Bongers

Roy Bongers

03/02/2005 15:58:00
Quote Anchor link
Template parsers zijn wel leuk ja. Ik gebruik nu die van phpBB :). die is ook wel relaxt. Hier ziet de template er wat ingewikkelder uit en bij phpBB ziet de phpcode er iets ingewikkelder uit. dus what's the difference ^_^.

Ik ben er nu pas net wat mee aant experimenteren. Opzich wel leuk maar er zullen heus wel nadelen aan zitten die ik nog niet gevonden heb :D.
 
Kasper Isgek

Kasper Isgek

03/02/2005 16:28:00
Quote Anchor link
Hmm....ga me toch eens wat verdiepen in dat templates. Weet niet precies wat je ermee kan, maar begrijp dat het erg makkelijk is. Bedankt voor de link iig.

En offtopic: coole naam als onderwerp! Ik dacht al "wie is er dan zijn smartie kwijt?" :)
 
Bas Kreleger
Beheerder

Bas Kreleger

03/02/2005 17:38:00
Quote Anchor link
breezerslet :)

wel vet dat smarty..
 
Roy Bongers

Roy Bongers

03/02/2005 18:08:00
Quote Anchor link
met een template parser kun je de html gescheiden houden je scripts. In theorie zou er helemaal geen html meer in je scripts hoeven te zitten maar in praktijk klopt dit niet helemaal. Maar zo kun je heel makkelijk verschillende lay outs maken. Je kan zelfs de gebruiker een layout laten kiezen. Bijna iedereen kent wel phpBB forums. Bij die forums is de code overal hetzelfde. Alleen de templates zijn anders :). op phpbb.com staan wel een paar voorbeelden.
 
Arend a

Arend a

04/02/2005 09:17:00
Quote Anchor link
Voor www.uprise.be heb ik iets van 3 <b> tags verwerkt in de html. (En er zitten toch iets van 20 templates in de site, zo niet meer). Je zult alleen even moeten kijken of je werkelijk zin hebt om er een aparte template voor te brouwen.
 
Roy Bongers

Roy Bongers

04/02/2005 11:21:00
Quote Anchor link
huh wacht dit volg ik niet :/ Met 3 <b> tags kun je geen complete site maken lijkt me :). Je zult toch ook wel gewoon wat .tpl bestanden hebben neem ik aan?
 
Arend a

Arend a

04/02/2005 13:04:00
Quote Anchor link
Drie <b> tags in mijn php code, de rest zit dus in templates.
 



Overzicht Reageren

Get Adobe Flash player