http://www.smarty.net/manual/en/template.resources.phpTemplates from other sources 就是你的需求...没事就多看手册.
<?php // put these function somewhere in your application function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) { // do database call here to fetch your template, // populating $tpl_source $sql = new SQL; $sql->query("select tpl_source from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_source = $sql->record['tpl_source']; return true; } else { return false; } }function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj) { // do database call here to populate $tpl_timestamp. $sql = new SQL; $sql->query("select tpl_timestamp from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_timestamp = $sql->record['tpl_timestamp']; return true; } else { return false; } }function db_get_secure($tpl_name, &$smarty_obj) { // assume all templates are secure return true; }function db_get_trusted($tpl_name, &$smarty_obj) { // not used for templates }// register the resource name "db" $smarty->register_resource("db", array("db_get_template", "db_get_timestamp", "db_get_secure", "db_get_trusted"));// using resource from php script $smarty->display("db:index.tpl"); ?>
<?php // put these function somewhere in your application function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj) { // do database call here to fetch your template, // populating $tpl_source $sql = new SQL; $sql->query("select tpl_source from my_table where tpl_name='$tpl_name'"); if ($sql->num_rows) { $tpl_source = $sql->record['tpl_source']; return true; } else { return false; } }// register the resource name "db" $smarty->register_resource("db", array("db_get_template"));// using resource from php script $smarty->display("db:index.tpl"); ?>疑问: 1、函数db_get_template()里面的形参&$tpl_source前面的&符号是什么意思?三个形参各代表什么意思?什么作用? 2、看看我说的意思对不? 我数据库里有个模板表,有一个模板的名字叫index.tpl,我直接这么用就可以了是吗?$smarty->display("db:index.tpl"); 当然前面db_get_template()函数还有$smarty->register_resource("db", array("db_get_template"));要加上去。
就是你的需求...没事就多看手册.
<?php
// put these function somewhere in your application
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
// do database call here to fetch your template,
// populating $tpl_source
$sql = new SQL;
$sql->query("select tpl_source
from my_table
where tpl_name='$tpl_name'");
if ($sql->num_rows) {
$tpl_source = $sql->record['tpl_source'];
return true;
} else {
return false;
}
}function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
{
// do database call here to populate $tpl_timestamp.
$sql = new SQL;
$sql->query("select tpl_timestamp
from my_table
where tpl_name='$tpl_name'");
if ($sql->num_rows) {
$tpl_timestamp = $sql->record['tpl_timestamp'];
return true;
} else {
return false;
}
}function db_get_secure($tpl_name, &$smarty_obj)
{
// assume all templates are secure
return true;
}function db_get_trusted($tpl_name, &$smarty_obj)
{
// not used for templates
}// register the resource name "db"
$smarty->register_resource("db", array("db_get_template",
"db_get_timestamp",
"db_get_secure",
"db_get_trusted"));// using resource from php script
$smarty->display("db:index.tpl");
?>
// put these function somewhere in your application
function db_get_template ($tpl_name, &$tpl_source, &$smarty_obj)
{
// do database call here to fetch your template,
// populating $tpl_source
$sql = new SQL;
$sql->query("select tpl_source
from my_table
where tpl_name='$tpl_name'");
if ($sql->num_rows) {
$tpl_source = $sql->record['tpl_source'];
return true;
} else {
return false;
}
}// register the resource name "db"
$smarty->register_resource("db", array("db_get_template"));// using resource from php script
$smarty->display("db:index.tpl");
?>疑问:
1、函数db_get_template()里面的形参&$tpl_source前面的&符号是什么意思?三个形参各代表什么意思?什么作用?
2、看看我说的意思对不?
我数据库里有个模板表,有一个模板的名字叫index.tpl,我直接这么用就可以了是吗?$smarty->display("db:index.tpl");
当然前面db_get_template()函数还有$smarty->register_resource("db", array("db_get_template"));要加上去。