smarty 自定义函数
自定义函数:<{方法名称}>
在lib/plugins中新建文件,命名方式是固定的:function.方法名称.php 或者
block.方法名称.php
1.<{literal}><{/literal}>
{literal}标签区域内的数据将按字面意思处理,代表性地是用在javascript/css语块周围,不然这些语言使用的花括号‘{’、‘}’会干扰模版定界符语法。{literal}{/literal}标签里面的所有符号不会被解释,全部按原样输出。
例如:在main.html代码中加入标签后:

运行结果:

2. {html_select_date}
自定义函数{html_select_date}用于创建日期下拉列表,它可以显示任意年月日。下述列表中没有说明的参数会在相应的年、月、日<select>标签中以名/值的键值对形式显示出来。
<div><{html_select_date}></div>
显示界面:

加入参数后:
<div><{html_select_date start_year='1990' end_year='2020' month_format='%m'}></div>
显示界面:

3.网上找的:颜色控件 function.color.php
(需要引入文件 jscolor.js)
<?php
/**
* 颜色控件
*
* @param $name 控件name
* @param $value 选中值
* <{color name='titlecolor' value='FF00FF'}>
*/
function smarty_function_color($args, $smarty) {
$name = $args['name'];
$value = !empty($args['value']) ? $args['value'] : '000000';
if(!defined('COLOR_INIT')) {
define('COLOR_INIT', 1);
$str= '<script src="../js/jscolor/jscolor.js"></script>';
}
$str .= '<input class="color" style="width:48px;height:16px;overfrom:hidden" name="'.$name.'" value="'.$value.'" />';
return $str;
}
在前端调用方法: <div><{color name='aa'}></div>
运行后:可任意选择

4.{block} 块: 编辑器(网上找的)
{block}{/block}成对出现
例如:
引入:block.textarea.php(还有ckeditor文件夹)
在前端调用方法:
//不加参数:
<{textarea}>
<{/textarea}>
运行后:

//加参数:
<{textarea name='text' toolbar='full' color='purple' height='200'}>
<{/textarea}>
运行后:

5. 练习自定义函数function:写方法将main.html 的类型改成显示具体内容
新建文件 function.typename.php
<?php //参数:1.$args数组,必须有
function smarty_function_typename($args)
{
//取传过来的code值
$code=$args["code"];
if($code==0)
{
return "判断题";
}
else if($code==1)
{
return "单选题";
}
else
{
return "多选题";
}
}
在前端调用方法: main.html <td><{typename code=$v[5]}></td>
运行后:

6. 练习自定义函数block: 定义块函数来改变删除修改的样式
新建文件 function.typename.php(需要四个参数)
<?php
//$args 是用户可以传入的参数 $a指函数是开始和结束
function smarty_block_fontstyle($args,$content,$smarty,$a)
{
$color=$args["color"];
$size=$args["size"]; //block函数会执行2次,在开始和结束标记时各执行一次
//为防止重复执行,需要进行判断
if(!$a)//如果是结束标记执行的
{
return "<span style='background-color:{$color};font-size:{$size}px'>{$content}</span>"; }
}
在前端调用方法: main.html
<!--定义块函数来改变删除修改的样式 -->
<td>
<{fontstyle color='yellow' size='30'}>
<a href="delete.php?code=<{$v[0]}>">删除</a>
<a href="update.php?code=<{$v[0]}>">修改</a>
<{/fontstyle}>
</td>
运行后:(中间操作时不小心删了一行数据)

7. 配置文件 :Config Files
在configs文件夹中新建文件,文件名以 .conf 结束 例如:test.conf
配置文件是通过内置函数{config_load}或API的configLoad()函数载入到模板的。
例子:在前端 main.html写一个div,利用配置文件改变它的样式:
<div>以下是题目列表</div>
在configs文件夹中新建文件 style.conf

在前端 main.html:
1.读取配置文件 :<{config_load file="style.conf"}>
2.引入变量用<{#变量名#}> :<div style="font-size:<{#size#}>px; color:<{#color#}>">以下是题目列表</div>
如果:在style.conf定义了相同的样式,用块来区分,定义方式为:[块名]

在前端 main.html:给config_load 第二个变量 section
<{config_load file="style.conf" section="one"}>
<div style="font-size:<{#size#}>px; color:<{#color#}>">以下是题目列表</div>

<{config_load file="style.conf" section="two"}>
<div style="font-size:<{#size#}>px; color:<{#color#}>">以下是题目列表</div>

smarty 自定义函数的更多相关文章
- Smarty自定义函数
自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...
- 6月5 Smarty自定义函数
自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...
- 五,Smarty模板技术/引擎——自定义函数机制
自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...
- 四、smarty模板的自定义函数
smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1. 变量调节器 2. 函数 3. 块函数 三个种类插件的用法: 1. 变量调解器的用法, <{$var|myfun:a ...
- 12月15日下午Smarty模板函数
1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...
- Smarty模板函数
1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...
- 5.Smart使用内置函数或者自定义函数
1.使用内置函数 例如使用date函数 {"Y-m-d"|date:$time}格式{第一个参数|方法:第二个参数:第三个参数}即可转换成 2016-07-19 2.使用resi ...
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数
10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...
随机推荐
- LED驅動芯片最大特點
最大特點是: 1.電源電壓在很寬的範圍內工作時,(約180V-265V)能保證 LED的恒功率輸出,並且 LED可實現無頻閃輸出. 2.實現安全隔離的安全電壓輸出,甚至是安全超低電壓輸出. 3.IC2 ...
- Linux&shell之结构化命令
写在前面:案例.常用.归类.解释说明.(By Jim)使用if-then语句如果命令的退出状态是0(成功执行命令),将执行then后面的所有命令.如果命令的退出状态是0以外的其他值,那么then后面的 ...
- BZOJ1976: [BeiJing2010组队]能量魔方 Cube
1976: [BeiJing2010组队]能量魔方 Cube Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 832 Solved: 281[Submi ...
- 解读sample1
说明 理解被测试代码 理解测试代码 TEST宏 EXPECT_*断言和ASSERT_*断言 检查数值比较结果的断言 检查布尔值的断言 说明 被测试代码文件 sample1.h.sample1.cc 测 ...
- UVAlive4287 Proving Equivalences(scc)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=10294 [思路] 强连通分量. 求出bcc后,缩点形成DAG,设D ...
- linux是一种修行
或许我当初开始学习linux是因为我在了解嵌入式的时候,查到的资料,说linux是最好的系统,那时可能自己太嫩了,自己就信了,直到最近这几天我才被ubuntu折腾的要死,就是一个环境变量,我折腾怀了我 ...
- C++ —— 非常量引用不能指向临时对象
目录 举例 分析 解决 1.举例 非常量引用 指向 临时对象 —— 即:将 临时对象 传递给 非常量引用类型. 如以下情况就会出现: 实现实数Rational类,实数可以使用+号相加,运算的结果要可以 ...
- javascript 如何避免属性访问错误
var book = {subtitle: "Bible"}; var bookName = book.name.length // 这时候会出错, 因为试图查询这个不存在的对象 ...
- Liferay 6.1开发学习
http://www.huqiwen.com/2013/01/10/liferay-6-1-development-study-17-springmvc-portlet/ http://www.blo ...
- 各个函数消耗的时间profiling和内存泄漏valgrind
来源:http://06110120wxc.blog.163.com/blog/static/37788161201333112445844/ ARM(hisi)上面的profiling和valgri ...