赞
踩
目录
- <?php
- /**
- * +----------------------------------------------------------------------
- * | 自定义标签
- * +----------------------------------------------------------------------
- * .::::.
- * .::::::::. | Author: xxx
- * ::::::::::: | EMAIL: XXXXXXXXXX@qq.com
- * ..:::::::::::' | EMAIL: XXXXXXXXXX
- * '::::::::::::' | WECHAT: xxx
- * .:::::::::: | DATETIME: 20XX/XX/XX
- * '::::::::::::::..
- * ..::::::::::::.
- * ``::::::::::::::::
- * ::::``:::::::::' .:::.
- * ::::' ':::::' .::::::::.
- * .::::' :::: .:::::::'::::.
- * .:::' ::::: .:::::::::' ':::::.
- * .::' :::::.:::::::::' ':::::.
- * .::' ::::::::::::::' ``::::.
- * ...::: ::::::::::::' ``::.
- * ```` ':. ':::::::::' ::::..
- * '.:::::' ':'````..
- * +----------------------------------------------------------------------
- */
- namespace app\common\taglib;
- use think\template\TagLib;
- class Tp extends TagLib {
-
- protected $tags = array(
- // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
- 'close' => ['attr' => 'time,format', 'close' => 0], //闭合标签,默认为不闭合
- 'open' => ['attr' => 'name,type', 'close' => 1],
- 'nav' => ['attr' => 'id,limit', 'close' => 1], //通用导航信息
- 'cate' => ['attr' => 'id,type','close' => 0], //通用栏目信息
- 'position' => ['attr' => 'name','close' => 1], //通用位置信息
- 'link' => ['attr' => 'name','close' => 1], //获取友情链接
- 'ad' => ['attr' => 'name,type','close' => 1], //获取广告信息
- 'debris' => ['attr' => 'name,type','close' => 0], //获取碎片信息
- 'list' => ['attr' => 'id,name,pagesize,where,limit,order','close' => 1], //通用列表
- 'search' => ['attr' => 'search,table,name,pagesize,where,order','close' => 1], //通用搜索
- 'prev' => ['attr' => 'len','close' => 0], //上一篇
- 'next' => ['attr' => 'len','close' => 0], //下一篇
-
- );
-
- //这是一个闭合标签的简单演示
- public function tagClose($tag)
- {
- $format = empty($tag['format']) ? 'Y-m-d H:i:s' : $tag['format'];
- $time = empty($tag['time']) ? time() : $tag['time'];
- $parse = '<?php ';
- $parse .= 'echo date("' . $format . '",' . $time . ');';
- $parse .= ' ?>';
- return $parse;
- }
-
- //这是一个非闭合标签的简单演示
- public function tagOpen($tag, $content)
- {
- $type = empty($tag['type']) ? 0 : 1; // 这个type目的是为了区分类型,一般来源是数据库
- $name = $tag['name']; // name是必填项,这里不做判断了
- $parse = '<?php ';
- $parse .= '$test_arr=[[1,3,5,7,9],[2,4,6,8,10]];'; // 这里是模拟数据
- $parse .= '$__LIST__ = $test_arr[' . $type . '];';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="' . $name . '"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //通用导航信息
- Public function tagNav($tag,$content){
- $tag['limit'] = isset($tag['limit']) ? $tag['limit'] : '0';
- $tag['id'] = isset($tag['id']) ? $tag['id'] : '';
- $name = isset($tag['name']) ? $tag['name'] : 'nav';
-
- if(!empty($tag['id'])){
- $catestr = '$__CATE__ = Db::name(\'cate\')->where(\'is_menu\',1)->order(\'sort ASC,id DESC\')->select();';
- $catestr.= '$__LIST__ = getChildsOn($__CATE__,'.$tag['id'].');';
- }else{
- $catestr = '$__CATE__ = Db::name(\'cate\')->where(\'is_menu\',1)->order(\'sort ASC,id DESC\')->select();';
- $catestr.= '$__LIST__ = unlimitedForLayer($__CATE__);';
- }
- //提取前N条数据,因为sql的LIMIT避免不了子栏目的问题
- if(!empty($tag['limit'])){
- $catestr.= '$__LIST__ = array_slice($__LIST__, 0,'.$tag['limit'].');';
- }
- $parse = '<?php ';
- $parse .= $catestr;
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="' . $name . '"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //通用栏目信息
- Public function tagCate($tag){
- $id = isset($tag['id'])?$tag['id']:"input('catId')";
- $type = $tag['type']?$tag['type']:'catname';
-
- $str = '<?php ';
- $str .= '$__CATE__=Db::name("cate")->where("id",'.$id.')->find();';
- $str .= 'if(is_array($__CATE__)){ ';
- $str .= '$__CATE__[\'url\']=getUrl($__CATE__);';
- $str .= 'echo $__CATE__[\''.$type.'\'];';
- $str .= '}';
- $str .= '?>';
- return $str;
- }
-
- //通用位置信息
- Public function tagPosition($tag,$content){
- $name = $tag['name']?$tag['name']:'position';
- $parse = '<?php ';
- $parse .= '$__CATE__ = Db::name(\'cate\')->select();';
- $parse .= '$__LIST__ = getParents($__CATE__,input(\'catId\'));';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="' . $name . '"}';
- $parse .= '<?php $' . $name . '[\'url\']=getUrl( $' . $name . '); ?>';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //获取友情链接
- Public function tagLink($tag,$content){
- $name = $tag['name']?$tag['name']:'link';
- $parse = '<?php ';
- $parse .= '$__LIST__ = Db::name(\'link\')->where(\'status\',1)->order(\'sort ASC,id desc\')->select();';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="' . $name . '"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //获取广告信息
- Public function tagAd($tag,$content){
- $name = isset($tag['name']) ? $tag['name'] : 'ad';
- $type = isset($tag['type']) ? $tag['type'] : '';
- $id = isset($tag['id']) ? $tag['id'] : '';
- $parse = '<?php ';
- $parse .= '
- $__WHERE__ = array();
- if (!empty(\'' . $id . '\')) {
- $__WHERE__[] = [\'a.type_id\', \'=\', ' . $id . '];
- }
- if (!empty(\'' . $type . '\')) {
- $__WHERE__[] = [\'at.name\', \'=\', \'' . $type . '\'];
- }';
- $parse .= '$__LIST__ = Db::name(\'ad\')
- ->alias(\'a\')
- ->leftJoin(\'ad_type at\',\'a.type_id = at.id\')
- ->field(\'a.*,at.name as type_name\')
- ->where(\'a.status\',1)
- ->where($__WHERE__)
- ->order(\'a.sort ASC,a.id desc\')
- ->select();';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="' . $name . '"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //通用碎片信息
- Public function tagDebris($tag){
- $name = $tag['name']?$tag['name']:'';
- $type = $tag['type']?$tag['type']:'';
- $str = '<?php ';
- $str .= 'echo Db::name("debris")->where("name",\''.$name.'\')->value("'.$type.'");';
- $str .= '?>';
- return $str;
- }
-
- //通用列表
- Public function tagList($tag,$content){
- $id = isset($tag['id']) ? $tag['id'] : "input('catId')"; //可以为空
- $name = isset($tag['name']) ? $tag['name'] : "list"; //不可为空
- $order = isset($tag['order']) ? $tag['order'] : 'sort ASC,id DESC'; //排序
- $limit = isset($tag['limit']) ? $tag['limit'] : '0'; //多少条数据,传递时不再进行分页
- $where = isset($tag['where']) ? $tag['where'].' AND status = 1 ' : 'status = 1'; //查询条件
- $pagesize = isset($tag['pagesize']) ? $tag['pagesize'] : config('page_size');
- //paginate(1,false,['query' => request()->param()]); //用于传递所有参数,目前只需要page参数
-
- $parse = '<?php ';
- $parse .='
- //查找栏目对应的表信息
- $__TABLE_=Db::name(\'cate\')
- ->alias(\'a\')
- ->leftJoin(\'module m\',\'a.moduleid = m.id\')
- ->field(\'a.id,a.moduleid,a.pagesize,a.catname,m.name as modulename\')
- ->where(\'a.id\',\'=\','.$id.')
- ->find();
- //获取表名称
- $__TABLENAME_ = $__TABLE_[\'modulename\'];
- //获取模型ID
- $__MODULEID__ = $__TABLE_[\'moduleid\'];
- //查询子分类,列表要包含子分类内容
- $__ALLCATE__ = Db::name(\'cate\')->field(\'id,parentid\')->select();
- $__IDS__ = getChildsIdStr(getChildsId($__ALLCATE__,'.$id.'),'.$id.');
- //表名称为空时(id不存在)直接返回
- if(!empty($__TABLENAME_)){
- //当传递limit时,不再进行分页
- if('.$limit.'!=0){
- $__LIST__ = Db::name($__TABLENAME_)
- ->order(\''.$order.'\')
- ->limit(\''.$limit.'\')
- ->where(" '.$where.'")
- ->where(\'catid\',\'in\',$__IDS__)
- ->select();
- $page = \'\';
- }else{
- $__TABLE_[\'pagesize\'] = empty($__TABLE_[\'pagesize\'])?'.$pagesize.':$__TABLE_[\'pagesize\'];
- $__LIST__ = Db::name($__TABLENAME_)
- ->order(\''.$order.'\')
- //->limit(\''.$limit.'\')
- ->where(" '.$where.'")
- ->where(\'catid\',\'in\',$__IDS__)
- ->paginate($__TABLE_[\'pagesize\']);
- $page = $__LIST__->render();
- }
- //处理数据(把列表中需要处理的字段转换成数组和对应的值)
- $__LIST__ = changeFields($__LIST__,$__MODULEID__);
- }else{
- $__LIST__ = [];
- }
- ';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="'.$name.'"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //通用搜索 search,table,name,pagesize,where,order
- Public function tagSearch($tag,$content){
- $search = isset($tag['search']) ? $tag['search'] : ""; //关键字
- $table = isset($tag['table']) ? $tag['table'] : "article"; //表名称
- $name = isset($tag['name']) ? $tag['name'] : "list"; //不可为空
- $order = isset($tag['order']) ? $tag['order'] : 'sort ASC,id DESC'; //排序
- $where = isset($tag['where']) ? $tag['where'].' AND status = 1 ' : 'status = 1'; //查询条件
- $pagesize = isset($tag['pagesize']) ? $tag['pagesize'] : config('page_size');
-
- $parse = '<?php ';
- $parse .='
- $__MODULEID__ = Db::name("module")->where("name","'.$table.'")->value("id");
- $__LIST__ = Db::name("'.$table.'")
- ->order("'.$order.'")
- ->where("'.$where.'")
- ->where("title", "like", "%'.$search.'%")
- ->paginate("'.$pagesize.'",false,[\'query\' => request()->param()]);
- $page = $__LIST__->render();
- //处理数据(把列表中需要处理的字段转换成数组和对应的值)
- $__LIST__ = changeFields($__LIST__,$__MODULEID__);
- ';
- $parse .= ' ?>';
- $parse .= '{volist name="__LIST__" id="'.$name.'"}';
- $parse .= $content;
- $parse .= '{/volist}';
- return $parse;
- }
-
- //详情上一篇
- Public function tagPrev($tag){
- $len = $tag['len']?$tag['len']:'';
-
- $str = '<?php ';
- $str .= '
- //查找表名称
- $__TABLENAME__ = Db::name(\'cate\')
- ->alias(\'c\')
- ->leftJoin(\'module m\',\'c.moduleid = m.id\')
- ->field(\'m.name as table_name\')
- ->where(\'c.id\',input(\'catId\'))
- ->find();
- //根据ID查找上一篇的信息
- $__PREV__ = Db::name($__TABLENAME__[\'table_name\'])
- ->where(\'catid\',input(\'catId\'))
- ->where(\'id\',\'<\',input(\'id\'))
- ->field(\'id,catid,title\')
- ->order(\'sort ASC,id DESC\')
- ->find();
- if($__PREV__){
- //处理上一篇中的URL
- $__PREV__[\'url\'] = getShowUrl($__PREV__);
- $__PREV__ = "<a class=\"prev\" title=\" ".$__PREV__[\'title\']." \" href=\" ".$__PREV__[\'url\']." \">".$__PREV__[\'title\']."</a>";
- }else{
- $__PREV__ = "<a class=\"prev_no\" href=\"javascript:;\">暂无数据</a>";
- }
- echo $__PREV__;
- ';
- $str .= '?>';
- return $str;
- }
-
- //详情下一篇
- Public function tagNext($tag){
- $len = $tag['len']?$tag['len']:'';
-
- $str = '<?php ';
- $str .= '
- //查找表名称
- $__TABLENAME__ = Db::name(\'cate\')
- ->alias(\'c\')
- ->leftJoin(\'module m\',\'c.moduleid = m.id\')
- ->field(\'m.name as table_name\')
- ->where(\'c.id\',input(\'catId\'))
- ->find();
- //根据ID查找下一篇的信息
- $__PREV__ = Db::name($__TABLENAME__[\'table_name\'])
- ->where(\'catid\',input(\'catId\'))
- ->where(\'id\',\'>\',input(\'id\'))
- ->field(\'id,catid,title\')
- ->order(\'sort ASC,id DESC\')
- ->find();
- if($__PREV__){
- //处理下一篇中的URL
- $__PREV__[\'url\'] = getShowUrl($__PREV__);
- $__PREV__ = "<a class=\"next\" title=\" ".$__PREV__[\'title\']." \" href=\" ".$__PREV__[\'url\']." \">".$__PREV__[\'title\']."</a>";
- }else{
- $__PREV__ = "<a class=\"next_no\" href=\"javascript:;\">暂无数据</a>";
- }
- echo $__PREV__;
- ';
- $str .= '?>';
- return $str;
- }
-
-
- }
1.基于ssm的甘肃旅游系统 |
2.基于SSM的旅游企业财务管理系统 |
3.基于SSM的疫情防疫项目(带爬虫) |
4.基于springboot的人力资源管理系统 |
5.基于SSM的民生置业有限公司信息管理系统 |
6.基于ssm的在线挂号小程序系统 |
7.基于Java(spring boot框架)新冠疫苗预约管理系统 |
8.基于SSM的校园小助手系统 |
9.基于springboot的点餐小程序系统 |
10.基于ssm的健康食谱推荐小程序 |
11.基于ssm的健康食谱小程序 |
12.基于ssm的二手汽车拍卖系统小程序 |
13.基于ssm的二手汽车拍卖系统app |
14.基于springboot的客户关系管理系统 |
15.基于SSM的校园活动管理小程序 |
16.基于SSM的个人健康饮食管理小程序系统 |
17.基于ssm的微信小程序水果商城 |
18.基于微信小程序的一起运动吧活动管理系统 |
19.基于springboot的微信小程序的在线商城系统(根据收藏类别推荐+点击率推荐) |
20.基于SSM新闻网站 |
21.基于ssm的在线租房网站 |
22.基于springboot的中学校园管理微信小程序 |
23.基于Springboot学生在线考试系统 |
24.基于SSM的网上奶茶购买平台 |
25.基于springboot的高校社团管理系统(多用户角色) |
26.基于springboot个性化学习推荐网站 |
27.基于微信小程序的西藏特产在线商城系统 |
28.基于SSM的微信小程序的查寝系统 |
29.基于ssm的微信小程序的口袋故事系统 |
30.基于SSM的小区物业管理系统 |
31.基于SSM的小程序任务调度管理信息系统 |
32.基于SSM的团员信息管理系统 |
33.基于SSM框架的法律学习小程序 |
34.基于springboot的学校监考小程序 |
35.基于SSM的超市财务管理系统 |
36.基于springboot的学生宿舍管理系统 |
37.基于SSM的课程设计管理系统 |
38.基于SSM的课设管理小程序 |
39.基于springboot的果蔬交易与物流微信小程序 |
40.基于ssm的果蔬交易与物流微信小程序 |
41.基于SSM的红色文化展示小程序系统 |
42.基于SSM的小区物业管理系统 |
43.基于javaweb的机械博物馆展品管理系统 |
44.基于springboot的实验室设备管理系统 |
45.基于SSM企业人力资源管理系统 |
46.基于springboot的实验室物资管理小程序 |
47.基于springboot的高校选课系统 |
48.基于SSM小程序蔬菜水果零食销售系统 |
49.基于SSM的园第二课堂小程序 |
50.基于ssm的全球地震数据信息管理系统 |
51.基于ssm的足球联赛管理系统 |
52.基于SSM的小程序的人工智能类竞赛管理系统 |
53.基于SSM的智慧医疗问诊小程序 |
54.基于SSM的微信小程序直播在线教育平台 |
55.基于springboot+爬虫的新闻网站系统 |
56.基于SSM的自驾游小程序 |
57.基于SSM的高校宿舍管理小程序系统 |
58.基于SSM的微信小程序在线学习平台 |
59.基于Android的防疫信息管理系统 |
60.基于springboot的患者术后康复的小程序 |
61.基于ssm微信小程序的校园换物系统 |
62.基于SSM微信小程序的智慧党史系统 |
63.基于SSM的家庭理财系统 |
64.基于SSM的高校学籍信息管理系统 |
65.基于SSM微信小程序的航班查询和订票系统 |
66.基于ssm的医院挂号系统 |
67.基于SSM的在线阅读系统 |
68.基于SSM的疫情社区物资配送系统 |
69.基于ssm的加油服务系统小程序系统 |
70.基于ssm的XX学院校友录小程序系统 |
71.基于ssm的药店管理系统微信小程序系统 |
72.基于ssm的装潢应用系统小程序系统 |
73.基于ssm的学生公寓生活管理系统 |
74.基于ssm的计算机维修服务微信小程序 |
75.基于ssm的微信音乐播放器小程序 |
76.基于ssm的中医药配方小程序 |
77.基于ssm的二手交易微信小程序 |
78.基于ssm的的家教信息小程序管理系统 |
79.基于ssm的鲜花销售小程序系统 |
80.基于ssm的预约挂号小程序系统 |
81.基于ssm的在线考试小程序系统 |
82.基于ssm的慢性疾病管理微信小程序 |
83.基于springboot的在线考试系统小程序 |
84.基于springboot的批发零售业商品管理小程序系统 |
85.基于ssm的图书借阅到期提醒小程序系统 |
86.基于springboot的服装企业人事管理小程序系统 |
87.基于nodejs的电商管理系统 |
88.基于nodejs的知识分享网站 |
89.基于nodejs的宠物医生预约平台 |
90.基于nodejs的外卖平台 |
91.基于nodejs的大学生心理咨询微信小程序 |
92.基于nodejs的房屋租赁管理系统 |
93.基于nodejs的拼车网站 |
94.基于nodejs的博客系统 |
95.基于nodejs的家政服务微信小程序 |
96.基于nodejs的物物交换平台 |
97.基于php的实验室安全系统 |
98.基于php的单招志愿采集系统 |
99.基于php的网上买卖管理系统 |
100.基于php的XX学院兼职小程序系统 |
101.基于php的计算机信息管理学院网站 |
102.基于python+Django图书馆智能推荐系统python3.85版本 |
103.基于Python的个性化电影推荐的算法 |
104.基于python+django图书推荐系统 |
105.基于Python的个性化电影推荐的算法 |
106.基于django的爬虫新闻网站系统 |
107.基于Python的人事档案管理系统 |
108.基于python的汽车销售系统 |
109.基于python的《C语言程序设计》课程案例库研究 |
110.基于python的飞机票销售系统 |
111.基于python的旧衣物捐赠系统 |
112.基于python的超市进销存 |
113.基于python的在线办公系统 |
114.基于python的大学生职业推荐平台 |
115.基于python的个性化服装系统 |
116.基于python的酒店住房管理系统 |
117.基于python的三甲妇幼保健院网站 |
118.基于python的大学生生活信息交互平台 |
119.基于python的学生兼职平台系统 |
120.基于python的主机硬件配置推荐系统 |
121.基于python的本地健康宝微信小程序 |
122.基于python的鲜花销售小程序 |
123.基于JSP的网上订餐管理系统 |
124.基于jAVAWeb停车场管理系统 |
125.基于SSM幼儿园信息管理系统 |
126.基于Springboot电影订票系统 |
127.基于ssm人力资源考勤系统 |
128.基于javaweb作业管理系统 |
129.基于javaweb校园二手物品交易 |
130.基于javaweb的停车场管理系统 |
131.基于javaweb学生选课系统 |
132.基于SSM实现的人力资源管理系统 |
133.基于javaweb项目疫情宿舍管理 |
134.基于SSM的图书商城系统 |
135.基于ssm的微信小程序家教系统 |
136.基于ssm的旅游管理系统travel |
137.基于SSM的微信小程序图书借阅系统 |
138.基于web的微信小程序家政预约系统 |
139.基于web的微信小程序菜谱系统 |
140.基于web的微信小程序服装商城系统 |
141.基于web的微信小程序校园活动管理系统 |
142.基于web的微信小程序记事本系统 |
143.基于ssm的基于微信小程序的农产品销售系统 |
144.基于ssm的微信小程序旅游服务系统 |
145.基于springboot的微信小程序在线考试管理系统 |
146.基于ssm的微信小程序电影院购票系统 |
147.基于ssm的微信小程序房屋交易系统 |
148.基于ssm的微信小程序培训机构管理系统 |
149.基于web的微信小程序电影购票系统 |
150.基于ssm的酒店管理系统 |
151.基于javaweb点餐系统 |
152.基于javaweb宿舍管理系统 |
153.基于springboot的信息化管理系统 |
154.基于SSM的美妆商城系统 |
155.基于javaweb学生成绩管理系 |
156.基于SSM的新闻发布系统 |
157.基于SSM实现的小区物业管理系统 |
158.基于SSH的城市公交查询系统 |
159.基于S2SH的人力资源管理系统 |
160.基于S2SH酒店点餐收款系统 |
161.基于JSP的在线调查问卷系统 |
162.基于JSP的网上订餐管理系统 |
163.基于JSP实现的飞机票售票管理系统 |
164.基于SSM农场信息管理系统 |
165.基于javaweb花店管理系统 |
166.基于javaweb药房库存管理系统 |
167.基于SSM的甜品店系统 |
168.基于S2SH的药膳馆会员管理系统 |
169.基于javaweb的学籍管理系统 |
170.基于web的网上书城系统 |
171.基于web的学生成绩系统 |
172.基于SSH的客运站网上售票系统 |
173.基于S2SH校园论坛系统 |
174.基于javaweb旅游管理系统 |
175.基于SSH的旅游管理系统 |
176.基于SSM垃圾分类管理系统 |
177.基于ssm宠物销售系统 |
178.基于javaweb的在线人才招聘系统 |
179.基于S2SH小区物业系统 |
180.基于ssm人事管理系统 |
181.基于web的淘淘商城系统 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。