首先,需要在
ThinkPHP\Lib\Think\Template\TagLib\目录下增加一个文件名叫:TagLibZpass.class.php
TagLibZpass.class.php:
<?php
/* Zpass自定义标签 design by zpass 16852868@qq.com,请别加QQ好友- -! */
class TagLibZpass extends TagLib{
// 标签定义
protected $tags = array(
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
'select'=>array('attr'=>'table,limit,order,where,field','level'=>3),
);
public function _select($attr,$content)
{
static $_iterateParseCache = array();
//如果已经解析过,则直接返回变量值
$cacheIterateId = md5($attr.$content);
if(isset($_iterateParseCache[$cacheIterateId]))
return $_iterateParseCache[$cacheIterateId];
$tag = $this->parseXmlAttr($attr,'table');
$db=M($tag['table']);
$list=$db->where($tag['where'])->order($tag['order'])->limit($tag['limit'])->field($tag['field'])->select();
preg_match_all("/\[field\:\w*\]/",$content,$match);
$match=$match[0];
$match=array_unique($match);//去掉数组重复项
foreach($match as $i=>$vo){
$field[$i]=substr($vo,7,count($vo)-2);
}
foreach($list as $i=>$value){
if($i==0){
$parseStr=$content;
}else{
$parseStr=$parseStr.$content;
}
foreach($match as $j=>$vo){
$parseStr=str_replace($vo,$value[$field[$j]],$parseStr);
}
}
$_iterateParseCache[$cacheIterateId] = $parseStr;
if(!empty($parseStr)) {
return $this->tpl->parse($parseStr);
}
return ;
}
}
?>
然后在视图上写上
<taglib name='zpass' />
调用的方法是
<zpass:select table="classes" order="sort desc" field="id,title" limit="3" >
<span class="marginleft_1"><a href='{:U("News/index?id=[field:id]")}'>[field:title]</a></span>
</zpass:select>
注意复制的话请view
plain在复制,手工复制的源代码不正确
这个很容易理解吧
我这个只是例子,代表可以自由扩展THINKPHP标签...做自己的特色标签
以上标签例子实际是查询classes表里的内容
分享到:
相关推荐
里面有thinkphp自定义标签的方法和使用文档
ThinkPHP2.1.0 自定义标签示例说明.chm ThinkPHP2.1.0 自定义标签示例说明.chm ThinkPHP2.1.0 自定义标签示例说明.chm
ThinkPHP2.1 自定义标签示例说明.chm
********** TP自定义模板pc标签(Pctag:pc) ************ 功能类似PHPcms的pc标签功能。模板标签主动的调用数据源,获取数据后再自行组织展示。支持取模板assign的赋值变量,支持$_GET,$_SERVER等
thinkphp 自定义分页类实现自己想要分页功能 跳页功能
ThinkPHP 2.1 自定义标签示例说明.pdf
主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下
主要介绍了thinkPHP自定义类实现方法,结合实例形式分析了thinkPHP自定义模型类的定义与使用技巧,需要的朋友可以参考下,通过引入类实现,把类放到ORG下。调用方便不管Api文件夹下有多少类,都会自动加载。
主要介绍了ThinkPHP分组下自定义标签库的方法,以实例形式讲述了自定义标签库的具体步骤,非常具有参考借鉴价值,需要的朋友可以参考下
Thinkphp3.2.3自定义添加数据表及表中字段。可在后台自主设置数据表名,添加拥有基础字段(id,createtime等)表,添加的表可自主在页面中添加、修改、删除字段。也可在页面中删除表
本文实例讲述了thinkPHP自定义类实现方法。分享给大家供大家参考,具体如下: 1.通过Model调用 <?php /** * 积分模型 api接口 */ class ApiModel{ private $url = '...
主要介绍了ThinkPHP中自定义错误页面和提示页面的方法,以一个完整的实例形式详细讲述了ThinkPHP实现自定义错误提示与跳转页面的方法,是非常常见的实用技巧,需要的朋友可以参考下
本文实例讲述了ThinkPHP自定义函数解决模板标签加减运算的方法。分享给大家供大家参考。具体如下: 实际项目中,我们经常需要标签变量加减运算的操作。但是,在ThinkPHP中,并不支持模板变量直接运算的操作。 幸运的...
thinkphp 分页功能 跳页功能 css样式 前台设置
本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...
本文详细讲述了thinkPHP2.1自定义标签库的导入方法。分享给大家供大家参考,具体如下: TP的手册似乎跟不上节奏, 对自定义标签只是寥寥几句, 摸索了N久, 终于将自定义的标签进行了导入. 心得如下: 1. 情况: 新建...
基于thinkphp3.2.3微信自定义导航条,只需要修改自己的参数就可以直接使用
主要介绍了thinkPHP5 tablib标签库自定义方法,结合具体实例形式分析了thinkPHP5标签库的定义、用法及相关注意事项,需要的朋友可以参考下