注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

牧野流星

每个人心中都有一个梦想..........

 
 
 

日志

 
 

smarty自定义函数  

2013-09-02 17:28:34|  分类: Smarty |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近一段时间在用smarty,也遇到了不少问题,记录下来,希望对遇到同样问题的朋友有所帮助。

1、自定义smarty函数

在模板中使用从数据库中读取到的数据,有些数据还要进行再处理,比如分割、长度限制等。如何对这些数据进行处理,这是初用smarty的人最容易遇到的问题。

smarty有一些内置的函数可以直接使用,但我要实现的,smarty内置函数里没有,我要实现 的是取到标签,对标签进行分割再添加链接。

GOOGLE了一下,这个问题很简单,smarty目录下面,有个plugins文件夹,复制文件modifier.truncate.php,我是重命名为modifier.addurl.php,因为涉及到引用,这里重命名只是修改了中间的部分。修改函数为自己想要实现的功能,我的函数为smarty_modifier_addurl($tags,$preurl),第一个参数是标签,第二个是要添加上去的链接。

下面就是在模板里的使用了,如此使用:$tags|addurl:"/tag/",$tags是要处理的字符,即函数的第一个参数,“|”后面的addurl即是我新增的函数名,":"后面的"/tag/"是函数的第二个参数。这样就可以实现我所想要的功能了,其它的方法可以以此类推。

2、在模板里使用php内置的函数

php有很多内置的函数就可以实现我们想要的对数据的再处理功能,在这种情况下,最优的方法当然是直接使用,那怎么来使用呢?答案是直接使用。

我想要对一段字符进行URL编码,php正好有urlencode的内置函数,那我们可以这样来使用:$value|urlencode。这样就可以了,"|"符号前面的是要处理的字符串,"|"符号后面的就是urlencode这个函数了。

3、使用自定义的类或函数

这种情况其实也简单,但是却耗费了我不少的时间,google上搜索出来的方法我都用了,都提示出错,包括register_function和register_modifier。我很纳闷,为什么别人可以我却不行呢?最后还是在smarty官网上慢慢翻看那些英文文档,才发现问题,我用的是最新版的smarty,这些方法都已经没有了,所以如果朋友们遇到这种情况,先看下自己的版本号,再确定用哪种方法去实现。

在最新版里,要使用现有的类,只需要注册一下即可:$smarty->registerClass('pagebasic', 'basic'),即使用registerClass这个方法,第一个参数是在模板里要使用的名称,第二个是类名。在模板里使用时和在PHP文件里使用没什么区别,如pagebasic::groupurl(),groupurl是类的一个方法,括号里面可以传参数,这样就算完成了。

最后要说到的是自定义的函数,最新版的smarty使用registerPlugin来注册自定义的函数或块,用法也十分简单,因为我是将我所用到的方法都写在类里,所以还没有实验过registerPlugin这个方法,这里只简略提一下。

最后希望这篇记录能帮助到有需要的朋友们,总结下来的一点,看文档非常重要,基本上很多方法都在里面有记录,而且也都非常详细,尽管是英文的,慢慢看总比看那些全是转载全是重复的垃圾文章强。当然也说明一点,我们自己写程序时,也需要为自己的程序构建完善的文档,方便别人查看和使用了。

 

  评论这张
 
阅读(423)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018