PHP.52-TP框架商城應用實例-前臺4-商品詳情頁-麪包屑導航、AJAX瀏覽歷史

麪包屑導航javascript

 思路:根據商品的主分類向上取出全部上級分類便可php

一、在分類模型中增長取出全部上級分類的方法html

    /**********  【麪包屑導航】取出一個分類全部上級分類 **********/
        public function parentPath($catId)
        {
            static $ret = array();
            $info = $this->field('id, cat_name,parent_id')->find($catId);
            $ret[] = $info;
            // 遞歸取上級信息
            if($info['parent_id'] > 0)
                $this->parentPath($info['parent_id']);
            return $ret;
        }

 二、在控制器中調用java

 三、頁面中循環輸出【一、倒着輸出;二、先數組反轉再輸出】ajax

 四、爲每件商品生成一個靜態緩存數據庫

 

瀏覽歷史      ==> AJAX作,實現局部不緩存!json

原理: 瀏覽一件商品就存起來數組

解決方法瀏覽器

未登陸時緩存

    SESSION:關閉瀏覽器再打開瀏覽歷史沒了

    COOKIE:關閉瀏覽器再用同一個瀏覽器打開還有【配置過時時間】   ==> 只存ID

登陸以後

  數據庫:必須會員先登陸了獲取得member_id以後才能存數據庫中

一、頁面中增長js代碼

<script type="text/javascript">
<?php $config = C('IMAGE_CONFIG'); ?>
var viewPath = '<?php echo $config['viewPath']; ?>';
// 記錄瀏覽歷史
$.ajax({
    type : "GET",
    url : "<?php echo U('Index/displayHistory?id='.$info['id']); ?>",
    dataType : "json",
    success : function(data)
    {
        // 循環服務器返回的瀏覽歷史數據放到頁面中
        // 先拼HTML字符串
        var html = "";
        $(data).each(function(k,v){
            html += '<dl><dt><a href="<?php echo U('goods', '', FALSE); ?>/id/'+v.id+'"><img src="'+viewPath+v.mid_logo+'" /></a></dt><dd><a href="<?php echo U('goods', '', FALSE); ?>/id/'+v.id+'">'+v.goods_name+'</a></dd></dl>';
        });
        // 放到 頁面中
        $("#display_history").html(html);
    }
});
</script>

二、修改瀏覽歷史的HTML添加一個ID

三、控制器中添加方法處理AJAX

public function displayHistory()
    {
        $id = I('get.id');
        // 先從COOKIE中取出瀏覽歷史的ID數組
        $data = isset($_COOKIE['display_history']) ? unserialize($_COOKIE['display_history']) : array();
        // 把最新瀏覽的這件商品放到數組中的第一個位置上
        array_unshift($data, $id);
        // 去重
        $data = array_unique($data);
        // 只取數組中前6個
        if(count($data) > 6)
            $data = array_slice($data, 0, 6);
        // 從數組存回COOKIE
        $cookie = setcookie('display_history', seriallize($data), time() + 30 * 86400, '/');
    
        // 再根據商品的ID取出商品的詳細信息
        $goodsModel = M('Admin/Goods');
        $data = implode(',', $data);
        $gData = $goodsModel->field('id.mid_logo,goods_name')->where(array(
            'id' => array('in', $data),
            'is_on_sale' => array('eq', '是'),
        ))->order("FIELD(id, $data)")->select();
        echo json_encode($gData);
    }
相關文章
相關標籤/搜索