PHP.51-TP框架商城应用实例-前台3-楼层

本文详细介绍使用TP框架实现商城楼层推荐功能的具体步骤,包括增加字段、修改模型、制作推荐方法及解决雪崩问题,旨在优化用户体验,提高商品曝光率。

PHP.51-TP框架商城应用实例-前台3-楼层推荐、TP框架雪崩问题

楼层推荐

效果图

1、增加表字段

  商品表

   分类表

2、修改商品模型和分类模型接收字段is_floor

3、修改商品和分类相关的表单

4、后台制作推荐方法

  4.1在分类模型中增加获取前台楼层数据的方法

复制代码

/****** 获取前台首页楼层中的数据 ***********/
        public function floorData()
        {
            $floorData = S('floorData');
            if($floorData)
                return $floorData;
            else
            {
                // 先取出推荐到楼层的顶级分类
                $ret = $this->where(array(
                    'parent_id' => array('eq', 0),
                    'is_floor' => array('eq', '是')
                ))->select();
                //var_dump($ret);die;
                $goodsModel = D('Admin/Goods');
                // 循环每个楼层取出楼层中的数据
                foreach ($ret as $k => $v)
                {
                    /*********** 这个楼层中的品牌数据 *************/
                    // 先取出这个楼层下所有的商品ID
                    $goodsId = $goodsModel->getGoodsIdByCatId($v['id']);

                    // 再取出这些商品所用到的品牌
                    $ret[$k]['brand'] = $goodsModel->alias('a')
                        ->join('LEFT JOIN __BRAND__ b ON a.brand_id=b.id')
                        ->field('DISTINCT brand_id,b.brand_name,b.logo')
                        ->where(array(
                            'a.id' => array('in', $goodsId),
                            'a.brand_id' => array('neq', 0),
                    ))->limit(9)->select();
                        //var_dump($ret[0]['brand']);die;

                    /**** 取出未推荐的二级分类并保存到这个顶级分类的subCat字段中 ****/
                    $ret[$k]['subCat'] = $this->where(array(
                        'parent_id' => array('eq', $v['id']),
                        'is_floor' => array('eq', '否'),
                    ))->select();
                        //var_dump($ret[0]['subCat']);die;
                    /****** 取出推荐的二级分类并保存到这个顶级分类的subCat字段中 *******/
                    $ret[$k]['recSubCat'] = $this->where(array(
                        'parent_id' => array('eq', $v['id']),
                        'is_floor' => array('eq', '是'),
                    ))->select();
                        //var_dump($ret[0]['recSubCat']);die;
                    /*****  循环每个推荐的二级分类取出分类下的8件被推荐到楼层的商品 ****/
                    foreach ($ret[$k]['recSubCat'] as $k1 => &$v1)
                    {
                        //取出这个分类下所有商品的ID并返回一维数组
                        $gid = $goodsModel->getGoodsIdByCatId($v1['id']);
                        $gids = implode(",", $gid);
                        //var_dump($gids);die;
                        // 再根据商品ID取出商品的详细信息
                        $v1['goods'] = $goodsModel->field('id,mid_logo,goods_name,shop_price')
                            ->where(array(
                            'is_on_sale' => array('eq', '1'),
                            'is_floor' => array('eq', '是'),
                            'id' => array('in', $gids),
                        ))->order('sort_num ASC')->limit(8)->select();
                        //var_dump($v1['goods']);die;
                    }
                }
                S('floorData', $ret, 5);
                return $ret;
            }
        }

复制代码

        4.2在IndexController.class.php控制器中取出数据

   4.3在首页中循环输出   ==> 包括品牌信息

 5、为前台页面生成缓存

 

扩展:解决TP框架雪崩问题

生成静态缓存的雪崩问题:如果网站的并发量在100【每秒有100个刷新】,在缓存页面失效的一瞬间,100个并发同时进入到后端数据库有可能让数据库崩溃。

解决方法:修改TP底层源码,在生成静态缓存页时加锁,在缓存失效时只让一个客户端进入控制器      ==> PHP文件锁

 

DSmall多商户开源商城源码是一个以thinkPHP框架进行开发的多用户商城系统源码。网站功能包含:网站设置、帐号同步、上传设置、权限设置、地区管理、数据备份、操作日志、分类管理、品牌管理、店铺等级、店铺分类、店铺帮助、会员管理、会员级别、积分管理、预存款、实物订单、虚拟订单、退货管理、咨询管理、评价管理、文章分类、文章管理、抢管理、限时折扣、满即送、手机端拼团、会员等级折扣、优惠套餐、推荐展位、活动管理、兑换礼品、行业分析、店铺统计、商品分析、营销分析等 安装须知: 请将public目录设置为根目录后,直接访问即可进行安装 环境要求: PHP5.4以上版本(注意:PHP5.4dev版本和PHP6均不支持) DSmall多商户开源商城源码 更新日志: 2018年8月3日更新 1.新增会员等级折扣功能 2.新增后台自定义自动收货时间 3.评价管理分页修复 4.用户登录注册验证码修复。 5.手机用户中心界面优化 2018年8月21日更新 1.优化会员等级折扣功能 2.优化后台统计功能 3.优化后台的界面显示 4.优化手机端及语言包 2018年9月17日更新 1.新增双语语言切换 2.分销功能强化,新增分销商品管理,分销员管理,分销等级管理。 3.手机端功能以及界面优化 2018年10月9日更新 1. 优化缓存浏览记录 2. 优化分销佣金分拥 3. 修复微信自动登录参数 4. 修复双语切换BUG 2018年11月12日更新 1. 修复微信自动登录没有unionid时需要中断 2. 修复苹果手机小程序支付的小BUG 3. 修复语言包BUG 4. 修复SNS显示错位 5. 去除初始化数据的多余图片 6. 后台界面优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值