自定义函数:<{方法名称}>

在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 自定义函数的更多相关文章

  1. Smarty自定义函数

    自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...

  2. 6月5 Smarty自定义函数

    自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...

  3. 五,Smarty模板技术/引擎——自定义函数机制

    自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...

  4. 四、smarty模板的自定义函数

    smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1.  变量调节器 2.  函数 3.  块函数 三个种类插件的用法: 1.  变量调解器的用法, <{$var|myfun:a ...

  5. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  6. Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  7. 5.Smart使用内置函数或者自定义函数

    1.使用内置函数 例如使用date函数 {"Y-m-d"|date:$time}格式{第一个参数|方法:第二个参数:第三个参数}即可转换成 2016-07-19  2.使用resi ...

  8. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

  9. Entity Framework 6 Recipes 2nd Edition(10-5)译 -> 在存储模型中使用自定义函数

    10-5. 在存储模型中使用自定义函数 问题 想在模型中使用自定义函数,而不是存储过程. 解决方案 假设我们数据库里有成员(members)和他们已经发送的信息(messages) 关系数据表,如Fi ...

随机推荐

  1. 怎样在WIN7系统下安装IIS和配置ASP(详细)

    一:Windows7系统 (IIS是WIN7自带的,版本7.0),首先是安装IIS.打开控制面板,找到“程序与功能”,点进去,点击左侧“打开或关闭Windows功能”,找到“Internet 信息服务 ...

  2. 【性能测试】【Jmeter】学习(1)

    2013/8/6开始阅读Jmeter文档 2013/8/7总结 监听器——CSV Data Set Config 在Jmeter中添加一个CSV配置原件 CSV配置原件添加方法:(右键点击某一个操作步 ...

  3. Java---多线程的加强(1)

    简单应用: 首先来看一个简单的例子: 两个线程,分别实现对1-100内的奇数,偶数的输出. 第一种方法:通过接口 MyRun类: package thread.hello; /** * 通过实现Run ...

  4. Mutex — Windows API

    Mutex是互斥体的意思,当一个线程持有一个Mutex时,其它线程申请持有同一个Mutex会被阻塞,因此可以通过Mutex来保证对某一资源的互斥访问(即同一时间最多只有一个线程访问).调用Create ...

  5. Java NIO 和 IO 的区别详解

    Java NIO为jdk1.4提供了新的API,本文主要来比较一下Java中NIO和IO的区别,Java初学者可以了解一下. 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分 ...

  6. Jenkins用户组管理

    Jenkins用户组管理 转载2015-06-10 21:44:24 标签:jenkinsrolestrategypluginusergroupcitools 一.安装插件 安装RoleStrateg ...

  7. Android 关于获取摄像头帧数据解码

    由于Android下摄像头预览数据只能  ImageFormat.NV21 格式的,所以解码时要经过一翻周折. Camera mCamera = Camera.open(); Camera.Param ...

  8. 【Hibernate步步为营】--继承映射具体解释

    上篇文章讨论了多对多映射,在使用多对多映射时重点是使用<many-to-many>标签,并在标签的两端加入外键这样在生成关系时会创建两个关系之间的关系表,通过关系表来维护它们之间的关系,另 ...

  9. 4G时代来临,运营商为谁搭台献唱?

        4G时代已然来临.对用户而言,4G意味着更快的传输速度,以及更优质的移动网络体验. 只是对运营商而言.怎样部署4G却成了一大难题.众所周知,在全球范围内,4G LTE成为眼下最率先的移动宽带解 ...

  10. (转)HTML特殊字符

    HTML 原始码 显示结果 描述 < < 小於号或显示标记 > > 大於号或显示标记 & & 可用於显示其它特殊字符 " " 引号 ® ® ...