一、层级分类
例子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
后端