查看: 8689|回复: 0

教大家写个smarty插件

[复制链接]
发表于 2009-10-10 16:29:18 | 显示全部楼层 |阅读模式
台州网址导航
Smarty很强大,今天我教大家写个smarty的插件吧!

写这个插件是因为我觉得Smarty的截取字符函数太菜了,不能截取UTF8的字符!所以我今天就是为了实现截取UTF8字符功能而写这个教程的!!开始了:

1.首先,下载Smarty。
http://www.smarty.net/ 下载一个稳定的版本。

2.安装Smarty。
其实Smarty是不用安装的,只要解压到你需要的地方就可以了!

3.了解插件目录。
解压之后,我会会发现有个plugins的文件夹,这个文件夹就是放置插件的目录。
好了,我们在这个文件夹中新建一个文件function.utf8cut.php,其中utf8cut这个就是函数名,用文本编辑器打开它,写入以下代码:
注意函数名的写法:要以“smarty_function_ ” 或者“smarty_modifier_”为前缀,前一种情况是PHP本身没有的函数,后一种是修改PHP本身有的函数!!
<?php

function smarty_function_utf8cut($string, $leng=100, $dot='...') {

if(!isset($string) || $string == '') {

  return '';

}

preg_match_all("/.{1}/", $string, $chars);

$c = '';

$all = array();

$timer = 0;

foreach($chars[0] as $char) {

  $timer++;

  if(ord($char) > 127) {

   $c .= $char;

   if($timer == 3) {

    $all[] = $c;

    $c = '';

    $timer = 0;

   }

  } else {

   $c = $char;

   $timer = 0;

   $all[] = $c;

   $c = '';

  }

}

if(sizeof($all) <= $leng) {

  return implode('', $all);

}

return implode('',array_slice($all, 0, $leng)).$dot;

}

?>


复制代码至于这个函数是怎么样截取utf8字符的,自己可以研究一下。Smarty插件函数都要返回一个值的。

好了,现在我们可以使用这个插件了:
index.tpl <html>

<head></head>

<body>

<h2>插件实现</h2>

<p>{$content|utf8cut:20}</p>

</body>

</html>


复制代码可以看见utf8cut就是我们刚才写的函数,冒号后面的是我们的第二个参数(为什么不是第一个,因为第一个是Smarty帮我们自动写入的,就是$content)。如此类推,第三个参数可以这样utf8cut:10:'......';

index.php
<?php

require_once 'smarty/smarty.class.php';

$smarty = new Smarty();

$smarty->assign('content','随意混用PHP 与其他Web 页面标记将导致程序逻辑、HTML、层叠样式表(Cascading Style Sheets,CSS)和JavaScript 处于混乱状态');

$smarty->display('index.tpl');

?>


复制代码输出: 插件实现

随意混用PHP 与其他Web 页面标记将...
复制代码好了,就写到这里了,其实关于Smarty的讨论,我就不说什么了,看过Smarty的代码,发现Smarty对每种情况的分析都很到位,比那些什么自称最好的模板引擎好不知道多少倍!!不过用不用就是你自己的事了!

相关帖子

台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表