Fecshop 产品

2018-05-25 14:16 更新

Fecshop 产品

作为电商系统,很多地方都是围绕产品展开的,譬如产品分类,产品搜索,产品评论,
产品收藏,购物车产品,订单产品等等。

后台产品编辑

产品属性组:

产品除了价格,名字,库存等一些公用的属性外, 产品根据不同的分类,会有一些独有的属性, 譬如电脑类产品会有cpu型号,主板型号等属性, 衣服类有颜色尺码等属性,在这里引入产品属性组的概念, 一类产品从属于一个属性组。

属性组的配置:

打开文件:@common/config/fecshop_local_services/Product.php文件 可以看到对属性组的配置

配置文件的内容太多,这么不贴出来的,您可以打开这个文件查看具体内容,里面有注释

属性组里面的属性有类别,目前有三个类:

1、spu_attr

1.1 spu和sku的概念:sku是产品的唯一标示,最小库存单位,譬如一款鞋子为一个spu,这款鞋子的不同的颜色和不同的尺码为一个sku,

1.2 什么是spu属性(spu_attr),当一款鞋子的不同的sku是颜色和尺码的不同,那么颜色和尺码就是这款鞋子的spu属性(spu_attr)。

1.3 spu_attr是用来在产品详细页面,将这个spu下面的所有sku串联起来,譬如页面:http://fecshop.appfront.fancyecommerce.com/index.php/raglan-sleeves-letter-printed-crew-neck-sweatshirt-53386451-77774122 访问这款衣服的每一个SKU,都会把其他的sku列出来,点击后,就进去其他sku的页面,您会发现url是变化的,这个是类似于京东的方式。 注意:

1.3.1 因为组合的复杂性,spu attr最多设置2个属性,不能超过2个(如果超过会出问题。spu属性会都不显示),超过两个请使用customer_option的方式。也就是类似于淘宝的方式。

1.3.2 这里的属性需要严格按照下面的格式进行配置,如果您想配置自己的spu属性,那么

1.3.3 通过链接:https://fecshop.appfront.fancyecommerce.com/raglan-sleeves-letter-printed-crew-neck-sweatshirt-41214715 您可以看到,color属性是用图片来显示的, 在spu_attr中,第一个属性默认用图片显示,譬如:

'spu_attr' => [  # spu用来区分sku的属性,譬如下面的属性的不同,对应不同的sku,进而是不同的库存
    # 第一个属性会被用户当做图片来显示。
    'color'   => [
        'dbtype'=> 'String',
        'label' =>'颜色',
        'name'  =>'color',
        'sort_order' => 1,
        'display'=>[
            'type' => 'select',
            'data' => [
                'one-color'     => 'one-color',
                'red'           => 'red',
                'white'         => 'white',
                'black'         => 'black',
                'blue'          => 'blue',
                'green'         => 'green',
                'yellow'        => 'yellow',
                'gray'          => 'gray',
                'khaki'         => 'khaki',

                
                'ivory'         => 'ivory',
                'beige'         => 'beige',
                'orange'            => 'orange',
                'cyan'          => 'cyan',
                'leopard'       => 'leopard',
                'camouflage'    => 'camouflage',

                
                'silver'        => 'silver',
                'pink'          => 'pink',
                'purple'        => 'purple',
                'brown'         => 'brown',
                'golden'        => 'golden',
                'multicolor'    => 'multicolor',
                'white & blue'  => 'White & Blue',
                'white & black'     => 'White & Black',
            ]
        ],
        //'require' => 0,
        //'default' => 2,
    ],
    # 第二个属性不会当做图片来显示
    'size'    => [
        'dbtype'=> 'String',
        'label' =>'尺码',
        'name'  =>'size',
        'sort_order' => 2,
        'display'   =>[
            'type'  =>'select',
            'data'  =>[
                'one-size'  => 'one-size',
                'S'     => 'S',
                'M'     => 'M',
                'L'     => 'L',
                'XL'    => 'XL',
                'XXL'   => 'XXL',
                'XXXL'  => 'XXXL',
            ]
        ],
        //'require' => 0,
        //'default' => 2,
    ],

    
],

color 将会被当做图片来显示出来。

2、general_attr(普通属性),可以是各种格式的值,譬如时间格式,email格式,下拉条选择值等。这些属性可以用于分类侧栏属性过滤。

示例配置:

