Za postavku smarty-ja potrebno je isti prvo skinuti sa neta
http://www.smarty.net/download.php.
Zatim smarty prebaciti u root sajta i modifikovati dve linije.
file: smarty/Smarty.calss.php
Code:
/**
* The name of the directory where templates are located.
*
* @var string
*/
var $template_dir = './cache/smarty/templates';
/**
* The directory where compiled templates are located.
*
* @var string
*/
var $compile_dir = './cache/smarty/templates_c';
Linije se kod mene nalaze na 82 i 75 liniji.
Posto smo postavili smarty potrebno je kreirati foldere u kojima ce se nalaziti smarty fajlovi (kao sto je navedeno u kodu iznad).
Kreirati sledecu strukturu na rootu sajta.
-cache
--smarty
---templates
---templates_c
U koliko koristite LINUX potrebno je postaviti na templates_c "chmod 777 ./cache/smarty/templates_c"
U ovom trenutku smarty je postavljen. Sada sledi prebacivanje koda u smarty.
Folder pages trenutno postaje nepotreban buduci da ce se sve stranice nalaziti u folderu ./cache/smarty/templates
Skripte contact.php i gallery.php mozemo ukloniti.
Skriptu index.php cemo promeniti da odgovara novom sistemu.
file: index.php
Code:
<?php
/**
* @desc Here we will include everything we need for any page. Attention to SEO (search engine optimization)
* will be established latter when we move page display into data base. NOTE: Short tags are not used on purpose.
*/
// Including all the classes we need to display a page. Instead of including this classes one by one each time
// we could also use _autoload method which php provides
include "./base/class.urlhandler.php";
include "./base/class.db.php";
include "./base/class.session.php";
include "./smarty/Smarty.class.php";
// Creating instance of urlHandler which we will use later.
$url = new urlHandler();
// Creating instance of db (connection to data base)
if(!$db = new DB("localhost", "root", "", "elitesecurity")){ echo "Could not connect to database!";exit(1);}
// Creating instance of session and starting up the session (note: session must start before any display happens.
// Be sure that you dont have enter (\n) as startup char. This can create errors.)
$session = new Session();
$session->startSession();
$page = $url->getValue("page"); // Getting the page we want to display
if(!$page) $page = "index"; // Setting up startup page
// Here we should add a checkup if page does not exist.
// Creating menu. Later we will retrieve menu options from data base. There fore this is useful to
// be done here.
$menu = array(
"0" => array("href" => "index.php", "name" => "Home"),
"1" => array("href" => "index.php?page=gallery", "name" => "Gallery"),
"2" => array("href" => "index.php?page=contact", "name" => "Contact"),
);
$smarty = new Smarty();
// Assigning variables that will be used in certain pages. This should be called dynamically so
// that it is not executed each time index.php loads.
$haspictures = false;
// Executing query
$pictures = $db->getrows("SELECT * FROM pictures");
// did we got something back?
if($pictures) $haspictures = true;
// We did. Ooo looky looky we have some photos :) Lets display them.
if($haspictures){
foreach($pictures as $key => $value){
$pictures[$key]['src'] = "./uploads/pictures/{$pictures[$key]['picture_name']}";
$pictures[$key]['alt'] = $pictures[$key]['picture_name'];
$pictures[$key]['title'] = $pictures[$key]['picture_name'];
}
}
$smarty->assign("pictures", $pictures);
$smarty->assign("haspictures", $haspictures);
$smarty->assign("menu", $menu); // Menu array
$smarty->assign("title", "$page"); // page title
$smarty->display("header.tpl"); // Executing header
$smarty->display("menu.tpl"); // Executing menu
$smarty->display("$page.tpl"); // Executing desired page
$smarty->display("footer.tpl"); // Executing footer.
?>
zatim cemo kreirati nove templejt fajlove.
file: ./cache/smarty/templates/header.tpl
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="sr">
<meta name="author" content="elitesecurity">
<!-- <meta http-equiv="Reply-to" content="@.com"> -->
<meta name="generator" content="Elitesecurity CMS <boris vujicic>">
<meta name="description" content="Home page, test page for basic CMS">
<meta name="keywords" content="">
<meta name="creation-date" content="09/20/2007">
<meta name="revisit-after" content="15 days">
<title>{$title}</title>
<link rel="stylesheet" type="text/css" href="./css/global.css">
<link rel="stylesheet" type="text/css" href="./css/menu.css">
<link rel="stylesheet" type="text/css" href="./css/content.css">
</head>
<body>
file: ./cache/smarty/templates/footer.tpl
Code:
</body>
</html>
file: ./cache/smarty/templates/menu.tpl
Code:
<div id="menu">
{section name=i loop=$menu}
<div id="menu_option"><a href="{$menu[i].href}">{$menu[i].name}</a></div>
{/section}
</div>
<br/><br/>
file: ./cache/smarty/templates/index.tpl
Code:
<div id="content">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum pellentesque sem. Praesent purus dui, cursus eu gravida sit amet, elementum eu justo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse sed ante at tellus pulvinar elementum sit amet vel ante. Nulla in arcu sit amet lacus placerat pulvinar consectetur non justo. Donec risus erat, sagittis at aliquet eget, faucibus sit amet ante. Morbi ultrices purus et nunc sagittis ultrices. Vivamus auctor facilisis volutpat. Fusce vel diam massa. Vestibulum fringilla pretium rutrum. Ut eros velit, dignissim sit amet sollicitudin nec, eleifend malesuada tellus. Ut in laoreet velit. Nulla lobortis tincidunt velit, ac congue dui ullamcorper ut. Aliquam commodo urna non sapien ornare nec placerat lacus eleifend. Quisque ut velit lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p><p>
Nulla eget turpis a tellus porttitor ultricies. Vestibulum ut ultricies justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum urna dui, sollicitudin eu consectetur nec, posuere sit amet eros. Donec in erat ut elit euismod elementum. Pellentesque vel arcu odio. Aliquam fermentum cursus erat ac egestas. Sed vel malesuada nunc. In volutpat, sem nec dictum suscipit, tortor magna volutpat sem, nec dictum diam metus vel diam. Vestibulum fringilla nulla vitae leo euismod nec commodo libero ullamcorper. Nulla facilisi. Curabitur tempus urna at felis iaculis elementum. Praesent a metus nulla. Duis consectetur, neque ut varius venenatis, diam justo tristique nisi, et ultrices turpis lorem a ante. Quisque sit amet magna leo. Etiam vel mi diam, quis ullamcorper diam. Vestibulum vitae nisl odio.
</p><p>
Maecenas tellus ante, rhoncus dictum ullamcorper nec, accumsan vitae diam. Etiam vitae enim metus, id luctus eros. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse fermentum diam a est dictum sit amet commodo sapien venenatis. Duis dignissim bibendum elit, sit amet sodales est fermentum id. Aliquam scelerisque dignissim elit, sed aliquet ligula cursus vitae. Mauris lectus nulla, porttitor interdum placerat quis, lacinia ut nisl. Quisque porta consectetur velit at ornare. Etiam in enim ut sem mattis porta. Donec ac purus magna. Morbi tellus felis, convallis at placerat vitae, facilisis in nunc. In ipsum tortor, hendrerit a interdum non, facilisis mattis felis.
</p><p>
Donec viverra mollis nibh id convallis. In lobortis, sapien elementum pulvinar tempus, lacus nibh semper massa, congue pharetra mauris ligula quis mi. Phasellus placerat euismod sagittis. Nullam ornare, massa eleifend iaculis aliquet, lacus urna vestibulum enim, a scelerisque nisi nisl nec elit. Duis dolor nibh, volutpat eget adipiscing sed, aliquam eget sapien. Etiam in pretium purus. Morbi odio leo, lobortis et rutrum tincidunt, pharetra eget mauris. Donec lobortis turpis vel elit elementum rhoncus. Phasellus vitae arcu dolor. Aenean eget lacus nibh, eu rutrum ipsum. Pellentesque mollis leo condimentum dui commodo iaculis. Quisque rutrum lorem nec nibh mattis malesuada. In hac habitasse platea dictumst. Duis nec purus purus. Suspendisse fermentum porta nibh, quis vulputate magna pellentesque vitae. Curabitur eu tortor eu quam tincidunt egestas ac sit amet mauris.
</p><p>
Maecenas tempus nibh eget augue fringilla at egestas enim ultrices. In a velit gravida mi sodales vehicula. In vestibulum elementum velit sit amet luctus. Vestibulum et auctor ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec et lectus eget sapien porttitor porttitor pretium sit amet ligula. Sed et erat in quam bibendum aliquet. Integer porttitor pellentesque nulla, quis vestibulum lectus ultricies sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras ut augue augue. In eget accumsan leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quis diam velit, non ultrices quam. Curabitur vitae urna nec lorem adipiscing tincidunt id id velit. Aliquam blandit ornare metus, sed adipiscing diam feugiat vitae. Mauris hendrerit hendrerit turpis, id feugiat mi interdum nec.
</p>
</div>
file: ./cache/smarty/templates/gallery.tpl
Code:
<div id="content">
{if $haspictures}
{section name=i loop=$pictures}
<div id="img"> <img src="{$pictures[i].src}" alt="{$pictures[i].alt}" title="{$pictures[i].title}"></div>
{/section}
{else}
<p> Currently there are no pictures. </p>
{/if}
</div>
file: ./cache/smarty/templates/contact.tpl
Code:
<div id="content">
<form action="contact.php" method="post">
Email: <input type="text" name="email" id="email" /><br/><br/>
Message: <br/>
<textarea cols="50" rows="5" name="msg"></textarea><br/><br/>
<input type="submit" value="Ask us?" />
</form>
</div>
U ovom momentu struktura sajta treba da izgleda ovako
+base
-cache
--smarty
---templates
----contact.tpl
----footer.tpl
----gallery.tpl
----header.tpl
----index.tpl
----menu.tpl
---templates_c
+cms
+css
+smarty
+uploads
index.php
---------------------------------------------------------------------
Just do it.