面包屑导航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); }