{include="style"}
系统配置统一使用规则:{!--$webconf[配置参数]--} 或者 通过方法获取{!--fun webConf(配置参数)--}
扩展配置统一使用规则: 标签值{!--$customconf[配置参数]--} 或者 通过方法获取标签值{!--fun get_custom(配置参数)--}
{!--$webconf['web_name']--}
{!--$webconf['web_keyword']--}
{!--$webconf['web_desc']--}
{!--$webconf['web_copyright']--}
{!--$webconf['web_beian']--}
{!--$webconf['web_tel']--}
{!--$webconf['web_tel_400']--}
{!--$webconf['web_qq']--}
{!--$webconf['web_email']--}
{!--$webconf['web_address']--}
{!--$webconf['web_js']--}
{!--$classtypedata[$id][$str]--} $id:栏目的ID $str:栏目对应的字段参数 如:针对于栏目ID等于1的栏目,我们可以这样输出以下内容: 栏目名:{!--$classtypedata[1]['classname']--} 模块标识:{!--$classtypedata[1]['molds']--} 缩略图:{!--$classtypedata[1]['litpic']--} 当前栏目URL:{!--$classtypedata[1]['url']--} 描述:{!--$classtypedata[1]['description']--} 关键词:{!--$classtypedata[1]['keywords']--} 内容:{!--$classtypedata[1]['body']--} 列表输出条数:{!--$classtypedata[1]['lists_num']--} 栏目评论数:{!--$classtypedata[1]['comment_num']--} 上级栏目ID:{!--$classtypedata[1]['pid']--} 上级栏目名:{!--$classtypedata[$classtypedata[1]['pid']]['classname']--} 上级栏目URL:{!--$classtypedata[$classtypedata[1]['pid']]['url']--}
//判断是否首页,输出高亮代码
{!--loop table="classtype" isshow="1" pid="0" as="v"--} 栏目名:{!--$v['classname']--} 栏目URL:{!--$v['url']--} 栏目简介:{!--$v['description']--} 栏目缩略图[banner]:{!--$v['litpic']--} 判断是否有下级: {!--if(haschild($classtypedata,$v['id']))--} 有下级则输出,输出下级栏目 {!--foreach $classtypedata[$v['id']]['children']['list'] as $vv--} 栏目名:{!--$vv['classname']--} 栏目URL:{!--$vv['url']--} 栏目简介:{!--$vv['description']--} 栏目缩略图[banner]:{!--$vv['litpic']--} {!--/foreach--} {!--else--} 没有下级则输出 {!--/if--} {!--/loop--}
①推荐使用.如输出栏目ID为1的下级栏目 {!--foreach $classtypedata[1]['children']['list'] as $v--} {!--/foreach--}
②不推荐,但是也能输出loop {!--loop table="classtype" pid="2" isshow="1" as="v"} 栏目名:{!--$v['classname']--} 栏目URL:{!--$v['url']--} 栏目简介:{!--$v['description']--} 栏目缩略图[banner]:{!--$v['litpic']--} {!--/loop--}
{!--foreach $classtypedata as $v--} {!--if($type['pid']==$v['pid'])--}//父类相同,那么他们就是同级了,需要注意的是当前栏目为顶级栏目(pid=0)的时候是输出所有顶级栏目的 栏目名:{!--$v['classname']--} 栏目链接:{!--$v['url']--} {!--/if--} {!--/foreach--}
{!--foreach $classtypedata as $v--} {!--if($classtypedata[$type['pid']]['pid']==$v['pid'])--}//父类相同,那么他们就是同级了,需要注意的是当前栏目为顶级栏目(pid=0)的时候是输出所有顶级栏目的 栏目名:{!--$v['classname']--} 栏目链接:{!--$v['url']--} {!--/if--} {!--/foreach--}
ID:{!--$type['id']--} 当前位置:{!--$positions--} 栏目名:{!--$type['classname']--} 模块标识:{!--$type['molds']--} 缩略图:{!--$type['litpic']--} 当前栏目URL:{!--$type['url']--} 或 {!--$classtypedata[type['id']]['url']--} 描述:{!--$type['description']--} 关键词:{!--$type['keywords']--} 内容:{!--$type['body']--} 列表输出条数:{!--$type['lists_num']--} 栏目评论数:{!--$type['comment_num']--} 上级栏目ID:{!--$type['pid']--} 上级栏目名:{!--$classtypedata[$type['pid']]['classname']--} 上级栏目URL:{!--$classtypedata[$type['pid']]['url']--}
{!--foreach $lists as $v--} 内容输出规则:{!--$v[字段名]--} 标题:{!--$v['title']--} 内容链接:{!--$v['url']--} 热度/点击量:{!--$v['hits']--} 评论数:{!--$v['comment_num']--} 所属栏目id:{!--$v['tid']--} 所属栏目名:{!--$classtypedata[$v['tid']]['classname']--} 所属栏目URL:{!--$classtypedata[$v['tid']]['url']--} 简介:{!--$v['description']--} 链接:{!--$v['url']--} 缩略图:{!--$v['litpic']--} 内容:{!--$v['body']--} 时间:[了解更多日期格式请查看底部附录] 格式:年-月-日:{!--fun date('Y-m-d',$v['addtime'])--} 格式:年-月-日 时:分:秒:{!--fun date('Y-m-d H:i:s',$v['addtime'])--} 格式:年/月/日:{!--fun date('Y/m/d',$v['addtime'])--} {!--/foreach--}
默认输出: {!--$pages--} 自定义输出: {!--if($listpage['list'])--}//判断是否有分页数据
$jz变量可以输出所有内容
内容页也可以使用$type调用栏目所有内容的哦~
文章标题:{!--$jz['title']--} 当前位置:{!--$positions--} 文章SEO标题:{!--$jz['seo_title']--} 文章关键词:{!--$jz['keywords']--} 文章点击量:{!--$jz['hits']--}自增操作{!--fun incrData('article',$jz['id'],'hits')--} 文章缩略图:{!--$jz['litpic']--} 文章简介:{!--$jz['description']--} 文章内容:{!--$jz['body']--} 文章作者:{!--fun adminInfo($jz['userid'],'name')--} 文章更新时间:{!--fun date('Y-m-d',$jz['addtime'])--} 其他字段内容统一输出:{!--$v[字段参数]--} *自定义当前位置:【不要求完全掌握,知道可以遍历输出面包屑导航即可】 {!--loop $positions_data as $v--} {!--php echo ''.$v['classname'].''/--} {!--/loop--}
判断是否有上一篇 {!--if($aprev)--} 上一篇链接:{!--$aprev['url']--} 上一篇标题:{!--$aprev['title']--} {!--else--} 如果没有上一篇,则输出这里的内容 {!--/if--}
判断是否有下一篇 {!--if($anext)--} 下一篇的链接:{!--$anext['url']--} 下一篇的标题:{!--$anext['title']--} {!--else--} 如果没有下一篇,则输出这里的内容 {!--/if--}
{!--if(checkLikes($type['id'],$jz['id']))--} 已点赞 {!--else--} 点赞 {!--/if--}
function likes(tid,id){ $.ajax({ url:"{!--fun U('user/likesAction')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ alert(r.msg); window.location.reload(); }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) }
{!--if(checkCollect($type['id'],$jz['id']))--} 已收藏 {!--else--} 收藏 {!--/if--}
function collect(tid,id){ $.ajax({ url:"{!--fun U('user/collectAction')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ alert(r.msg); window.location.reload(); }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) }
商品标题:{!--$jz['title']--} 当前位置:{!--$positions--} 商品SEO标题:{!--$jz['seo_title']--} 商品关键词:{!--$jz['keywords']--} 商品点击量:{!--$jz['hits']--}自增操作{!--fun incrData('product',$jz['id'],'hits')--} 商品主图:{!--$jz['litpic']--} 商品价格:{!--$jz['price']--} 商品库存:{!--$jz['stock_num']--} 商品简介:{!--$jz['description']--} 商品内容:{!--$jz['body']--} 商品上传管理员:{!--fun adminInfo($jz['userid'],'name')--} 商品更新时间:{!--fun date('Y-m-d',$jz['addtime'])--} 其他字段内容统一输出:{!--$v[字段参数]--} *自定义当前位置:【不要求完全掌握,知道可以遍历输出面包屑导航即可】 {!--loop $position_data as $v--} {!--php echo ''.$v['classname'].''/--} {!--/loop--}
{!--php $pictures = explode('||',$jz['pictures'])/--} {!--foreach $pictures as $v--} {!--if($v!='')--} 图片链接:{!--$v--} {!--/if--} {!--/foreach--}
{!--php $product_fields = get_fields_show($jz['tid'],$type['molds'])/--} {!--foreach $product_fields as $v--} 属性名:{!--$v['fieldname']--} {!--if($v['fieldtype']==7)--} 输出单选值:{!--fun get_key_field_select($jz[$v['field']],$type['molds'],$v['field'])--} {!--else if($v['fieldtype']==8)--} 输出多选值,并用空格分隔:{!--fun implode(' ',get_key_field_select($jz[$v['field']],$type['molds'],$v['field']))--} {!--else--} 输出原值:{!--$jz[$v['field']]--} {!--/if--} {!--/foreach--}
{!--php $comment = show_comment($jz['tid'],$jz['id'])/--} {!--php $star_num = $comment['average']/--} {!--if($comment['data'])--} {!--for $i=1;$i<=$star_num;$i++--} {!--/for--} {!--if(round($star_num)!=$star_num)--} {!--/if--} {!--if($star_num<5)--} {!--for $i=1;$i<=(5-$star_num);$i++--} {!--/for--} {!--/if--} {!--$star_num--} - {!--$comment['count']--} 票 {!--else--} 0 - 0 票 {!--/if--} 加入购物车 加入购物车 加入购物车JS function addcart(tid,id,num){ $.ajax({ url:"{!--fun U('user/addcart')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,num:num,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ window.location.href=r.url; }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) } 相关产品 {!--loop table="$type['molds']" notin="id|$jz['id']" limit="3" as="v"--} notin:表示除当前ID外的产品 {!--/loop--} 上一个 判断是否有上一个 {!--if($aprev)--} 上一个链接:{!--$aprev['url']--} 上一个标题:{!--$aprev['title']--} {!--else--} 如果没有上一个,则输出这里的内容 {!--/if--} 下一个 判断是否有下一个 {!--if($anext)--} 下一个的链接:{!--$anext['url']--} 下一个的标题:{!--$anext['title']--} {!--else--} 如果没有下一个,则输出这里的内容 {!--/if--} 点赞 判断是否有点赞 {!--if(checkLikes($type['id'],$jz['id']))--} 有点赞,则输出这里 已点赞 {!--else--} 没有点赞则输出这里 点赞 {!--/if--} 相关点赞js function likes(tid,id){ $.ajax({ url:"{!--fun U('user/likesAction')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ alert(r.msg); window.location.reload(); }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) } 收藏 {!--if(checkCollect($type['id'],$jz['id']))--} 已收藏 {!--else--} 收藏 {!--/if--} 相关收藏js function collect(tid,id){ $.ajax({ url:"{!--fun U('user/collectAction')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ alert(r.msg); window.location.reload(); }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) }
加入购物车
function addcart(tid,id,num){ $.ajax({ url:"{!--fun U('user/addcart')--}",//请求的url地址 dataType:"json",//返回格式为json async:true,//请求是否异步,默认为异步,这也是ajax重要特性 data:{tid:tid,id:id,num:num,ajax:1},//参数值 type:"POST",//请求方式 beforeSend:function(){ //请求前的处理 }, success:function(r){ if(r.code==0){ window.location.href=r.url; }else{ alert(r.msg); } }, complete:function(){ //请求完成的处理 }, error:function(){ //请求出错处理 alert('网络错误'); } }) }
{!--loop table="$type['molds']" notin="id|$jz['id']" limit="3" as="v"--} notin:表示除当前ID外的产品 {!--/loop--}
判断是否有上一个 {!--if($aprev)--} 上一个链接:{!--$aprev['url']--} 上一个标题:{!--$aprev['title']--} {!--else--} 如果没有上一个,则输出这里的内容 {!--/if--}
判断是否有下一个 {!--if($anext)--} 下一个的链接:{!--$anext['url']--} 下一个的标题:{!--$anext['title']--} {!--else--} 如果没有下一个,则输出这里的内容 {!--/if--}
判断是否有点赞 {!--if(checkLikes($type['id'],$jz['id']))--} 有点赞,则输出这里 已点赞 {!--else--} 没有点赞则输出这里 点赞 {!--/if--}
{!--loop table="links" isshow="1" orderby="orders desc" as="v"--} 链接名:{!--$v['title']--} 链接URL:{!--$v['url']--} {!--/loop--}
{!--loop table="collect_type" as="v"--} 轮播图分类名字:{!--$v['name']--} 创建时间:{!--fun date('Y-m-d',$v['addtime'])--} {!--/loop--}
{!--loop table="collect" orderby="orders desc" tid="1" isshow="1" as="v"--} 轮播图标题:{!--$v['title']--} 轮播图描述:{!--$v['description']--} 轮播图图片:{!--$v['litpic']--} 轮播图链接:{!--$v['url']--} 创建时间:{!--fun date('Y-m-d',$v['addtime'])--} {!--/loop--}
{!--loop table="表名" tid="栏目ID" limit="输出条数" ispage="值1" isall="值1" notin="字段|值" like="字段|值,字段2|值2" as="变量标签,默认v"--} 这里面输出内容格式:{!--$v[字段参数]--} {!--$n--}:计数,从1开始计 table:数据库的表名 tid:对应表中的栏目ID,默认每条数据都会有tid字段,可以根据此值输出对应的栏目数据 limit:输出的条数 ispage:数值可以是非0的任何数字,如果填写了该参数,则loop循环结束后可以调出分页 isall:数值可以是非0的任何数字,如果填写了该参数,则查询数据的时候会调用tid栏目的下级数据(如果没有tid,则忽略) notin:表示查询除某个字段值意外的数据,如:id|1,表示除id=1以外的数据 as:默认循环变量为小写字母v,可以自定义非数字开头的字母(严格意义上说,不能出现PHP的关键字) like:表示查询存在某个值的数据,目前仅支持的形式有:[字段|值],[字段1|值1,字段2|值2],[字段|变量] 如:title|测试,表示title中含有‘测试’这个单词的数据。 as:默认循环变量为小写字母v,可以自定义非数字开头的字母(严格意义上说,不能出现PHP的关键字) {!--/loop--}
默认tpl模板输出:{!--$v_pages--} 总条数:{!--$v_sum--} 总页数:{!--$v_allpage--} 分页列表:{!--$v_listpage--} 分页前一条:{!--$v_prevpage--} 分页后一条:{!--$v_nextpage--} 自定义输出:
{!--loop table="article" tid="2,3,4" isall="1" ispage="1" limit="10" as="v"--} 标题:{!--$v['title']--} 简介:{!--$v['description']--} 截取20个字:{!--fun newstr($v['description'],40)--} 缩略图:{!--$v['litpic']--} 时间:{!--fun date('Y-m-d',$v['addtime'])--} 内容:{!--$v['body']--} 其余内容按照统一规则:{!--$v[字段参数]--} {!--/loop--} 输出分页
{!--fun get_info_table($table,$where=null,$str=null)--} $table:表名,模块名,从数据库或模块列表可查看 $where:查询条件。如:['id'=>1],表示查询条件为id=1 $str:获取字段,默认null,返回数组,如果有对应的字段,则返回查询得到的数据的对应字段值。字段可以从数据库中查看。
{!--fun get_all_info_table($table,$where=null,$order=null,$limit=null)--} $table:表名,模块名,从数据库或模块列表可查看 $where:查询条件。如:['id'=>1],表示查询条件为id=1 $order:查询排序,默认null,表示按系统排序ID正序。如:'id desc'表示ID倒序,'addtime desc,id desc'表示按最新时间,并且ID倒序 $limit:查询条数,默认null,表示查询所有数据。
{!--if(判断1)--} //如果判断1为真,则输出这里 {!--else if(判断2)--} //如果判断1为假,判断2为真,则输出这里 {!--else--} //否则输出这里(判断1、判断2都为假) {!--/if--}
{!--foreach $lists as $v--} 这里循环输出{!--$v--}对应的参数值 {!--/foreach--}
{!--for $i=1;$i<5;$i++--} 这里输出{!--$i--}从1开始递增 {!--/for--}
{!--fun 函数--} 如输出当前日期函数:{!--fun date('Y-m-d',time())--}
{!--fun webConf(配置参数)--}
{!--fun get_custom(配置参数=null)--} 如果没有输入配置参数,则返回自定义配置数组
判断是否为手机端:{!--if(isMobile())--}如果真,这里输出手机端内容{!--/if--} 判断是否为微信端:{!--if(isWeixin())--}如果真,这里输出微信端内容{!--/if--}
指定一个模块的一条数据链接生成:{!--fun gourl($id,$htmlurl=null,$molds='article')--}这里的$id指内容ID,$htmlurl指栏目静态链接名,$molds指模块标识 指定一个栏目的URL链接:{!--$classtypedata[$id]['url']--}这里的$id指栏目的ID值 创建一个自定义URL:{!--fun U($action)--}这里的$action可以是一个方法名,也可以是控制器+方法 如:{!--fun U('index')--}则输出当前页面控制器下面的index方法的执行链接 如:{!--fun U('Home/index')--}则输出Home控制器下面的index方法的执行链接
{!--fun adminInfo($str=null)--}默认传入字段参数为null,返回数组 {!--fun adminInfo('name')--}管理员姓名 {!--fun adminInfo('tel')--}管理员电话 {!--fun adminInfo('email')--}管理员邮箱
{!--fun newstr($data,20)--}表示截取$data中的前20个字符
{!--if( checkAction($action))--}如果真,则执行这里{!--/if--}$action可以是整个模块的控制器名,也可以是单独某个操作名。 如:{!--if(checkAction('Article'))--}如果返回真,则只需这里的代码{!--/if--}检查用户对文章模块是否有操作权限。 {!--if(checkAction('Article/addarticle'))--}如果返回真,则只需这里的代码{!--/if--}单独检查用户是否有新增文章的权限
{!--$v--}输出$v变量的值
{!--php 这里写PHP的内容/--}
用{!--!------}代替{}
时间参数表: 格式:年-月-日:{!--fun date('Y-m-d',$v['addtime'])--} 格式:年-月-日 时:分:秒:{!--fun date('Y-m-d H:i:s',$v['addtime'])--} 格式:年/月/日:{!--fun date('Y/m/d',$v['addtime'])--} a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" D - 星期几,三个英文字母; 如: "Fri" F - 月份,英文全名; 如: "January" h - 12 小时制的小时; 如: "01" 至 "12" H - 24 小时制的小时; 如: "00" 至 "23" g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12" G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23" i - 分钟; 如: "00" 至 "59" j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" l - 星期几,英文全名; 如: "Friday" m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" M - 月份,三个英文字母; 如: "Jan" s - 秒; 如: "00" 至 "59" S - 字尾加英文序数,二个英文字母; 如: "th","nd" t - 指定月份的天数; 如: "28" 至 "31" U - 总秒数 w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) Y - 年,四位数字; 如: "1999" y - 年,二位数字; 如: "99" z - 一年中的第几天; 如: "0" 至 "365"