More Uses For Smarty Templates

More Uses For Smarty Templates

Web pages and email templates aren’t the only place to use Smarty templates. Here are a few more ideas for where they can be used. I haven’t included code here as the general algorithm will be similar to the email example on the previous page.

Creating XML and/or RSS Feeds
You could create a template to output XML. I used this on a web site where I had made a custom XML schema. After all, HTML is really just a form of XML anyway.

In the email example, we sent the output through the mail() function. In this case, you could just use Smarty’s display() method if you’re just outputting the XML directly. Just remember, you’ll need to send a content-type header first.

Listing 4 listing-4.php
<?php
    // … other code
    header(’Content-type: text/xml’);
    $smarty->display(’my-xml-template.tpl’);
?>

Building Data Storage Files Such As CSV
Comma Separated Values files are commonly used to easily transport data between applications. For example, let’s say you want to import a list of your web site users into Excel, or to send them to an advertiser. You could use a template such as this:

Listing 5 listing-5.tpl
User ID,First Name,Last Name,Email
{foreach from=$users item=row}
{$row.user_id},”{$row.first_name}”,”{$row.last_name}”,”{$row.email}”
{/foreach}

This is fairly straightforward to put straight into your code, but if your web site already uses Smarty, why not put it to use. Using a template like this, the format is really easy to control without having to hack at your PHP files.

Auto-Generated SQL Schemas
In a web application I wrote several years, the site was designed so for each client that was added to the database, a separate set of tables was created (this may or may not have been the best design, but that’s beside the point). To uniquely distinguish each set of tables, the client’s ID was stored in the table name.

To create this custom set of tables, the schema was stored in a Smarty template. Then when a client was added, the template would be run through Smarty, and the generated schema was executed by PostgreSQL.

Listing 6 listing-6.tpl
create table user_{$user_id}_sometable (
    /* sql column definitions */
);

PHP Code Templates
Code generators are a good tool to create source code files or classes that need to be created fairly often. A previous article that I wrote for PhpRiot was about managing your data with DatabaseObject. It wasn’t included with the article, but I have previously written a code generating tool to create child DatabaseObject classes.

The actual code is stored in a Smarty template, and the tool simply outputs PHP code which I wrote to PHP file.

A snippet of this template looks like this:

Listing 7 listing-7.tpl
<?php
    require_once(’DatabaseObject.class.php’);
 
    class {$class} extends DatabaseObject
    {ldelim}
        function {$class}(&$site)
        {ldelim}
            parent::DatabaseObject($site, ‘{$table}’, ‘{$primaryKey}’);
            $this->defineProperties(
‘{$fields|@join:’,'}’);
        {rdelim}
    {rdelim}
?>

 

 

Leave a Reply


All material @ copyrighted by chrisranjana.com. If you want to link to this article you are welcome to do so. Unauthorized publication is strictly prohibited. This developer tutorial website contains articles by Php programmers , Software developers, Mysql programmers and asp c# programmers. This website also contains ajax tutorials and advanced mysql sql stored procedures and functions tutorials and sample codes.