ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
>{$jz}变量可以输出所有内容 内容页也可以使用{$type}调用栏目所有内容的哦~ ~~~ 商品标题:{$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'])} 其他字段内容统一输出:{$jz['字段标识']} 如:{$jz['dianhua']} #自定义当前位置:【不要求完全掌握,知道可以遍历输出面包屑导航即可】 {loop $position_data as $v} {php echo '<a href="'.$v['url'].'">'.$v['classname'].'</a>' /} {/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里面,如{foreach get_fields_show($jz['tid'],$type['molds']) as $v} {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} ~~~ ## 点评/星星数 > 五颗星为满分,评分数为总星数/投票数,点了星星并提交评论才算评分成功 ~~~ <div class="rating"> #获取当前商品的点评数据 {php $comment = show_comment($jz['tid'],$jz['id']) /} #判断是否有评论 #获取星星数 {php $star_num = $comment['average'] /} #判断是否有评论,如果没有则返回false {if($comment['data'])} {for $i=1;$i<=$star_num;$i++} <!--输出满星--> <img src="assets/img/star.svg"> {/for} {if(round($star_num)!=$star_num)} <!--输出半星--> <img src="assets/img/star-half-empty.svg"> {/if} {if($star_num<5)} {for $i=1;$i<=(5-$star_num);$i++} <!--输出空星--> <img src="assets/img/star-empty.svg"> {/for} {/if} #星星数:{$star_num} #投票数:{$comment['count']} {$star_num} - {$comment['count']} 票 {else} #输出5个空星 <img src="assets/img/star-empty.svg"><img src="assets/img/star-empty.svg"><img src="assets/img/star-empty.svg"><img src="assets/img/star-empty.svg"><img src="assets/img/star-empty.svg"> 0 - 0 票 {/if} </div> ~~~ ## 加入购物车 ~~~ <button onclick="addcart({$type['id']},{$jz['id']},1)" class="btn btn-primary" type="button"><i class="icon-basket"></i>加入购物车</button> ~~~ ## 加入购物车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('网络错误'); } }) } ``` ## 相关商品 ~~~ 当前模块标识[表名]:{$type['molds']} 当前商品ID:{$jz['id']} {loop table="$type['molds']" notin="id|$jz['id']" limit="3" as="v"} notin:表示除当前ID外的产品 商品标题:{$v['title']} 商品链接:{$v['url']} 商品SEO标题:{$v['seo_title']} 商品关键词:{$v['keywords']} 商品点击量:{$v['hits']} 商品主图:{$v['litpic']} 商品价格:{$v['price']} 商品库存:{$v['stock_num']} 商品简介:{$v['description']} 商品内容:{$v['body']} 商品上传管理员:{fun adminInfo($v['userid'],'name')} 商品更新时间:{fun date('Y-m-d',$v['addtime'])} {/loop} ~~~ ## 上一个 ~~~ #判断是否有上一个 {if($aprev)} 上一个链接:{$aprev['url']} 上一个标题:{$aprev['title']} {else} #如果没有上一个,则输出这里的内容 {/if} ~~~ ## 下一个 ~~~ #判断是否有下一个 {if($anext)} 下一个的链接:{$anext['url']} 下一个的标题:{$anext['title']} {else} #如果没有下一个,则输出这里的内容 {/if} ~~~ ## 点赞 ~~~ #判断是否点赞 {if(checkLikes($type['id'],$jz['id']))} <span style="color:#f00;cursor:pointer;" onclick="likes({$type['id']},{$jz['id']})" class="icon-like">已点赞</span> {else} <span style="color:gray;cursor:pointer;" onclick="likes({$type['id']},{$jz['id']})" class="icon-like">点赞</span> {/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']))} <span style="color:#f00;cursor:pointer;" onclick="collect({$type['id']},{$jz['id']})">已收藏</span> {else} <span style="color:gray;cursor:pointer;" onclick="collect({$type['id']},{$jz['id']})">收藏</span> {/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('网络错误'); } }) } ```