一、層級分類
例子1:
data=[ {"cat_id":3,"name":"青浦","parent_id":1}, {"cat_id": 2, "name": "張江", "parent_id": 4}, {"cat_id":4,"name":"浦東","parent_id":1}, {"cat_id":5, "name": "北京", "parent_id": 0}, {"cat_id":6, "name": "昌平", "parent_id": 5}, {"cat_id": 1, "name": "上海", "parent_id": 0}, ] res = [] def get_son(data,level = 0 ,parent_id = 0): for item in data: if item['parent_id'] == parent_id: item['level'] = level res.append(item) get_son(data,level+1,parent_id=item['cat_id']) return res t=get_son(data) for i in t: print(i['level']*"-",i['name']) # 結果 ''' 上海 -浦東 --張江 -青浦 北京 -昌平 '''
例子2:
data=[
{"cat_id":3,"name":"青浦","parent_id":1},
{"cat_id": 2, "name": "張江", "parent_id": 4},
{"cat_id":4,"name":"浦東","parent_id":1},
{"cat_id":5, "name": "北京", "parent_id": 0},
{"cat_id":6, "name": "昌平", "parent_id": 5},
{"cat_id": 1, "name": "上海", "parent_id": 0},
]
def get_tree(data):
lists= []
tree = {}
for i in data:
tree[i["cat_id"]] = i
for item in data:
if item['parent_id'] == 0:
lists.append(tree[item['cat_id']])
else:
if "child" not in tree[item["parent_id"]]:
tree[item['parent_id']]['child'] = []
tree[item['parent_id']]['child'].append(tree[item['cat_id']])
print(lists)
return lists
print(get_tree(data)) # 和print(lists) 結果一樣
結果
[{'cat_id': 5, 'name': '北京', 'parent_id': 0, 'child': [{'cat_id': 6, 'name': '昌平', 'parent_id': 5}]},
{'cat_id': 1, 'name': '上海', 'parent_id': 0, 'child': [{'cat_id': 3, 'name': '青浦', 'parent_id': 1},
{'cat_id': 4, 'name': '浦東', 'parent_id': 1, 'child': [
{'cat_id': 2, 'name': '張江', 'parent_id': 4}
]}]}]
例子3
data1 = [{"cat_id": 1, "name": "上海", "parent_id": 0, "child":[{"cat_id":4,"name":"浦東","parent_id":1,"child":[{"cat_id": 2, "name": "張江", "parent_id": 4},]}] }, ] for item in data1: print('一級分類',item['name']) for item1 in item['child']: print('二級分類',item1['name'])
二、navicate中的表
導入向導 、導出向導時都選擇csv文件
如果是導入txt的時候。用ultraedit工具打開別人給你的txt,看看他到底是用什么樣的符號做列的區分。
三、一級分類接口
剛進來的時候左上角,‘所有分類'和所有的一級分類 --》保存再categories里面
2 又下角,如果是默寫‘所有分類'標簽高亮,顯示所有的非一級分類,如果是左上角的其他標簽高亮,那右下角就顯示,這個分類的兒子分類---》兒子保存再categorieslist,誰的兒子,由高亮的決定,---》 categoryId
cate頁面
cate.js文件
wx.request({ url: app.globalData.new_urls + 'category/all', method:"POST", success: function (res) { var categories = [{ cat_id: 0, category_name: "所有分類" }]; console.log(res) wx.hideLoading(); for (var i = 0; i < res.data.data.length; i++) { if (res.data.data[i].level == 0) { categories.push(res.data.data[i]); } } that.setData({ categories: categories, activeCategoryId: 0 }); that.getGoodsList(0); } }) }, //categoryId=1 //獲取2級分類獲取的值的categorylist getGoodsList: function (categoryId) { if (categoryId == 0) { categoryId = ""; } var that = this; wx.request({ url: app.globalData.new_urls + 'category/all', method: "POST", success: function (res) { var categorieslist = []; for (var i = 0; i < res.data.data.length; i++) { if (categoryId != '') { //res.data.data[i].parent_id=categoryId=1 if (res.data.data[i].parent_id == categoryId) { categorieslist.push(res.data.data[i]); } } else { //categorieslist.push(res.data.data[i]); if (res.data.data[i].parent_id != 0) { categorieslist.push(res.data.data[i]); } } } that.setData({ categorieslist: categorieslist, }); } }) },
cate.wxml文件
<view class="container"> <view class="type-container-boxx"> <view class="type-container"> <view wx:for-items="{{categories}}" wx:key="id" class="type-box" bindtap="tabClick" id="{{item.cat_id}}"> <view class="type-navbar-item {{activeCategoryId == item.cat_id ? 'type-item-on' : ''}}"> {{item.category_name}} </view> </view> </view> <view class="type-list"> <view class="swiper-container"> <swiper class="swiper_box" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange"> <block wx:for="{{banners}}" wx:key="id"> <swiper-item> <image bindtap="toDetailsTap" data-id="{{item.id}}" src="{{item.image_url}}" class="slide-image" mode="widthFix" /> </swiper-item> </block> </swiper> <view class="dots"> <block wx:for="{{banners}}" wx:key="unique"> <view class="dot{{index == swiperCurrent ? ' active' : ''}}"></view> </block> </view> </view> <view class="type-menu"> <view class="type-level-box" wx:for-items="{{categorieslist}}" wx:key="id"> <view id="{{item.cat_id}}" class="type-level-item " bindtap="levelClick" data-id="{{item.cat_id}}"> <image class="type-img" src="{{item.image_url}}"></image> <text>{{item.category_name}}</text> </view> </view> </view> </view> </view> </view>
后端
四、二級分類接口
cate-list頁面
cate-list.js文件
var app = getApp() Page({ data: { }, toDetailsTap: function (e) { wx.navigateTo({ url: "/pages/goods-detail/goods-detail?id=" + e.currentTarget.dataset.id }) }, onLoad: function (e) { wx.showLoading(); var that = this; if (app.globalData.iphone == true) { that.setData({ iphone: 'iphone' }) } wx.request({ url: app.globalData.new_urls + 'goods/list', method:"POST", data: { category_id: e.id, }, success: function (res) { wx.hideLoading(); that.setData({ goods: [], loadingMoreHidden: true }); var goods = []; if (res.data.code != 200 || res.data.data.length == 0) { that.setData({ loadingMoreHidden: false, }); return; } console.log(res.data.data) for (var i = 0; i < res.data.data.length; i++) { goods.push(res.data.data[i]); } that.setData({ goods: goods, }); } }) } })
cate-list.wxml文件
<navigation id='Navigation' show-icon="{{true}}" title="分類列表" show-title="{{true}}" class=""></navigation> <view class="container {{iphone}}"> <view class="goods-container"> <view class="goods-box" wx:for-items="{{goods}}" wx:key="{{index}}" bindtap="toDetailsTap" data-id="{{item.product_id}}"> <view class="img-box"> <image src="{{item.image_url}}" class="image" mode="widthFix" lazy-load="true" /> <view class="goods-characteristic"> <text>{{item.intor}}</text> </view> </view> <view class="goods-title">{{item.name}}</view> <view style='display:flex;'> <view class="goods-price">Ұ{{item.price}}</view> <view class="goods-price-naver">已售{{item.buy_count}}</view> </view> </view> </view> <view hidden="{{loadingMoreHidden ? true : false}}" class="no-more-goods"> <image src="/images/empty_goods.png" class="no-order-img"></image> <view class="text">還沒有商品呢</view> </view> </view>
后端
List方法寫在goods文件中,也可以不寫在
五、三級分類(商品詳情頁面)
1、看首頁index的wxml
2、看 good-detail
后端