ThinkPHP分组下自定义标签库实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-21 10:10:50 浏览: 评论:0
这篇文章主要介绍了ThinkPHP分组下自定义标签库的方法,以实例形式讲述了自定义标签库的具体步骤,非常具有参考借鉴价值,需要的朋友可以参考下
本文实例讲述了ThinkPHP分组下自定义标签库的实现方法。分享给大家供大家参考。具体如下:
自定义标签库应该位于ThinkPHP\\Extend\\Driver\\TagLib目录下
1 新建标签类库文件名为TagLibBlog.class.php。
2 编辑刚才新建的类库文件,新建一个类,继承TagLib父类,代码如下:
- import('TagLib');
- class TagLibBlog extends TagLib {
- }
3 在类中声明一个protected成员变量$tags,代码如下:
- class TagLibBlog extends TagLib {
- protected $tags =array(
- 'mynav'=>array('attr'=>'limit,order','close'=>1)
- /* www.phpfensi.com
- 这里$tags数组内,每个单元也就是每一行代表一个标签,例如{dede:article},我们这里也定义了一个mynav,
- 然后每一行标签的键名就是标签名,键值是一个数组,该数组包含两个单元,第一个就是attr,就是标签中得属性,以逗号分隔,
- 如num,typeid等等,close的值如果是0的话就是非闭合标签,1的话就是闭合,意思是要以</mynav>来结尾
- */
- );
- }
4 定义了标签后,我们需要实现标签的功能,这里直接在类文件下声明一个函数,以_开头,以标签名 mynav结尾的函数名,代码如下:
- public function _mynav($attr,$content){
- $attr=$this->parseXmlAttr($attr);
- import('@.Class.Tool');
- $categories=M('category')->limit($attr['limit'])->order($attr['order'])->select();
- $categories=Tool::formatMultiArray($categories);
- $str='';
- for($i=0;$i<count($categories);$i++){
- $model=array(
- '/[field.id]/',
- '/[field.name]/'
- );
- $replace=array(
- $categories[$i]['id'],
- $categories[$i]['name']
- );
- $str.=preg_replace($model,$replace,$content);
- }
- return $str;
- }
定义好标签后,需要在项目公用配置文件中加载标签库
config.php 代码如下:
- //加载标签库
- 'APP_AUTOLOAD_PATH'=>'@.TagLib',
- 'TAGLIB_BUILD_IN'=>'Cx,Blog',
- 标签库完整源码如下:
- <?php
- import('TagLib');
- class TagLibBlog extends TagLib {
- protected $tags=array(
- 'mynav'=>array('attr'=>'limit,order','close'=>1)
- );
- public function _mynav($attr,$content){
- $attr=$this->parseXmlAttr($attr);
- import('@.Class.Tool');
- $categories=M('category')->limit($attr['limit'])->order($attr['order'])->select();
- $categories=Tool::formatMultiArray($categories);
- $str='';
- for($i=0;$i<count($categories);$i++){
- $model=array(
- '/[field.id]/',
- '/[field.name]/'
- );
- $replace=array(
- $categories[$i]['id'],
- $categories[$i]['name']
- );
- $str.=preg_replace($model,$replace,$content);
- }
- return $str;
- }
- }
- ?>
模板中测试:
- <mynav limit="0,10" order="sort asc">
- <a href="[field.id]">[field.name]</a><br/>
- </mynav>
希望本文所述对大家的ThinkPHP框架程序设计有所帮助。
Tags: ThinkPHP自定义标签库
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)