GENERAL
-------
Q: What is Smarty?
A: Smarty is a template engine for PHP... but be aware this isn't just another
   PHP template engine. It's much more than that.
Q: What's the difference between Smarty and other template engines?
A: Most other template engines for PHP provide basic variable substitution and
   dynamic block functionality. Smarty takes a step further to be a "smart"
   template engine, adding features such as configuration files, template
   functions, variable modifiers (see the docs!) and making all of this
   functionality as easy as possible to use for both programmers and template
   designers. Smarty also compiles the templates into PHP scripts, eliminating
   the need to parse the templates on every invocation, making Smarty extremely
   scalable and managable for large application needs.
Q: What do you mean "Compiled PHP Scripts" ?
A: Smarty reads the template files and creates PHP scripts from them. Once
   these PHP scripts are created, Smarty executes these, never having to parse
   the template files again. If you change a template file, Smarty will
   recreate the PHP script for it. All this is done automatically by Smarty.
   Template designers never need to mess with the generated PHP scripts or even
   know of their existance. (NOTE: you can turn off this compile checking step
   in Smarty for increased performance.)
Q: Why can't I just use APC  (or Zend Cache)?
A: Smarty and these cache solutions have nothing in common. What APC does is
   caches compiled bytecode of your PHP scripts in shared memory or in a file.
   This speeds up server response and saves the compilation step. Smarty
   creates PHP scripts (which APC will cache nicely) and also has it's own
   internal caching mechanism for the output of the template contents. For
   example, if you have a template that requires several database queries,
   Smarty can cache this output, saving the need to call the database every
   time. APC cannot help you here. Smarty and APC (or Zend Cache) actually
   complement each other nicely. If performance is of the utmost importance, we
   would recommend using one of these with any PHP application, using Smarty or
   not.
Q: Is Smarty faster than ?
A: This would mostly depend on the other template engine, but as a
   general rule of thumb: Without a PHP caching solution like APC or
   Zend Cache, Smarty is most likely as fast, or possibly slower. With
   APC, Smarty is mostly like as fast or much faster. The reason is
   this: Smarty generates PHP scripts from your templates. The more
   templates your application has, the more PHP scripts Smarty
   generates. This in turn requires more time for the PHP parser to
   compile the PHP scripts. With APC, this compilation step is cached.
   So as the complexity of the templates increase, the performance
   savings go up accordingly. Also, most other template solutions parse
   the template files on each invocation. The more complex the
   templates are, the longer they take to parse them.
   
   The above comparison assumes that you are not using Smarty's
   built-in ability to cache templates. If you are, that makes this
   comparison pretty useless since Smarty will basically be displaying
   static content instead of generating templates, which of course will
   be magnitudes faster.
   
Q: Do you have a mailing list?
A: Yes. Subscribe by sending an e-mail to subscribe-smarty@lists.ispi.net. This
   is also archived at http://marc.theaimsgroup.com/ under www/smarty
TROUBLESHOOTING
---------------
Q: Smarty doesn't work.
A: You must be using PHP 4.0.4pl1 or later to fix all known problems
   Smarty has with PHP. Read the BUGS file for more info.
Q: I get the following error when running Smarty:
   Warning: Wrong parameter count for preg_replace() in
   Smarty.class.php on line 371
A: preg_replace had a parameter added in PHP 4.0.2 that Smarty
   requires. Upgrade to at least 4.0.4pl to fix all known PHP issues with
   Smarty.
Q: I get the following error when running Smarty:
   Fatal error: Failed opening required 'PEAR.php'
   (include_path='') in Config_File.class.php on line 3
A: Smarty uses the PEAR libraries for some of its error handling routines.
   PEAR libraries come with the distribution of PHP. Be sure that the path to
   these libraries is included in your php include_path. Unix users check
   /usr/local/lib/php. Windows users check C:/php/pear.
Q: I get this error when passing variables to {include}:
   Fatal error: Call to undefined function: get_defined_vars() in
   /path/to/Smarty/templates_c/index.tpl.php on line 8
A: get_defined_vars() was added to PHP 4.0.4. If you plan on passing
   variables to included templates, you will need PHP 4.0.4 or later.