Working 'Smarter' with Templates - Putting Smarty to Work - A Dynamic Template-driven Web Page
(Page 4 of 6 )
The concept of templates can be hard to grasp at first so sometimes it's best to just dig right into the code. Assume that you have a simple script that displays the IP address of the visitor. There are a couple of ways to display this information, but in this example we will use a template via Smarty. Let's take a look at this typical use for a Smarty template page. Note that this example requires that Smarty is installed on your server. This process does not require compiling – simply unzip the smarty files to a location of your choice.
// ShowIP.php
// Include the necessary Smarty files
include("/path/to/Smarty/libs/Smarty.class.php");
//Create the Smarty object
$smarty = new Smarty();
//Set the compile check to true
$smarty->compile_check = true;
//Choose your delimiter types
$smarty->left_delimiter = "{{";
$smarty->right_delimiter = "}}";
//Set your directories
$smarty->template_dir = "/path/to/Smarty/templates/";
$smarty->compile_dir = '/path/to/Smarty/templates_c/';
$smarty->config_dir = '/path/to/Smarty/configs/';
$smarty->cache_dir = '/path/to/Smarty/cache/';
// Assign a smarty variable with a value
$smarty->assign('VisitorIP', $_SERVER['REMOTE_ADDR']);
// Parse and display the template
$smarty->display("showiptemplate.htm");
?>
Note the total lack of HTML in the above example. This is a beautiful thing for creating sites that can be easily re-skinned. I know that this is a very basic example, but believe me when I say it scales wonderfully to the most complex of web pages with no trouble. The real trick with Smarty is resolving to never mix your code and HTML. You will be tempted to put “just a little” html in your php scripts at times, but in almost every case, you'll find yourself getting back in there later and ripping the code out. You'll only truly leverage the power of Smarty when you totally buy in to this separation principle.
Below is the template file that the script above would load and display:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Show IP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<a target="_Blank" class="linktext" href="http://{{$VisitorIP}}">Click Here to view server</a>
</body>
</html>
Next: Places Where Smarty Shines >>
More Search Optimization Articles
More By Bill Sterzenbach