// 预先加载的标签库 (目录放在 \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; } }