thinkphp3.2扩展标签库

2146
// 预先加载的标签库 (目录放在 \Library\OT\TagLib):
'TAGLIB_PRE_LOAD'     =>    'OT\\TagLib\\Article,OT\\TagLib\\Think',
文件定义:
Think.class.php //文件名
namespace OT\TagLib; 
use Think\Template\TagLib;
class Think extends TagLib{
  
// 标签定义
protected $tags   =  array(
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
  'nav'       =>  array('attr' => 'field,name', 'close' => 1), //获取导航
  'query'     =>  array('attr'=>'sql,result','close'=>0),
  'cate'      =>  array('attr'=>'id,name,limit,pid,result','level'=>3),
 'article'   =>  array('attr'=>'id,name,cate,pid,pos,type,limit,where,order,field,result','level'=>3),
        );
/* 导航列表 */
    public function _nav($tag, $content){
        $field  = empty($tag['field']) ? 'true' : $tag['field'];
        $tree   =   empty($tag['tree'])? false : true;
        $parse  = $parse   = '<?php ';
        $parse .= '$__NAV__ = D(\'Channel\')->lists('.$field.');';
        if($tree){
            $parse .= '$__NAV__ = list_to_tree($__NAV__, "id", "pid", "_");';
        }
        $parse .= '?><volist name="__NAV__" id="'. $tag['name'] .'">';
        $parse .= $content;
        $parse .= '</volist>';
        return $parse;
    }
// sql查询
    public function _query($tag,$content) {
        $sql       =    $tag['sql'];
        $result    =    !empty($tag['result'])?$tag['result']:'result';
        $parseStr  =    '<?php $'.$result.' = M()->query("'.$sql.'");';
        $parseStr .=    'if($'.$result.'):?>'.$content;
        $parseStr .=    "<?php endif;?>";
        return $parseStr;
    }
}