商品 (Shopping.Product)
商品插件提供了商城使用的商品管理和展示功能。
商品插件仅实现了最基本的商品功能,但提供了灵活的接口,可以在其他插件中实现更高级的功能。
商品类目的数据结构
类目下有规格和属性,
规格代表在购买时需要选择的值,例如颜色尺码套餐,
属性代表只用于显示的值,例如年份品牌。
商品的数据结构
商品可以关联多个分类和标签,商品可以选择一个类目并设置规格和属性。
商品可以设置价格和库存的匹配规则,符合指定的条件时使用指定的价格和库存(可以把有填写库存的规则看成一个SKU)。
商品可以设置对应的卖家,其他插件可以对有卖家的商品进行多店铺商城专用的特殊处理。
商品的管理界面
商品的列表页面
商品的展示页面
商品数据的详细解释
- Product 商品
- Category 商品类目,多对一,类目下包含了可以使用的规格和属性
- Name 类目名称
- Properties 类目包含的属性,多对多,例如"颜色"可以同时用在服装和自行车上
- Name 属性名称
- IsSalesProperty 是否销售属性,例如颜色和尺寸等是销售属性,年份和材质等是非销售属性
- ControlType 编辑时用的控件类型,有文本框,下拉框和多选框等
- PropertyValues 属性值列表,一对多
- Name 属性值名称
- DisplayOrder 显示顺序,从小到大
- CreateTime 创建时间
- LastUpdated 更新时间
- Remark 备注
- DisplayOrder 显示顺序,从小到大
- CreateTime 创建时间
- LastUpdated 更新时间
- Deleted 是否已删除
- Remark 备注
- CreateTime 创建时间
- LastUpdated 更新时间
- Deleted 是否已删除
- Remark 备注
- Name 商品名称
- Introduction 商品介绍,格式是Html
- Type 商品类型,默认有实体商品和虚拟商品
- State 商品状态,默认有已上架,等待上架和已下架
- Seller 卖家,可以没有卖家
- CreateTime 创建时间
- UpdateTime 更新时间
- DisplayOrder 显示顺序,前台展示时默认按这个顺序显示,从小到大
- Remark 备注,格式是Html
- Deleted 是否已删除
- Classes 关联的商品分类
- Tags 关联的商品标签
- MatchedDatas 商品匹配数据,一对多
- Conditions 匹配条件,类型是Dictionary
,包含规格和购买数量等 - Affects 影响的数据,类型是是Dictionary
,包含价格和库存等 - Price 价格,等于null时继续匹配下一项
- PriceCurrency 价格的货币,跟随价格匹配
- Weight 重量,等于null时继续匹配下一项
- Stock 库存,等于null时继续匹配下一项
- ItemNo 货号,等于null时继续匹配下一项
- BarCode 条形码,等于null时继续匹配下一项
- MatchOrder 匹配顺序,从小到大
- Remark 备注,纯文本
- Conditions 匹配条件,类型是Dictionary
- PropertyValues 关联的属性值,一对多,选中的规格和属性的值
- Property 属性,例如颜色
- PropertyValue 属性值,例如黑色
- PropertyValueName 属性值的别名
- Category 商品类目,多对一,类目下包含了可以使用的规格和属性
FAQ
商品类目和商品分类有什么区别?
类目包含规格和属性,只有一层且不应该作为展示时的过滤条件,
分类没有额外的数据,有多层且可以作为展示时的过滤条件。
例如服装类目包含规格"尺寸,颜色"和属性"品牌,年份",
这个类目下的商品可以关联分类"上装,下装,鞋子"等。
商品的销售属性(规格)和非销售属性(属性)有什么区别?
销售属性(规格)在购买商品时需要选择,并且可以参与匹配数据,例如颜色和尺寸等。
非销售属性(属性)是固定的值,只能在编辑商品时设置一个,例如品牌和年份等。
为什么使用商品匹配数据储存价格和库存?
传统储存商品价格会使用SKU,例如黑色大码是一个SKU,价格就和这个SKU绑定。
但如果后面添加了套餐这个规格,以前的SKU就需要复制n份,这样会导致数据关联困难,
同样的对于删除规格处理起来也比较麻烦。
这个商品插件使用了匹配规则代替SKU表格,匹配规则可以按部分规格来决定价格,例如大码不管什么颜色都是一个价格。
匹配规则还可以根据订购的数量来决定价格,如果数量超过指定的数量时可以使用一个更便宜的价格,但共用一个库存。
匹配规则从上到下匹配,如果中途遇到空值则继续向下匹配,例子如下
条件 | 价格 | 库存 |
---|---|---|
大码 黑色 订购数量>50 | 88 | 继承 |
大码 订购数量>50 | 89 | 继承 |
大码 | 100 | 10000 |
默认 | 101 | 20000 |
商品类型和状态可以扩展吗?
商品类型可以通过继承IProductType
进行扩展。
商品状态可以通过继承IProductState
进行扩展。
如果需要控制商品类型是否实体商品可以继承IAmRealProduct
。
如果需要控制商品状态是否允许显示在列表页可以修改特征IAmVisibleToThePublic
。
扩展商品类型可以实现一些高级功能,例如把商品分为团购商品和普通商品,再对团购商品进行特殊的处理。
商品属于卖家是怎样处理的?
商品可以属于单个卖家,也可以属于系统。
这个插件没有提供给卖家使用的管理界面,也没有提供卖家的店铺页面,需要这些功能应该使用关联的其他插件。
商品属于卖家时会影响到创建订单的处理,详细请查看订单插件的文档。