In Debian Etch:
Now you have a Smarty install. To use it, you'll need PHP code to drive Smarty. I'll include a sample bit of PHP code that I was working on with Mike A: <?php require("Smarty.class.php"); $smarty = new Smarty(); $dir = '/var/www-sites.d/malborn.pachogrande.com'; $smarty->template_dir = $dir . '/smarty/templates'; $smarty->compile_dir = $dir . '/smarty/templates_c'; $smarty->cache_dir = $dir . '/smarty/cache'; $smarty->config_dir =$dir . '/smarty/configs'; $content = implode('', file($dir . "/index.txt")); $head = implode('', file($dir . "/head.txt")); $footer = implode('', file($dir . "/footer.txt")); $navbar = implode('', file($dir . "/navbar.txt")); if(preg_match('/<title>(.*?)<\/title>/is', $head, $m)) { $title = $m[1]; } else { $title = "Default Title"; } $smarty->assign("title", $title); $smarty->assign("head", $head); $smarty->assign("footer", $footer); $smarty->assign("content", $content); $smarty->assign("navbar", $navbar); $smarty->display("default.tpl"); ?> Now, for Smarty to operate you need to supply some directories (i.e. template_dir, compile_dir, cache_dir, config_dir). compile_dir and cache_dir need to writeable by the web server user so in Debian something like: #!/bin/bash DIR=/var/www-sites.d/malborn.pachogrande.com mkdir $DIR/smarty mkdir $DIR/smarty/cache mkdir $DIR/smarty/configs mkdir $DIR/smarty/templates mkdir $DIR/smarty/templates_c sudo chown -r :www-data $DIR/smarty/cache sudo chown -r :www-data $DIR/smarty/templates_c Write default.tpl into $DIR/smarty/templates/default.tpl . For example, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> {$head} <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/> <link rel="stylesheet" type="text/css" href="default.css" media="screen"/> <title>{$title}</title> </head> <body> <div class="body"> <div class="title">{$title}</div> <div class="subnav"> <h1>Navigation</h1> {$navbar} </div> <div class="main"> {$content} </div> <div class="footer"> {$footer} </div> </div> </body> </html> Now, moving from here would be something like: 1. Writing code to check for a navbar.txt in the current direction. If not found, stuff navbar Smarty tag with "Back up a level" that moves up one subdirectory (i.e. go to /directory/index.html if you were are /directory/author.html, and go to /index.html when you were are /directory/index.html, etc.) 2. Could proceed by designing a number of templates in Smarty for the same basic content - i.e. skin-bluesteel.tpl and then providing a user interface to switch templates. 3. Perhaps eliminate filesystem reliance and put URL's into a database. Map /directory to /directory/index.html, similar with /. If not in database, display a generic 404 error. You can develop this script by calling it like /database-script-were-writing.php/directory/index.html and then looking into PATH_INFO from the server which will contain /directory/index.html . Once you have this perfected, you set up apache with something like "Alias / /var/www-sites.d/malborn.pachogrande.com/database-script-were-writing.php" and everything should pretty much just work. |
Howto >