站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
ThinkPHP-扩展指南-标签库原理
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="border:1px solid #000; float:right; text-align:center; padding:6px;"><strong>导航:</strong>[[ThinkPHP-扩展指南|返回上一页]]</span> <div style="clear:both;"></div> 任何一个[[模板]]引擎的功能都不可能是为你量身定制的,具有一个良好的可扩展机制也是模板引擎的另外一个考量,[[Smarty]]采用的是插件方法来实现扩展ThinkTemplate由于采用了标签库技术,比Smarty提供了更为强大的定制功能,和[[Java]]的TagLibs一样可以支持自定义标签库和标签,每个[[XML]]标签都有独立的解析方法,所以可以根据标签库的定义规则来增加和修改标签解析规则。在ThinkTemplate中标签库的体现是采用XML命名空间的方式。 标签库由定义文件和解析类构成。每个标签库存在一个XML定义文件,用来定义标签库中的标签和属性。并且一个标签库文件对应一个标签库解析类,每个标签就是解析类中的一个方法。例如,CX标签库的定义文件是cx.xml 位于ThinkTemplate/Template/Tags/目录下面,而cx标签库解析类文件是位于ThinkTemplate/Template/TagLib/目录下面的TagLibCx.class.php文件,每个标签的解析方法就是TagLibCx类的一个方法,为了不和系统的关键字冲突,所以在方法名前加上了“_”前缀,因此,假如要定义Cx:Var 的标签解析,就需要定义一个 _var方法。 标签库解析类的作用其实就是把某个标签定义解析成为有效的模版文件(可以包括PHP语句或者HTML标签)。扩展标签库需要添加标签库定义XML文件和标签库解析类。 标签库定义XML文件的格式为: '''[[XML]]/[[HTML]]代码''' <pre> <?xml version="1.0" encoding="UTF-8"?> <taglib> <tag> <name>标签名称</name> <nested>是否允许嵌套</nested> <alias>标签别名</alias> <bodycontent>是否属于闭合标签</bodycontent> <attribute> <name>属性名称</name> <required>是否必须</required> </attribute> </tag> </taglib> </pre> 标签库的名称和文件名一致,每个tag标签对定义了标签库中的一个标签,每个tag节点的属性定义规范如下: *name:标签名称 *nested:是否允许标签嵌套(true或false) *alias:标签别名(多个逗号分隔) *bodycontent:是否为闭合标签(true或empty) *attribute:标签允许的属性 每个标签节点可以包含多个属性,也就是tag节点可以定义多个attribute节点,每个attribute属性支持两个属性:name和required,required(true或false)表示该属性是否为必须。 然后,我们看解析类的定义,每个标签的解析方法在定义的时候需要添加“_”前缀,可以传入两个参数,属性字符串和内容字符串(对于非闭合标签)。必须通过return 返回标签的字符串解析输出,在标签解析类中可以调用模板类的实例。下面是一个include解析方法的定义: '''[[PHP]]代码''' <pre> public function _include($attr,$content) { $tag = $this->parseXmlAttr($attr,'include'); $file = $tag['file']; return $this->tpl->parseInclude($file); } </pre> 在每个标签的解析方法中,首先需要调用 '''PHP代码''' <pre> $this->parseXmlAttr($attr,'include'); </pre> 表示分析某个标签的XML定义,返回include的所有标签属性。接下来就是根据具体的属性值来返回实际的解析内容了。 [[category:ThinkPHP]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)