'general_attr' => [  
    # 这是input type='text' 的类型
    'my_remark' => [
        'dbtype'=> 'String',
        'label'=>'我的备注',
        'name'=>'my_remark',
        'display'=>[
            'type' => 'inputString',   # 字符串格式的属性
        ],
        'require' => 0,
    ],
    # 这是input type='email' 的类型
    'my_email' =>[
        'dbtype'=> 'String',
        'label'=>'我的邮箱',
        'name'=>'my_email',
        'require' => 0,
        'display'=>[
            'type' => 'inputEmail',      # 字符串格式的属性(email格式验证)
        ],
    ],
    # 这是input type='date' 的类型
    'my_date'  => [
        'label'=>'我的日期',
        'name'=>'my_date',
        'display'=>[
            'type' => 'inputDate',       # 字符串格式的属性(Date格式验证)
        ],
    ],
    # 这是<select> 的类型
    'style'   => [
        'dbtype'=> 'String',
        'label' =>'类型',
        'name'  =>'style',
        'display'   =>[
            'type'  =>'select',      # 下拉条选择格式的属性
            'data'  =>[
                'Casual'    => 'Casual',
                'Cute'      => 'Cute',
                'Sexy & Club'=> 'Sexy & Club',
                'Bohemian'  => 'Bohemian',
                'Vintage '  => 'Vintage ',
                'Brief'     => 'Brief',
                'Work'      => 'Work',
                'Novelty'   => 'Novelty',
            ]
        ],
    ],

    
    'dresses-length'    => [
        'dbtype'=> 'String',
        'label' =>'裙长',
        'name'  =>'dresses-length',
        'display'   =>[
            'type'  =>'select',  # 下拉条选择格式的属性
            'data'  =>[
                'Mini'  => 'Mini',
                'Knee-Length'       => 'Knee-Length',
                'Mid-Calf'=> 'Mid-Calf',
                'Ankle-Length'  => 'Ankle-Length',
                'Floor-Length '     => 'Floor-Length ',

                
            ]
        ],
    ],

    

    
    'pattern-type'  => [
        'dbtype'=> 'String',
        'label' =>'款式',
        'name'  =>'pattern-type',    # 属性名字
        'display'   =>[
            'type'  =>'select',  # 下拉条选择格式的属性
            'data'  =>[
                'Animal'    => 'Animal',
                'Character'         => 'Character',
                'Floral'=> 'Floral',
                'Geometric '    => 'Geometric ',
                'Leopard '=> 'Leopard ',
                'Letter'=> 'Letter',
                'Paisley'=> 'Paisley',
                'Patchwork'=> 'Patchwork',
                'Polka Dot'=> 'Polka Dot',
                'Print'=> 'Print',
                'Striped'=> 'Striped',

                
            ]
        ],
    ],

    
    'sleeve-length'     => [
        'dbtype'=> 'String',
        'label' =>'袖长',
        'name'  =>'sleeve-length',
        'display'   =>[
            'type'  =>'select',
            'data'  =>[
                'Sleeveless'    => 'Sleeveless',
                'Short-Sleeves'         => 'Short Sleeves',
                'Half-Sleeves'=> 'Half Sleeves',
                '3-4-Length-Sleeves '   => '3/4 Length Sleeves ',
                'Long-Sleeves '=> 'Long Sleeves ',

                
            ]
        ],
    ],

    
    'collar' => [
        'dbtype'=> 'String',
        'label' =>'领口',      # 后台显示的中文名(目前后台只有中文)
        'name'  =>'collar',
        'display'   =>[
            'type'  =>'select',
            'data'  =>[
                'Round Neck'    => 'Round Neck', # 下拉条里面对应的各个可以选择的值。
                'V-Neck'    => 'V-Neck',
                'Hooded'    => 'Hooded',
                'Turn-down-Collar'  => 'Turn-down Collar',

                
            ]
        ],
        //'require' => 0,
        //'default' => 2,
    ],
],

3、custom_options用户自定义属性,显示方式方面有点和spu属性类似,spu属性显示的方式是京东的方式,点击每一个选项是url跳转的 用户自定义类似于淘宝的方式,选择各个颜色尺码,页面是不跳转的,各个颜色尺码有相应的图片,库存,价格,sku等。 您可以查看演示地址:http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596 您可以给产品属性组添加的属性类型就上面几种,在后台编辑产品的时候,选择不同的属性组,就会加载相应的属性出来。

示例配置:

