Smarty

Smarty on PHP-kielellä kirjoitettu mallinejärjestelmä. Smarty erottaa PHP:n ja HTML:n toisistaan ja sen tarkoitus on lähinnä tuottaa HTML-sisältöä, erillisten Smarty-tarkkeiden ja näytönohjauslogiikan avulla. Sallittuja tarkkeita ovat esimerkiksi muuttujat kuten `{$muuttuja}` ja joukko loogisia ja ohjausoperaattoreita, kuten `{if}...{else}...{/if}`. Smartya käytetään useimmiten PHP-sovelluksissa erottamaan toimintalogiikka esityslogiikasta. Tämän avulla koodi saadaan selkeämmäksi ja helpommin muokattavaksi. Sovelluksen ulkoasua on varsin helppo muuttaa koskematta varsinaiseen toimintalogiikkaan tai PHP-koodiin. Smarty on kuitenkin yleispätevämpi ja sillä voi generoida tarvittaessa muitakin kieliä kuin HTML:ää. Smarty mahdollistaa näyttölogiikan ohjaamisen * Säännöllisillä lausekkeilla * foreach- ja muilla toistorakenteilla * Valintarakenteilla ja monella muulla tavalla. Myös monet muut mallinejärjestelmät tukevat vastaavia toimintoja. == Käännetyt mallineet == Smarty poikkeaa useista muista PHP- mallinejärjestelmistä siten, että Smarty tarkastaa aina mallineen lukiessaan, onko siitä saatavilla tuore käännetty versio. Jos tällaista ei löydy, Smarty kääntää mallineen puhtaaksi PHP-koodiksi ja sijoittaa koodin käännetyt- hakemistoon. Jos tuore käännetty versio taas löytyy, Smarty käynnistää sen. Näin malline toimii erittäin nopeasti, koska PHP:n ei tarvitse suorittaa lukuisia etsi-korvaa -toimintoja sijoittaessaan sisältöä muuttujiin. Myös ohjausrakenteet (toistot, ehtorakenteet) kääntyvät optimoiduksi PHP-koodiksi. Smartyssa on myös lukuisia laajennuksia, esimerkiksi `select_date`, joka luo halutulla tavalla esitetyn päiväyskentän pudotuslistojen avulla. Laajennusten rakenne on yksinkertainen ja niitä on helppo laatia lisää. == Alkeisesimerkki == Koska Smarty erottaa PHP HTML:stä, tarvitaan kaksi tiedostoa. Luodaan aluksi malline `basic.tpl` {$sisalto} Toimintalogiikan hoitavassa koodissa Smarty määritellään käyttämään edellistä mallinetta: config_dir = SMARTY_DIR; $smarty->template_dir = './template'; $smarty->compile_dir = './template/compiled'; $smarty->compile_check = TRUE; $smarty->debugging = FALSE; // Siirretään muuttujiin haluttu sisältö $smarty->assign('otsikko', 'Tämä on otsikko!'); $smarty->assign('sisalto', 'Tämä on assign-toiminolla lisätty sisältö'); // Näytetään malline $smarty->display('basic.tpl'); ?> ==Esimerkki toiston ja ehdon sisältävästä rakenteesta== Seuraavassa esimerkissä on kommentti, `{if ...}`\- ja `{section...}`-toistorakenne. {* käydään läpi taulukon 'valikkotekstit' kaikki alkiot ja käytetään indeksinä muuttujaa 'idx', jolla voidaan poimia myös muiden saatujen synkronistan taulukoiden alkioita *} {section name=idx loop=$valikkotekstit} {if $linkit[idx] ne } [{$valikkotekstit[idx]}]({$linkit\[idx\]}) {else} {$valikkotekstit[idx]} {/if} --- {/section} Mallineen näyttävä PHP-koodi voisi olla seuraavanlainen: config_dir = SMARTY_DIR; $smarty->template_dir = './template'; $smarty->compile_dir = './template/compiled'; $smarty->compile_check = TRUE; $smarty->debugging = FALSE; // Luodaan rinnakkaiset taulukot linkit/tekstit, tyhjä linkki tarkoittaa väliotsikkoa $linkit=array(,'http://fi.wikipedia.org','http://www.google.com','http://www.php.net'); $valikkotekstit = array('Päävalikko','Wikipedia','Google','PHP- ohjelmointikieli'); // Siirretään muuttujiin haluttu sisältö $smarty->assign('otsikko', 'Tämä on otsikko!'); $smarty->assign('linkit',$linkit); $smarty->assign('valikkotekstit',$valikkotekstit); // Näytetään malline $smarty->display('menu.tpl'); ?> == Sisäkkäiset toistorakenteet == Toistorakenteet pääsevät oikeuksiinsa esimerkiksi näytettäessä tietokannasta haettuja rivejä. Seuraava toistorakenne näyttää kaikki HTML-taulukossa kaikki rivit ja luo automaattisesti oikean määrän sarakkeita: ... sivun alku... {section name=rivinro loop=$data} {section name=sarakenro loop=$data[rivinro]} {$data[$rivinro][$sarakenro]} {/section} --- {/section} {/table} ... sivu jatkuu ... Tiedot siirretään PHP:sta seuraavasti: assign('data',$tiedot); $smarty->display('taulukko.tpl'); ?> ==Smartyn avulla rakennettuja www-sovelluksia ja -ympäristöjä== * last.fm * bBlog * Gallery * TikiWiki * XOOPS * ATK - Achievo ToolKit Virallinen Smarty-resurssisivu . == Aiheesta muualla == * Smartyn kotisivu - virallinen sivusto. * Lataa * Smarty-resurssiluettelo * Foorumi - muilla kielillä * Smarty-Wiki * PHP Templating with Smarty - Smarty-opas Luokka:Ohjelmointikielet