Advertisement

Basic Installation

Install the Smarty library files which are in the
/libs/ sub directory of
the distribution. These are .php files that you
SHOULD NOT edit. They are shared among all applications and only get
changed when you upgrade to a new version of Smarty.

Smarty uses a PHP constant
named SMARTY_DIR which is the full system file path
to the Smarty libs/ directory.
Basically, if your application can find the
Smarty.class.php file, you do not need to set the
SMARTY_DIR
as Smarty will figure it out on its own.
Therefore, if
Smarty.class.php is not in your
include_path,
or you do not supply an absolute path to it in your application,
then you must define SMARTY_DIR manually.
SMARTY_DIRmust include a
trailing slash/.

It is highly recommended
that you setup a separate set of these directories for each application
that will use Smarty

For our installation example, we will be setting up the Smarty environment
for a guest book application. We picked an application only for the purpose
of a directory naming convention. You can use the same environment for any
application, just replace guestbook/ with
the name of your application.

Be sure that you know the location of your web server's document root as a
file path. In the following examples, the document root is /web/www.example.com/guestbook/htdocs/.
The Smarty
directories are only accessed by the Smarty library and never accessed
directly by the web browser. Therefore to avoid any security concerns, it
is recommended (but not mandatory) to place these directories
outside of the web server's document root.

You will need as least one file under your document root, and that is the
script accessed by the web browser. We will name our script
index.php, and place it in a subdirectory under the
document root /htdocs/.

Smarty will need write access
(windows users please ignore) to the
$compile_dir and
$cache_dir directories
(templates_c/ and
cache/), so be sure the web server
user account can write to them.

Note

This is usually user “nobody” and
group “nobody”. For OS X users,
the default is user “www” and group “www”.
If you are using Apache, you can look in your
httpd.conf file to see
what user and group are being used.

Note

chmod 770 will be fairly tight security, it only allows
user “nobody” and group “nobody” read/write access
to the directories. If you would like to open up read access to anyone
(mostly for your own convenience of viewing
these files), you can use 775 instead.

We need to create the index.tpl file that Smarty will
display. This needs to be located in the $template_dir.

Example 2.8. /web/www.example.com/guestbook/templates/index.tpl

{* Smarty *}
Hello {$name}, welcome to Smarty!

Technical Note

{* Smarty *} is a template
comment.
It is not required, but it is good
practice to start all your template files with this comment. It makes
the file easy to recognize regardless of the file extension. For
example, text editors could recognize the file and turn on special
syntax highlighting.

Now lets edit index.php. We'll create an instance of Smarty,
assign() a
template variable and display()
the index.tpl file.

Note

In our example, we are setting absolute paths to all of the Smarty
directories. If /web/www.example.com/guestbook/ is
within your PHP include_path, then these settings are not necessary.
However, it is more efficient and (from experience) less error-prone to
set them to absolute paths. This ensures that Smarty is getting files
from the directories you intended.

Now naviagate to the index.php file with the web browser.
You should see "Hello Ned, welcome to Smarty!"