如何分配函数?
$tpl->register_function('模版当中使用的名称','在当前文件当中的函数名');
如何在模版当中使用函数?
<{ 函数名 参数='值' 参数='值' 参数='值'}>
在我们自己写的自定义函数当中,所有的参数全部放到一个形参当中.
参数全部放到形参$args当中
Function demo($args){
}
Smarty为我们准备好的一些内建函数:
config_load
第一步,在configs目录当中写一个配置文件,写配置文件的时候,对于里面的文字这些玩意儿都不要加引号
第二步,在模版当中使用配置文件,第一步config_load载入配置文件
第三步,使用<{#配置文件名#}>
注意:不要写成这个样子<{# joke#}>
Include这个内函数数:
1,如果header.tpl当中已经存在<body>这样的标签,你就别再写body这样的标签了
2,定位包含文件的时候,要注意:在包含文件的时候,是以模版目录作为起启口来写包含文件的路径
3,你需要做的事情是对你display() 的页面负责,把包含的文件,也当成你dipslay文件当中的一个部份,不需要单独操作共用文件例如header.tpl和footer.tpl
Include_php 很少使用,或者基本不用
基本语法当中的注释:
<{* 中间写内容 * }> smarty中的注释,这种注释,右键看不到内容
<!-- 注释的内容 --> 右键查看源代码可以看到内容
在smarty的函数当中:
1,<{table cols="10" rows="10"}>
2,块状函数
<{if}>
<{/if}>
Smarty双引号当中以直接插入变量:
可以把php文件当中分配的变量,直接放在模板的参数的双引号当中,当成变量来使用。
Smarty中反引号的使用:
在引号中,使用变量的关联数组的时候使用反引号,将关联数组给包起来。
声明变量调节器:
1,声明一个函数,函数当的第一个参数为传进来变量,第二个参数到第n个参数,为:后面的值,一一对应的关系
2,最后要记得返回一个数据
3,可以一次性使用多个变量调节器,多个变量调节器之间用|分格
系统保留变量:
$smarty.now 即为当前时间邮戳
$smarty.get.名称
$smarty.post.名称
$smarty.cookies.username
$smarty.session.id
$smarty.request.username
$smarty.server.REMOTE_ADDR
读取常量:
<{$smarty.const.DB_HOST}>
读取配置文件有两种用法:
<{#配置文件项#}>
<{$smarty.config.名字}>
显示当前模版的位置:
<{$smarty.template}>
capture
给它取个名字,将包着的内容不显示,通过
<{$smarty.capture.名字}>反复读取,反复调用
自定义块标签
与你的自定义函数基本上是一样的
1,自定义块函数,需要放两个参数。第一个为参数,第二个为块包起来的内容
2,在写的时候,加上一个isset()判断一下有没有内容,如果没有内容,则不处理
3,一定要用register_block去注册一次块
自定义smarty插件:
自定义函数插件:
1,function.名字.php
2,在里面写函数的时候用法为 smarty_function_函数名
3,在自定义函数的时候,不需要引用&$smarty,但是自己定义smarty函数插件的时候,需要传入两个参数,第一个参数为 形参,第二个参数&$smarty.
init.php
<?php
define('ROOT',str_replace('\\','/',dirname(__FILE__)).'/');
include 'libs/Smarty.class.php';
$tpl=new Smarty();
//模版目录
$tpl->template_dir=ROOT.'tpls/';
//编译后的文件目录
$tpl->compile_dir=ROOT.'tpls_c/';
//配置文件目录
$tpl->config_dir=ROOT.'configs/';
//开启缓存
$tpl->caching=0;
//缓存目录
$tpl->cache_dir=ROOT.'caches/';
//缓存有效期,如果写具体值,在注释里面标名计算方式和多长时间
$tpl->cache_lifetime=60*60;
//左右定界符
$tpl->left_delimiter='<{';
$tpl->right_delimiter='}>';
?>
include.php
<?php
include 'init.php';
$tpl->assign('title','this is title');
$tpl->assign('nav','nav.la');
$tpl->assign('content','content这样吧?');
$tpl->assign('footer','foott.la');
$tpl->display('admin/admin.tpl');
?>
admin/admin.tpl
<{include file="admin/header.tpl"}>
<{$content}><br />
<{include file="admin/footer.tpl"}>
admin/header.tpl
<html>
<head>
<title><{$title}></title>
</head>
<body>
<{$nav}><br />
footer.tpl
<{$footer}><br />
</body>
</html>
block.php
<?php
include 'init.php';
$tpl->register_block('myblock','demo');
function demo($args,$content){
var_dump($args);
if(isset($content)){
for($i=0;$i<$args['num'];$i++){
echo '<font color="'.$args['color'].'">'.$content.'</font><br />';
}
}
}
$tpl->display('home/block.tpl');
?>
block.tpl
<{myblock num=5 color="red"}>
this is php.xlxz.org
<{/myblock}>
<{table rows='5' cols=5}>
index.php
<?php
include 'init.php';
$tpl->register_function('hello','demo');
$tpl->register_function('table','myTable');
$tpl->register_function('print','test');
function test($args){
echo '<font color="'.$args['color'].'" size="'.$args['size'].'">'.$args['string'].'</font>';
}
function myTable($args){
echo '<table width="800" border="1">';
for($i=0;$i<$args['rows'];$i++){
if($i%2){
echo '<tr bgcolor="'.$args['twocolor'].'">';
}else{
echo '<tr bgcolor="'.$args['onecolor'].'">';
}
for($j=0;$j<$args['cols'];$j++){
echo '<td>'.($i*$args['cols']+$j).'</td>';
}
echo '</tr>';
}
echo '</table>';
}
function demo($args){
for($i=0;$i<$args['num'];$i++){
echo '<font color="'.$args['color'].'">'.$args['string'].'</font><br />';
}
}
$arr=array(
'ai'=>'haha',
'why'=>'this',
'tajiu'=>'nginx'
);
$tpl->assign('string',$arr);
$tpl->display('home/abc.tpl');
?>
home/abc.tpl
<html>
<body>
<{table cols="10" rows="10" twocolor="green" onecolor="pink"}>
<{print string='opds `$string.ai` ' color='green' size='7'}>
</body>
</html>
modifier.php
<?php
include 'init.php';
$tpl->register_modifier('upper','myUpper');
function myUpper($data,$a){
if($a){
return strtoupper($data);
}else{
return $data;
}
}
$tpl->register_modifier('concat','concat');
function concat($data,$string='',$string1=''){
$string=$string?$string:'';
$string1=$string1?$string1:'';
$data=$data.$string.$string1;
return $data;
}
$tpl->register_modifier('myDate','myDate');
function myDate($data,$string){
return date($string,$data);
}
$tpl->register_modifier('msubstr','msubstr');
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix='...')
{
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset).$suffix;
elseif(function_exists('iconv_substr')) {
return iconv_substr($str,$start,$length,$charset).$suffix;
}
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
$slice.=$suffix;
return $slice;
}
$tpl->assign('test','how old are you?');
$tpl->assign('nu','postgresql');
$tpl->assign('string','pppp');
$tpl->assign('cust_ids', array(1000,1001,1002,1003));
$tpl->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
Johnson','Carlie Brown'));
$tpl->assign('customer_id', 1001);
$tpl->display('home/upper.tpl');
?>
upper.tpl
<html>
<head>
</head>
<body>
<{$test|concat:'dongtian':'shui'|upper:true}>
<{$smarty.now|myDate:'Y-m-d H:i:s'}><br>
<{$nu|default:'dodo'}><br>
<{$string|msubstr:5:10}>
<{mailto address='php@xlxz.org' text='lianix' subject='email title'}>
<{html_image file="img/1.jpg"}>
<select name=customer_id>
<{html_options values=$cust_ids selected=$customer_id output=$cust_names}>
</select>
</body>
</html>
option.php
<?php
include 'init.php';
$array=array(
'bj'=>'bj',
'sh'=>'sh',
'tj'=>'tj',
'cq'=>'cq',
'sc'=>'sc',
);
$tpl->assign('option',$array);
$tpl->register_function('myoption','myOption');
function myOption($args){
echo '<select name="'.$args['name'].'">';
$i=0;
foreach($args['param'] as $key=>$value){
if($i==$args['selected']){
$selected='selected';
}else{
$selected='';
}
$i++;
echo '<option value="'.$key.'" '.$selected.'>'.$value.'</option>';
}
echo '</select>';
}
$tpl->display('home/op.html');
?>
home/op.html
<{myoption param="$option" name="area" selected=2}>