使用数据库储存smarty模板文件

当你的开发需要多模板管理,用传统template_dir来配置你的模板文件显得力不从心

编写smarty自定义资源类型


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"));

在php脚本中使用它
$smarty->display("db:index.tpl");

{* using resource from within Smarty template *}
{include file="db:/extras/navigation.tpl"}
相关 $default_resource_type

//$smarty->default_resource_type = ‘db’;//for exp

This tells smarty what resource type to use implicitly. The default value is ‘file’, meaning that $smarty->display(‘index.tpl’); and $smarty->display(‘file:index.tpl’); are identical in meaning. See the resource chapter for details.

推荐javascript学习文章

http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html

 

深入理解JavaScript系列文章,包括了原创,翻译,转载,整理等各类型文章,如果对你有用,请推荐支持一把,给大叔写作的动力。

 

深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点

深入理解JavaScript系列(2):揭秘命名函数表达式

深入理解JavaScript系列(3):全面解析Module模式

深入理解JavaScript系列(4):立即调用的函数表达式

深入理解JavaScript系列(5):强大的原型和原型链

深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP

深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP

深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP

深入理解JavaScript系列(9):根本没有“JSON对象”这回事!

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)

深入理解JavaScript系列(11):执行上下文(Execution Contexts)

深入理解JavaScript系列(12):变量对象(Variable Object)

深入理解JavaScript系列(13):This? Yes, this!

深入理解JavaScript系列(14):作用域链(Scope Chain)

深入理解JavaScript系列(15):函数(Functions)

深入理解JavaScript系列(16):闭包(Closures)

深入理解JavaScript系列(17):面向对象编程之一般理论

深入理解JavaScript系列(18):面向对象编程之ECMAScript实现

深入理解JavaScript系列(19):求值策略

深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解

深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP

深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP

深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手

深入理解JavaScript系列(24):JavaScript与DOM(下

深入理解JavaScript系列(25):设计模式之单例模式

深入理解JavaScript系列(26):设计模式之构造函数模式

深入理解JavaScript系列(27):设计模式之建造者模式

深入理解JavaScript系列(28):设计模式之工厂模式

深入理解JavaScript系列(29):设计模式之装饰者模式

深入理解JavaScript系列(30):设计模式之外观模式

深入理解JavaScript系列(31):设计模式之代理模式

深入理解JavaScript系列(32):设计模式之观察者模式

深入理解JavaScript系列(33):设计模式之策略模式

深入理解JavaScript系列(34):设计模式之命令模式

深入理解JavaScript系列(35):设计模式之迭代器模式

深入理解JavaScript系列(36):设计模式之中介者模式

深入理解JavaScript系列(37):设计模式之享元模式

深入理解JavaScript系列(38):设计模式之职责链模式

深入理解JavaScript系列(39):设计模式之适配器模式

深入理解JavaScript系列(40):设计模式之组合模式

深入理解JavaScript系列(41):设计模式之模板方法

深入理解JavaScript系列(42):设计模式之原型模式

深入理解JavaScript系列(43):设计模式之状态模式

深入理解JavaScript系列(44):设计模式之桥接模式

深入理解JavaScript系列(45):代码复用模式(避免篇)

深入理解JavaScript系列(46):代码复用模式(推荐篇)

深入理解JavaScript系列(47):对象创建模式(上篇)

深入理解JavaScript系列(48):对象创建模式(下篇)

 

感谢:汤姆大叔的辛勤劳动