[抛砖引玉]男女分类页面 轮播幻灯片

stan2515   ·   发表于 2022-4-20   ·   技术交流

这个代码 只完成了  8成。 但后面写不来了  不知道怎么判断分类。

我也学习xiaoshuo88 大佬  希望给各位大侠参考完善并分享谢谢!



/template/home/qimao_web/type.html


                <!-- 轮播图 start-->

                <div class="swiper-wrap js-swiper" style="width:860px;height:266px;">

                     <ul class="swiper-content js-swiper-content">

                                                {slider id="vo"}

                                                <li class="swiper-item js-swiper-item"><a

                                                href="{$vo['url']}"

                                                target='_blank'><img {eq name="$cid" value="4"} src="{$vo['pic']}"{else/}src="{$vo['pic']}"{/eq} alt="">   // 其实就是这里看不懂 啊  这个EP判断 用不来  如何判断  slider_type

                                                </a></li>

                                                {/slider}        

                                                            </ul>

                    <div class="swiper-points js-swiper-points"></div>

                    <a href="javascript:;" class="prev-btn swiper-btn js-prev-btn"><i class="iconfont"></i></a>

                    <a href="javascript:;" class="next-btn swiper-btn js-next-btn"><i class="iconfont"></i></a>

                </div>

                <!-- 轮播图 end-->


/application/admin/view/slider/edit.html

        <div class="layui-form-item">

          <label class="layui-form-label">类型</label>

          <div class="layui-input-inline">

            <select name="type" lay-verify="required">

              <option value="">选择类型</option>

              <option value="0" {eq name="info.type|default=''" value="0"}selected="selected"{/eq}>web</option>

              <option value="1" {eq name="info.type|default=''" value="1"}selected="selected"{/eq}>wap</option>

              <option value="2" {eq name="info.type|default=''" value="2"}selected="selected"{/eq}>app</option>

              <option value="3" {eq name="info.type|default=''" value="3"}selected="selected"{/eq}>webmale</option>

              <option value="4" {eq name="info.type|default=''" value="4"}selected="selected"{/eq}>webfemale</option>

            </select>

          </div>



/application/admin/model/Slider.php


class Slider extends Model{

    protected $autoWriteTimestamp = true;

    public function getTypeTextAttr($value,$data){

        $status = [0=>'web',1=>'wap',2=>'app',3=>'webmale',4=>'webfemale'];

        return $status[$data['type']];

    }

public function info($id){

$map['id'] = $id;

     $info=Slider::where($map)->find();

return $info;

}

    public function lists(){

        return Slider::order('sort asc')->paginate(Config::get('web.list_rows'));

    }

public function edit(){

        $data=Request::post();

        $validate = new SliderValidate;

        if (!$validate->check($data)) {

            $this->error=$validate->getError();

            return false;

        }

        $Slider = new Slider();

        if(empty($data['id'])){

            $result = $Slider->allowField(true)->save($data);

        }else{

            $result = $Slider->allowField(true)->isUpdate(true)->save($data);

        }

        if(false === $result){

            $this->error=$Slider->getError();

            return false;

        }

        return $result;

    }

    public function del($id){

        $map = ['id' => $id];

        $result = Slider::where($map)->delete();

        if(false === $result){

            $this->error=Slider::getError();

            return false;

        }else{

            return $result;

        }

    }

}





2 条回复   |  直到 2022-4-20 | 1131 次浏览

xiaoshuo88
发表于 2022-4-20

幻灯片slider的使用可以参考kyxs作者的文档

http://help.kyxscms.com/1901777

目前文档描述支持的传入参数是这些

参数含义类型必填
id循环变量string
limit显示数量int
empty为空的时候输出提示string


如果要增加根据一个字段去取幻灯片的话,要去对taglib做修改

位置 application/common/taglib/HomeTag.php


可以看到现在关于slider的taglib参数是这些

...
'slider'    => ['attr' => 'id,limit,empty'],
...

刚好是对应文档描述的参数的几项,

这里我们可以增加一个 type,变成这样

...
'slider'    => ['attr' => 'id,limit,empty,type'],
...

然后往下看可以看到这样的代码

...
    public function tagSlider($tag, $content){
        $limit    = empty($tag['limit']) ? '""' : $tag['limit'];
        $empty   = isset($tag['empty']) ? $tag['empty'] : '';
        $parse  = '<?php ';
        $parse .= '$__SLIDER__ = model(\'common/api\')->get_slider('.$limit.');?>';
        $parse .= '{volist name="__SLIDER__" id="'. $tag['id'] .'" empty="'.$empty.'"}';
        $parse .= $content;
        $parse .= '{/volist}';
        return $parse;
    }
...

这里寻思应该就是slider的逻辑代码了,他实际上是把上面的参数,拼到一个php的代码块里面,这里我们首先把新加的参数放进去

...
    public function tagSlider($tag, $content){
        $limit    = empty($tag['limit']) ? '""' : $tag['limit'];
        $empty   = isset($tag['empty']) ? $tag['empty'] : '';
        $type         =  empty($tag['type']) ? '""' : $tag['type'] ;
        $parse  = '<?php ';
        $parse .= '$__SLIDER__ = model(\'common/api\')->get_slider('.$limit.');?>';
        $parse .= '{volist name="__SLIDER__" id="'. $tag['id'] .'" empty="'.$empty.'"}';
        $parse .= $content;
        $parse .= '{/volist}';
        return $parse;
    }
...

但这时候我们还不知道要把这个新的参数怎么放,再看看数据是怎么调用的,

 $parse .= '$__SLIDER__ = model(\'common/api\')->get_slider('.$limit.');?>';

这里用model调了common/api 的get_slider,我们找到这个方法,文件在 application/common/model/Api.php 

...
public function get_slider($limit,$type=false){
		$map = ['status' => 1];
		if($type){
			$map['type'] = $type;
		}else{
			$map['type'] = Request::isMobile()?'1':'0';
		}
        $data=Db::name('slider')->where($map)->limit($limit)->order('sort')->select();
        if($data){
			foreach ($data as $k=>$v){
				$slider_list[$k]=['id'=>$v['id'],'title'=>$v['title'],'pic'=>$this->check_pic($v['picpath']),'url'=>$v['link']];
			}
			return $slider_list;
		}
    }
...

这里我们发现作者大大已经把参数预留好了,只需要直接调就能用了,

这个时候我们按照这里的参数格式,调整下taglib的代码,

...
    public function tagSlider($tag, $content){
        $limit    = empty($tag['limit']) ? '""' : $tag['limit'];
        $empty   = isset($tag['empty']) ? $tag['empty'] : '';
        $type   = empty($tag['type']) ? '""' : $tag['type'] ;
        $parse  = '<?php ';
        $parse .= '$__SLIDER__ = model(\'common/api\')->get_slider('.$limit.','.$type.');?>';
        $parse .= '{volist name="__SLIDER__" id="'. $tag['id'] .'" empty="'.$empty.'"}';
        $parse .= $content;
        $parse .= '{/volist}';
        return $parse;
    }
...


大致就修改完了,来测试一下,我们知道默认web=0,wap=1,app=2

这里传入 type="2",就是app


上传完修改之后要清理一下系统缓存,否则会不生效

然后到后台,调一下原来幻灯的type


我们回到首页,刷新一下,发现首页幻灯片只显示我们改成的app类型的了

如此类推到你要改的地方即可


不得不说,作者大大给力,留了不少接口,小改起来非常方便

评论列表

  • 加载数据中...

编写评论内容

xh
发表于 2022-4-20

 我是对应男女分类id 

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容