'custom_options' => [

                    
    'my_color'    => [
        'dbtype'=> 'String',  #类型
        'label' =>'My Color', # 显示的名字
        'name'  =>'color',     # 在数据库中存在的列名
        'showAsImg' => true,  # (在前端展示部分)通过图片的方式展示属性。譬如;http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596,
                              #     你会发现,该属性对应的显示方式不是值,而是产品的图片。
        'require' => 1,  # 1代表是必填选项,0代表选填
        'display'=>[
            'type' => 'select',
            'data' => [
                'red'           => 'red',
                'white'         => 'white',
                'black'         => 'black',
                'blue'          => 'blue',
                'green'         => 'green',
                'yellow'        => 'yellow',
                'gray'          => 'gray',
                'khaki'         => 'khaki',

                
                'ivory'         => 'ivory',
                'beige'         => 'beige',
                'orange'            => 'orange',
                'cyan'          => 'cyan',
                'leopard'       => 'leopard',
                'camouflage'    => 'camouflage',

                
                'silver'        => 'silver',
                'pink'          => 'pink',
                'purple'        => 'purple',
                'brown'         => 'brown',
                'golden'        => 'golden',
                'leopard'       => 'leopard',
                'multicolor'    => 'multicolor',
                'white & blue'  => 'White & Blue',
                'white & black'     => 'White & Black',
            ]
        ],

        
    ],

    
    'my_size'     => [
        'dbtype'=> 'String',
        'label' =>'My Size',
        'name'  =>'size',
        'require' => 1,
        'display'   =>[
            'type'  =>'select',
            'data'  =>[
                'S'     => 'S',
                'M'     => 'M',
                'L'     => 'L',
                'XL'    => 'XL',
                'XXL'   => 'XXL',
                'XXXL'  => 'XXXL',
            ]
        ],

        
    ],

    


],

通过链接:https://fecshop.appfront.fancyecommerce.com/reindeer-pattern-glitter-christmas-dress 。您可以看到颜色是用图片实现的,如果您想用图片显示,那么 您需要设置'showAsImg' => true 即可。 只能有一个custom_option属性设置为true,如果多个设置为true,只有一个 有效,其他的会被忽略。

上面是属性组里面的三种属性类型,分别是: spu_attr general_attrcustom_options
,我们可以通过配置的方式添加多个属性组,每一个属性组包含上面 的三种属性,譬如衣服裙子一个属性组,电脑一个属性组,手机一个属性组 等等, 通过属性组配置的方式可以很方便的扩展产品独有的属性, 在配置文件中配置好产品属性组后, 在后台 编辑产品的时候选择相应的属性组即可添加相应的属性,对于属性组里面的属性,一旦编辑后 。尽量不要经常的改动。

分类页面产品属性过滤的设置

就是前端页面侧栏的产品过滤,如图:

如何设置呢?

1、全局设置:首先打开配置文件 @appfront/config/fecshop_local_modules/Catalog.php

配置

