Smarty学习笔记(二)
1.引用
{include file="xxx.xxx" sitename="xxx"}
向引入的文件传入变量:
{include file="xxx.xxx" sitename="xxx"}
这时候可以在引入的文件中使用sitename这个变量,值为"xxx"
2.类与对象
用assign把类的对象以变量形式赋值到smarty模板中使用
php内
    class My_Object{
        function meth1($params){
            return $params[0].'已经'.$params[1];
        }
    }
    $myobj = new My_Object();
    $smarty->assign('myobj',$myobj);
tpl内
{$myobj->meth1(array('你','是别人的'))}
3.使用php函数
{<param1>|<php function name>:<param2>:<param3>:<param4>}
例如:
字符替换函数
str_replace('被替换的',"替换为",被替换的变量)
例如将变量title的值“title”替换为”titlh“,并且保持首字母大写,无字符时默认显示"notitle"
{'e'|str_replace:'h':$articletitle|default:'notitle'|capitalize}
4.向smarty中加入自定义函数
 function test($params){
        $p1 = $params['p1'];
        $p2 = $params['p2'];
        return 'p1='.$p1.',p2='.$p2;
    }
    $smarty->registerPlugin('function','f_test','test');
第一个参数为加入的函数类型(function、modifier、block),第二个为在smarty中的函数名,第三个为要添加的函数名
调用:
{f_test p1="test1" p2="test2"}
实质:调用的时候将参数=值封装成一个数组传入函数,在函数内解包
5.制作、使用插件:
①在plugins目录下新建文件,例如新建一个function插件,则命名为function.xxx.php,函数的命名规范为smarty_function_xxx
则可以通过{xxx param1=... param2=...}来调用(忽视smarty_function部分)
②modifier类型(变量调节器)与之不同的在于参数不是数组,而是有几个写几个
③block类型(区块插件)
block插件名称为smarty_block_xxx,则使用方法为<xxx>...</xxx>
参数是打包成数组传入
注意有两个参数,第二个参数为block的内容
例如设计一个插件将一段话中的前多少个字符显示,并且替换全角逗号为半角 。
block.test2.php
<?php
    function smarty_block_test2($params, $content){
        $replace = $params['replace'];
        $maxnum = $params['maxnum'];
        if($replace == 'true'){
            $content = str_replace(',',',',$content);
            $content = str_replace(',',',',$content);
        }
        $content = substr($content,0,$maxnum);
        return $content;
    }
?>
xxx.tpl
{test2 replace='true' maxnum = 100}
,,,,,,,,,
{/test2}
输出结果 会全部替换为半角句号
Smarty学习笔记(二)的更多相关文章
- WPF的Binding学习笔记(二)
		原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ... 
- AJax 学习笔记二(onreadystatechange的作用)
		AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ... 
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
		源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ... 
- JMX学习笔记(二)-Notification
		Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ... 
- java之jvm学习笔记二(类装载器的体系结构)
		java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ... 
- Java IO学习笔记二
		Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ... 
- 《SQL必知必会》学习笔记二)
		<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ... 
- NumPy学习笔记 二
		NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ... 
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
		中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ... 
- Redis学习笔记二 (BitMap算法分析与BitCount语法)
		Redis学习笔记二 一.BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身.我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省 ... 
随机推荐
- iOS开源加密相册Agony的实现(六)
			简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ... 
- [boost] Windows下编译
			编译命令 32位 编译 bjam variant=release link=static threading=multi runtime-link=static -a -q bjam variant= ... 
- Leetcode解题-链表(2.2.1)AddTwoNumbers
			1 题目:2.2.1 Add Two Numbers You are given two linked lists representing two non-negative numbers. The ... 
- Linux 高性能服务器编程——socket选项
			socket选项函数 功能:用来读取和设置socket文件描述符属性的方法 函数: #include <sys/scoket.h> int getsockopt ( int sockfd, ... 
- CRM 2013 Script Loading Deep Dive
			关于CRM中脚本的加载次序梳理的很不错,可以看看 https://community.dynamics.com/crm/b/develop1/archive/2013/11/02/crm-2013-s ... 
- SQL语句常见问题的总结(持续更新)
			语言问题 修改语言注册表\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432\ORACLE\KEY_DevSuitHome1中的NLS_LANG修改为AMERICAN_AMERIC ... 
- Android更新UI的几种方法
			在Android开发过程中,常需要更新界面的UI.比如网络请求操作.一些耗时操作都不能放在UI线程中运行的,需要放在子线程,而子线程又不能更新UI界面,这是我们需要引入一个Handler,消息处理机制 ... 
- ArrayList、HashMap、HashSet源码总结
			ArrayList: 1. ArrayList是List接口的大小可变数组的实现,此实现是不同步的. 2. ArrayList内部使用类型为Object[]的数组存储元素. 3. ArrayList默 ... 
- java原码、补码、反码总结
			1.1. java虚拟机整数 在java虚拟机中整数有byte.short.int.long四种 分别表示 8位.16位.32位.64位有符号整数.整数使用补码表示. 所以我们先了解一下原码和反码. ... 
- android程序崩溃后重启
			有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问 ... 
