What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Resource plugins are meant as a generic way of providing template sources or PHP script components to Smarty. Some examples of resources: databases, LDAP, shared memory, sockets, and so on.
There are a total of four functions that need to be registered for each type of resource. Every function will receive the requested resource as the first parameter and the Smarty object as the last parameter. The rest of parameters depend on the function.
bool smarty_resource_name_source( |
$rsrc_name, | |
&$source, | ||
&$smarty) ; |
string $rsrc_name
;string &$source
;object &$smarty
;bool smarty_resource_name_timestamp( |
$rsrc_name, | |
&$timestamp, | ||
&$smarty) ; |
string $rsrc_name
;int &$timestamp
;object &$smarty
;bool smarty_resource_name_secure( |
$rsrc_name, | |
&$smarty) ; |
string $rsrc_name
;object &$smarty
;bool smarty_resource_name_trusted( |
$rsrc_name, | |
&$smarty) ; |
string $rsrc_name
;object &$smarty
;
The first function, source()
is supposed to retrieve
the resource. Its second parameter $source
is a
variable passed by reference where the result should be
stored. The function is supposed to return TRUE
if
it was able to successfully retrieve the resource and FALSE
otherwise.
The second function, timestamp()
is supposed to
retrieve the last modification time of the requested resource, as a UNIX
timestamp. The second parameter $timestamp
is a variable passed by reference where the timestamp should be stored.
The function is supposed to return TRUE
if the timestamp could be
succesfully determined, or FALSE
otherwise.
The third function, secure()
is supposed to return
TRUE
or FALSE
, depending on whether the requested resource is secure
or not. This function is used only for template resources but
should still be defined.
The fourth function, trusted()
is supposed to return
TRUE
or FALSE
, depending on whether the requested resource
is trusted or not. This function is used for only for PHP script
components requested by
{include_php}
tag or
{insert}
tag with the src
attribute. However, it should still
be defined even for template resources.
Example 16.10. resource plugin
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: resource.db.php * Type: resource * Name: db * Purpose: Fetches templates from a database * ------------------------------------------------------------- */ function smarty_resource_db_source($tpl_name, &$tpl_source, &$smarty) { // do database call here to fetch your template, // populating $tpl_source with actual template contents $tpl_source = "This is the template text"; // return true on success, false to generate failure notification return true; } function smarty_resource_db_timestamp($tpl_name, &$tpl_timestamp, &$smarty) { // do database call here to populate $tpl_timestamp // with unix epoch time value of last template modification. // This is used to determine if recompile is necessary. $tpl_timestamp = time(); // this example will always recompile! // return true on success, false to generate failure notification return true; } function smarty_resource_db_secure($tpl_name, &$smarty) { // assume all templates are secure return true; } function smarty_resource_db_trusted($tpl_name, &$smarty) { // not used for templates } ?>
See also
register_resource()
,
unregister_resource()
.