return [
    'catalog' => [
        'params'=> [
            ###############################
            ##      category部分设置     ##
            ###############################
            'category_breadcrumbs' => false, # 是否显示分类的面包屑导航。
            /**
             * 注意:做侧栏分类产品过滤的属性,必须是select类型的,其他的类型请不要用,
             * 对于select类型,目前不支持多语言数据库存储,select类型的各个值是通过前端翻译文件来实现翻译的、
             * 对于color  size 对应的保存值,只可以使用 '数字','字符','空格','&','-','_' 这6类字符
             */
            'category_filter_attr' =>[
                'color','size',
            ], 

            
            'category_filter_category'  => true,
            'category_filter_price'     => true,

category_filter_attr 就是配置分类侧栏的产品属性过滤,目前设置了color和size ,这里设置后是一个公用的设置,也就是所有的分类就默认为这两个属性的过滤。

category_filter_category代表侧栏是否显示分类的过滤

category_filter_price代表侧栏是否显示价格的过滤。

2、个性化设置

在上面设置的全局设置的基础上,可以进行个性化设置,后台打开分类,如图:

分类产品过滤属性:是在全局设置的基础上添加一些新的产品属性,用于分类侧栏属性过滤

分类产品非过滤属性:是在全局设置的基础上删除一些产品属性,譬如下面的图中, 添加的是size,虽然在全局设置中添加了size,但是该分类添加了size,因此该 分类侧栏的属性过滤不会有size。

通过上面,我们可以很方便的添加产品在分类侧栏的属性过滤。

搜索页面产品属性过滤的设置

1.首先设置搜索语言,@common/config/fecshop_local_services/Search.php

1.1

return [
    'search' => [
        'filterAttr' => [
            'color','size', # 在搜索页面侧栏的搜索过滤属性字段
        ],
        'childService' => [
            'mongoSearch' => [
                'searchIndexConfig'  => [ #设置用于全文搜索的产品属性以及权重,权重高的属性,排名靠前。
                    'name' => 10,    # 产品name作为full search text的属性,权重为10
                    'description' => 5,   # 产品description作为full search text的属性,权重为5
                ],  
                # more: https://docs.mongodb.com/manual/reference/text-search-languages/#text-search-languages
                'searchLang'  => [
                    'en' => 'english',
                    'fr' => 'french',
                    'de' => 'german',
                    'es' => 'spanish',
                    'ru' => 'russian',
                    'pt' => 'portuguese',
                ],
            ],
            'xunSearch'  => [
                'fuzzy' => true,  # 是否开启模糊查询
                'synonyms' => true, #是否开启同义词翻译
                'searchLang'    => ['zh'],
            ],
        ],
    ]
];

1.1 filterAttr是添加在搜索页面侧栏用于过滤的产品属性。

1.2 searchIndexConfig是设置用于全文搜索的产品属性以及权重,权重高的属性,排名靠前。

1.3 searchLang是设置搜索的语言,全文搜索是需要根据语言切词的, 因此各个语言的搜索会略有差异,根据各个语言,生成对应的产品语言搜索表。

2.生成搜索表

首先需要根据上面的配置文件,设置您的所有的语言。也就是上面的searchLang

每一个语言对应一个产品搜索表,这是因为mongodb的full text search,一个表只能有一个 语言选项,因此需要生成多个产品搜索表,生成的脚本为:

@fecshop/shell/search/fullSearchSync.sh,您进入@fecshop/shell/search下 执行sh fullSearchSync.sh即可。

设置产品的自定义属性

产品的自定义属性如图:

1.产品的自定义有方式,京东模式和淘宝模式

1.1京东模式:类似于京东的产品,选择每一个选项后,页面会跳转到另外一个url页面, 也就是说:每一个选项就是一个产品(在数据库产品表中是一行数据)。

1.2淘宝模式:类似于淘宝商城的产品,选择一个选项后,产品页面不会跳转。

2.下面详细说明:

2.1京东模式:这种模式,需要引入sku和spu的概念,关于这个概念在上面已经说明。 譬如页面(演示demo):http://fecshop.appfront.fancyecommerce.com/index.php/raglan-sleeves-letter-printed-crew-neck-sweatshirt-53386451-77774122

2.1.1配置:首先需要设置一个属性组,上面的内容已经说明,在配置文件中添加, 需要注意的spu属性不能超过两个(spu属性组合的复杂性)。

2.1.2新建产品,选择对应的属性组,如图

就可以查看到这个属性组中的属性,填写值即可。

填写sku和spu,需要注意的是,您新建的该款产品的spu必须相同,sku不同,一般用您的 spu+spu属性的值组合成sku,如图,我新建的spu对应的几个sku产品。

2.1.3 按照上面如图的方式配置完成后,基本就完成了配置,在前台就可以看到了。

2.2淘宝模式,演示demo:http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596

2.2.1配置:需要在属性组里面配置 custom_options用户自定义属性,这个在上面已经 说明如何配置,您可以参考上面的说明中的文件中的例子进行修改。

2.2.2后台编辑

在属性组中添加了 custom_options用户自定义属性,在新建产品的时候点击添加,弹出产品编辑的弹框, 选择相应的属性组,然后点击 “自定义信息”,如图:

勾选,填写各个属性的值,以及选择图片,最后点击+号图标,就可以添加一行, 添加完了,保存,就可以到产品详细页面看了,譬如产品 http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596

如果某些组合,您没有添加,就会看到某些选项是虚线标示,如果没有库存,也会虚线标示。 对于该产品,产品sku的库存会无效,产品自定义部分的库存才是相应选项的库存 ,当该产品被下单后,也是在该选项对应的qty部分减少产品的库存,而不是sku的库存(qty)

产品价格

成本价格:代表产品的成本,也就是采购在fecshop中,只是记录一下,没有其他用处, 当然,您可以通过脚本,生成您的出售价格。

销售价格:也就是产品在页面显示的价格

销售特价:产品的特价,当设置了产品的特价,而且特价时间没有过期,则特价是有效的, 当销售特价有效时,销售价格就会失效。

特价开始时间:产品销售特价开始的时间

特检结束时间:产品销售特价结束的时间

Tier Price: 批发价格

规定产品购买几个以上的价格。譬如购物2个以上17美元,购买4个以上16美元。

对于在产品分类页面显示的产品的几个都是一个产品的价格。产品中有一个最终价格, 是通过脚本计算出来的,这个最终价格用于在分类页面的价格排序以及价格过滤,该脚本一天跑一次。 文件为: @fecshop/shell/computeProductFinalPrice.sh, 可以在cron中配置该脚本一天跑一次。

产品导入和导出

目前后台还没有做这个功能。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号