本帖最后由 subendong 于 2010-04-19 20:29:30 编辑

解决方案 »

  1.   

    http://www.smarty.net/manual/en/template.resources.phpTemplates from other sources
    就是你的需求...没事就多看手册.
      

  2.   


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

  3.   

    <?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"));要加上去。