//Smarty允许有两种特殊的编译设置存在:
//1、 任何时候都不自动重新编译(上线阶段):只有没有该文件的编译文件时才生成,模板文件或者配置文件的更改,不会引发重新编译。
$smarty->setCompile_check(false);//默认为true,false表示任何时候都不在文件发生变更的情况下生成编译文件,除了无编译文件。
$smarty->getCompile_check();//获得当前编译检查的设置
//2、任何时候都重新编译(调试阶段):任何时候都重新编译。
$smarty->setForce_compile(true);//默认为false,true表示每次都重新编译(启用缓存的话,每次都重新缓存)
$smarty->getForce_compile();//获得当前强制编译的设置
//开启缓存
$smarty->setCaching(true);
$smarty->getCaching();//获取当前缓存状态,默认是false关闭的
$smarty->setcache_lifetime(60);//设置缓存时间单位秒
//{*模版文件*}
//{nocache}
//{$name}
//{/nocache}
//{*如果开启缓存的话放在nocache标签内的变量不会缓存,每次读取PHP源文件的值*}
/*
smarty分界符
在模板文件中,区分普通html代码和smarty代码靠的是分界符。默认是 {} ,但可能会与js和css相冲突。可以进行变更。
在3.0中模板标签将不支持空格,如{ $abc }在Smarty2中可以识别的,但是3.0里头就不行了,必须这样{$abc},这样是为了能够更好的支持javascript和css。
*/
$smarty->left_delimiter = "{"; //左分界符,2.0属性,3.0沿用
$smarty->right_delimiter = "}";
/*
分界符就相当于PHP的echo,分界符中的值都将输出,除非赋值等操作
smarty tpl文件中分界符中两个**之间的内容为注释内容如
tpl文件:
{*这是模板注释内容*}
*/
//设置缓存目录路径,不设默认"cache"
$smarty->setCacheDir("cache");
//获取缓存目录路径
$smarty->getCacheDir();
//设置配置目录路径,不设默认"configs"
$smarty->setConfigDir("configs");
//添加配置目录路径,所有路径将会以数组形式保存,调用文件时将在所有路径中查找
$smarty->addConfigDir("configs/test");
//获取配置目录路径的数组
$smarty->getConfigDir();
//设置插件目录路径,不设默认"plugins"
$smarty->setPluginsDir("plugins");
//添加插件目录路径,所有路径将会以数组形式保存,调用文件时将在所有路径中查找,plugins文件夹里放的就是可以在前台或后台按不同规则调用的函数的存储文件,文件名及函数名的命名按不同调用规则有不同写法要求
$smarty->addPluginsDir("plugins/test");
//获取插件目录路径的数组
$smarty->getPluginsDir();
//设置模板目录路径,不设默认"templates"
$smarty->setTemplateDir("templates");
//添加模板目录路径,所有路径将会以数组形式保存,调用文件时将在所有路径中查找
$smarty->addTemplateDir("templates/test");
//获取模板目录路径的数组
$smarty->getTemplateDir();
//设置编译目录路径,不设默认"templates_c"
$smarty->setCompileDir("templates_c");
//获取编译目录路径
$smarty->getCompileDir();
/*
我们可以建不同的php源文件文件夹,把编写的php文件按一定的分类放在不同的文件夹中。
然后在每个文件夹中都创建一个自定义的config文件,在config文件中创建一个新的$smarty = new Smarty 对象
然后把所有不同的文件夹的php文件的缓存,配置文件,插件,模版,编译目录都设置到同一个缓存,配置文件,插件,模版,编译目录
让该文件夹下所有PHP源文件都引用该配置文件即可获取相同配置
*/
//模版变量
$arr = array(array("zhang","li"),'a'=>array("liu","wang"),array("ming","yi"));
$smarty->assign("testArr", $arr);
//设置模版变量,为将要调用的模版提供变量,在接下来调用的模版中可以通过{$testArr}或者{$testArr['a'][0]}或者{$testArr.a.0}来访问具体某数组元素
//在模版中可以直接通过 {$testArr = "testValue" scope="global"} 来更改传过来的模板变量的值(如果不存在则在模板中创建并设置该模版变量),scope属性是标注模板变量使用范围的可不写
//在模版中更改或创建成其他数组 {$testArr = [1,2,3]}也可以{$testArr = [1,'a'=>2,2=>3]}也可以{$testArr[] = 4}或其他类似PHP中创建数组方式
//php源文件可通过 $smarty->getTemplateVars("testArr") 获取指定模版变量,如要获取模板中改变或创建的模版变量,在模板中创建或更改其值时必须加上scope属性并把值设置为scope="global"或scope="parent"