Spring til indhold

Smarty

Fra Wikipedia, den frie encyklopædi
Smarty Templates
Original skaber(e)Monte Ohrt, Messju Mohr
Stabil version2.6.20 (15. august 2008)
TypeTemplate engine
LicensLGPL
HjemmesideSmarty.net

Smarty er en såkaldt template engine, som kører i PHP.

Smarty er i princippet bare et PHP script, som udfører en opgave, men det er blevet så udbredt at nogle kalder det et direkte framework. Der er der dog også en god grund til, da udviklerne har opsat Smartys filsystem og indstillinger, som var det et faktisk modul til PHP.

Hvad Smarty egentlig gør, er at det tager et PHP script, udfører det, og derefter sender forskellige genererede variabler til et template (skabelon), hvor Smarty derefter udfører forskellige opgaver med variablerne, for til slut at kompilere skabelonen til en webside som bliver vist.

Smarty benytter sig normalt af endelsen .tpl, dog skulle alle andre endelser fungere også. Grunden til at .tpl er mest brugt, er at det står for template. Med endelsen .tpl, er det også nemmere at finde ud af, hvad der er skabeloner og hvad der er PHP-filer.

Afgrænsning af koden

[redigér | rediger kildetekst]

I Smarty-skabeloner, bruger man normalt { og } til at afgrænse kode. For eksempel, vil {$variabel} udskrive en variabel, der hvor koden er. Variablen skal dog være sendt fra PHP scriptet først.

Man kan bruge sine egne såkaldte delimiters, ved at bruge en kode i stil af denne:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Indstil delimiters.
$style->left_delimiter = "<smarty-";
$style->right_delimiter = "-smarty>";

?>

Med ovenstående kode, kan du nu udskrive en variabel med <smarty-$variabel-smarty>, i stedet for at bruge { og }, hvilke tit kolliderer med JavaScript. Man skal passe på med, hvilke delimiters man bruger. Hvis du, for eksempel, bruger <? og ?>, vil det muligvis kollidere med PHPs egne tags.

Eksempler på Smarty-kode

[redigér | rediger kildetekst]

Den klassiske Hej verden, i Smarty:

test.php:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Send nogle variabler til Smarty.
$style->assign('hello','Hej');
$style->assign('world','verden!');

// Vis siden.
$style->display('test.tpl');

?>

test.tpl:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
{$hello} {$world}
</p>
</body>
</html>

Hvis man laver de to filer, test.php og test.tpl, og sætter den ovenstående kode ind i dem, og åbner test.php i et browservindue, vil det udskrive noget i stil af:

Hej verden!

Og sidekoden vil være:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
Hej verden!
</p>
</body>
</html>

Jeg hedder Hans

[redigér | rediger kildetekst]

Denne er taget fra PHP-artiklens Jeg hedder Hans.

test2.php:

<?php

// Åbn Smarty-modulet.
require('smarty/libs/Smarty.class.php');

// Åbn Smartys class.
$style = new Smarty();

// Definer variabler.
$navn = "Hans";
$alder = "32";

// Send variabler til Smarty.
$style->assign('navn',$navn);
$style->assign('alder,$alder);

// Vis siden.
$style->display('test2.tpl');

?>

test2.tpl:

<html>
<head>
<title>Smarty test-side 2</title>
</head>
<body>
<p>
Mit navn er {$navn}.
</p>
<p>
Jeg er {$alder} år gammel.
</p>
</body>
</html>

Hvis man laver de to filer, test2.php og test2.tpl, og sætter den ovenstående kode ind i dem, og åbner test2.php i et browservindue, vil det udskrive noget i stil af:

Mit navn er Hans.
Jeg er 32 år gammel.

Og sidekoden vil være:

<html>
<head>
<title>Smarty test-side</title>
</head>
<body>
<p>
Mit navn er Hans.
</p>
<p>
Jeg er 32 år gammel.
</p>
</body>
</html>

Eksterne henvisninger

[redigér | rediger kildetekst]

Den officielle Smarty hjemmeside