smarty自定义函数【register,block】以及自定义插件

这是smarty的两个比较常用的自定义函数的方法。

这里面设计了两个文件,一个是模板文件:testfunction.html

另外一个可以称之为控制器文件:functioncontroller.php


其中模板文件我是这样写的:

 <h1>测试function</h1>
  <{jjyfunction name="hello,my girl!" size="5"}>
  <h1>测试block</h1>
 <{jjyblock size="5"}>
   i an a boy
 <{/jjyblock}>

控制器文件我是这样写的:

 require_once('./smarty/Smarty.class.php');
   $smarty = new Smarty();
   $smarty->left_delimiter="<{";
   $smarty->right_delimiter="}>";

   function circleFunction($args)
   {
	   $str = "";
       for($i=0;$i<$args['size'];$i++)
	   {
	     $str .= "<h3>".$args['name']."</h3>"."<br/>";
	   }
	   return $str;
   }
   $smarty->registerPlugin("function","jjyfunction","circleFunction");


   function circleBlock($args,$content)
   {
	   $str = "";
       for($i=0;$i<$args['size'];$i++)
	   {
	     $str .= "<h3>".$content."</h3>"."<br/>";
	   }
	   return $str;
   }
   $smarty->registerPlugin("block","jjyblock","circleBlock");
   $smarty->display('testfunction.html');

?>

其中需要说明的一点,原来注册函数直接用register_function  和 register_block两个函数。

后来随着php的升级,把这类的函数直接合成了,直接用registerPlugin,后面加上三个参数。其中第一个参数生命是block,function,cache等。


下面说说怎么去自定义一个插件。我们写的函数比较多的话,一直去register显得比较麻烦,一般的处理方法,把比较常用的函数,封装起来写成插件的形式。插件有很多种,我们在这就学一种function,当然了他也是自定义函数的一种。

首先我们要明确插件的位置,需要把写的插件放到smarty模板种的plugins文件夹种,而且他的命名也是定死的。

比如我们自定义一个jijunyuan的插件:命名为function.jijunyuan.php的一个文件

下面看代码:

文件中的代码:

<?php
  function smarty_function_jijunyuan($params,&$smarty)
  {
      $str = "";
       for($i=0;$i<$params['size'];$i++)
	   {
	     $str .= "<h3>".$params['name']."</h3>"."<br/>";
	   }
	   return $str;
   }
?>

注意这个函数名字规范也是定死的:smarty_function_jijunyuan。注意后面这个jijunyuan必须和你规定的这个文件名的jijunyuan保持一致。

下面看看如何使用这个插件,看代码:

<{jjyfunction name="hello,my girl!" size="5"}>
使用起来和自定义的函数没什么两样。


ok,今天学到这。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值