// +---------------------------------------------------------------------- namespace com; use think\template\TagLib; /** * CX标签库解析类 * @category Think * @package Think * @subpackage Driver.Taglib * @author liu21st */ class Cps extends Taglib{ // 标签定义 protected $tags = array( // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次 'nav' => array('attr' => 'field,name', 'close' => 1), //获取导航 'list' => array('attr' => 'table,where,order,limit,id,sql,field,key','level'=>3),//列表 'doc' => array('attr' => 'model,field,limit,id,field,key','level'=>3), 'recom' => array('attr' => 'model'), 'link' => array('attr' => 'type,limit' , 'close' => 1),//友情链接 'prev' => array('attr' => 'id,cate' , 'close' => 1),//上一篇 'next' => array('attr' => 'id,cate' , 'close' => 1),//下一篇 ); public function tagnav($tag, $content){ $field = empty($tag['field']) ? 'true' : $tag['field']; $tree = empty($tag['tree'])? true : false; $parse = $parse = 'field('.$field.')->where("status=1")->order("sort")->select();'; if($tree){ $parse .= '$__NAV__ = list_to_tree($__NAV__, "id", "pid");'; } $parse .= 'foreach ($__NAV__ as $key => $'.$tag['name'].') {'; $parse .= '?>'; $parse .= $content; $parse .= ''; return $parse; } public function tagdoc($tag, $content){ $model = !empty($tag['model']) ? $tag['model']:''; $cid = !empty($tag['cid']) ? $tag['cid']:'0'; $field = empty($tag['field']) ? '*' : $tag['field']; $limit = empty($tag['limit']) ? 20 : $tag['limit']; $order = empty($tag['order']) ? 'id desc' : $tag['order']; //获得当前栏目的所有子栏目 $ids = get_category_child($cid); $ids = implode(',', $ids); $where = "category_id IN ({$ids})"; $where .= " and status >= 1"; $parse = $parse = 'where(\''.$where.'\')->field(\''.$field.'\')->limit(\''.$limit.'\')->order(\''.$order.'\')->select();'; $parse .= 'foreach ($__LIST__ as $key => $'.$tag['name'].') {'; $parse .= '?>'; $parse .= $content; $parse .= ''; return $parse; } public function taglist($tag, $content){ $name = !empty($tag['name']) ? $tag['name'] : ''; $map = !empty($tag['map']) ? $tag['map'] : ''; $field = empty($tag['field']) ? '*' : $tag['field']; $limit = empty($tag['limit']) ? 20 : $tag['limit']; $order = empty($tag['order']) ? 'id desc' : $tag['order']; $where[] = "status > 0"; if ($map) { $where[] = $map; } $map = implode(" and ", $where); $parse = $parse = 'where(\''.$map.'\')->field(\''.$field.'\')->limit(\''.$limit.'\')->order(\''.$order.'\')->select();'; $parse .= 'foreach ($__LIST__ as $key => $'.$tag['id'].') {'; $parse .= '?>'; $parse .= $content; $parse .= ''; return $parse; } public function tagrecom($tag, $content){ $field = empty($tag['field']) ? '*' : $tag['field']; $limit = empty($tag['limit']) ? 20 : $tag['limit']; $order = empty($tag['order']) ? 'id desc' : $tag['order']; $map = 'is_top = 1'; $parse = $parse = 'where(\'status=1\')->where(\''.$map.'\')->field(\''.$field.'\')->limit(\''.$limit.'\')->order(\''.$order.'\')->select();'; $parse .= 'foreach ($__LIST__ as $key => $'.$tag['id'].') {'; $parse .= '?>'; $parse .= $content; $parse .= ''; return $parse; } public function taglink($tag, $content){ $type = !empty($tag['type']) ? $tag['type'] : ''; $limit = !empty($tag['limit']) ? $tag['limit'] : ''; $field = empty($tag['field']) ? '*' : $tag['field']; $limit = empty($tag['limit']) ? 20 : $tag['limit']; $order = empty($tag['order']) ? "id desc" : $tag['order']; $where[] = "status > 0"; if ($type) { $where[] = "ftype = " . $type; } $map = implode(" and ", $where); $parse = $parse = 'where(\''.$map.'\')->field(\''.$field.'\')->limit(\''.$limit.'\')->order(\''.$order.'\')->select();'; $parse .= 'foreach ($__LIST__ as $key => $'.$tag['name'].') {'; $parse .= '?>'; $parse .= $content; $parse .= ''; return $parse; } public function tagprev($tag, $content){ $articleid = !empty($tag['articleid']) ? ($tag['articleid']) : ''; $chapterid = !empty($tag['chapterid']) ? $tag['chapterid'] : ''; $nodata = !empty($tag['nodata']) ? $tag['nodata'] : '';//没有数据的时候显示 $model = !empty($tag['model']) ? $tag['model'] : ''; $parse = 'where(\'status=1\')->where($map)->order(\'id desc\')->limit(\'0,1\')->find();if(!empty($prev)){ ?>'; $parse .= $content; if($nodata){ $parse .= ''; }else{ $parse .= ''; } return $parse; } public function tagnext($tag, $content){ $articleid = !empty($tag['articleid']) ? ($tag['articleid']) : ''; $chapterid = !empty($tag['chapterid']) ? $tag['chapterid'] : ''; $nodata = !empty($tag['nodata']) ? $tag['nodata'] : '';//没有数据的时候显示 $model = !empty($tag['model']) ? $tag['model'] : ''; $parse = '".' . $chapterid . ';'; }else{ $parse .= '$map = " id > ".' . $articleid . ';'; } $parse .= '$next = db(\''.$model.'\')->where(\'status=1\')->where($map)->order(\'id asc\')->limit(\'0,1\')->find();if(!empty($next)){ ?>'; $parse .= $content; if($nodata){ $parse .= ''; }else{ $parse .= ''; } return $parse; } }