麪包屑導航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); }