smarty 学习

 本人很久没接触PHP了,最近做一个网站 JSP空间太贵,最后还是选PHP来开发  基本上是用PHP+Smarty完成 底层自己写了DAO  在此记下Smarty 使用要点。我做的网站 http://www.zkhui.cn  折扣汇 

配置:

include_once($_SERVER['DOCUMENT_ROOT']."/lib/Smarty.class.php"); //包含smarty类文件
 include_once("config_lib.php");
$smarty = new Smarty(); //建立smarty实例对象$smarty

$smarty->config_dir="Smarty/Config_File.class.php";  // 目录变量

//$smarty->caching=false; //是否使用缓存,项目在调试期间,不建议启用缓存

$smarty->template_dir = $_SERVER['DOCUMENT_ROOT']."/templates"; //设置模板目录

$smarty->compile_dir = $_SERVER['DOCUMENT_ROOT']."/templates_c"; //设置编译目录

$smarty->cache_dir = $_SERVER['DOCUMENT_ROOT']."/smarty_cache"; //缓存文件夹
$smarty->caching = true;  //开启缓存,为flase的时侯缓存无效
//$smarty->cache_lifetime = 0;  //缓存时间
$smarty->cache_lifetime = 3600;  //缓存时间50*60分钟

//----------------------------------------------------

//左右边界符,默认为{},但实际应用当中容易与JavaScript相冲突

//----------------------------------------------------

$smarty->left_delimiter = "#{";

$smarty->right_delimiter = "}";

 $hbanner=Array('','');//头部菜单拦
生成首页:静态化 CODE:

$smarty->display("index.html");
/* $content = $smarty->fetch("index.html");//生成首页静态页面
echo $content;
$fp = fopen("./index.html", "w");
fwrite($fp, $content);
fclose($fp);*/
PHP字符串操作

{$articleTitle|truncate:30}
{$articleTitle|truncate:30:""}
{$articleTitle|truncate:30:"---"}
{$articleTitle|truncate:30:"":true}
{$articleTitle|truncate:30:"...":true}


FOR循环

    #{section name=np loop=$proList}

 #{$proList[np].price|regex_replace:"/([\d]+)([\.][0-9]*)/":"\$1<font size=2px>\$2</font>"}</span>

#{$proList[np].yprice}

      #{/section}


if else 语句


{if $name eq "Fred"}
        Welcome Sir.
{elseif $name eq "Wilma"}
        Welcome Ma'am.
{else}
        Welcome, whatever you are.
{/if}
{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}
        ...
{/if}

"eq", "ne","neq", "gt", "lt", "lte", "le", "gte" "ge","is even","is odd", "is not even","is not odd","not","mod","div by","even by","odd by","==","!=",">", "<","<=",">=" are all valid conditional qualifiers, and must be separated from surrounding elements by spaces.

Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、==、!=、>、<、<=、>=. 使用这些修饰词时必须和变量或常量用空格格开.

关于缓存,这点Smarty比Java的模板引擎要好用。

前面的配置我设置了缓存时间 $smarty->cache_lifetime = 3600;  //缓存时间50*60分钟

如果是列表页请看下网站 折扣汇 http://www.zkhui.cn/list-4-1.html

 $my_cache_id =  $tid."-".$order."-".$page."-".$keyword;

 $smarty->display("list.html",$my_cache_id);

清除缓存:则只需执行一句代码

$smarty->clear_all_cache();   //清除所有缓存 一般只行了删除,修改操作都要执行这句,可手动,也可自动:自动的话,就要追加 执行SQL语句之后。



你可能感兴趣的:(标签,smarty,缓存)