作為電商系統(tǒng),很多地方都是圍繞產(chǎn)品展開的,譬如產(chǎn)品分類,產(chǎn)品搜索,產(chǎn)品評(píng)論,
產(chǎn)品收藏,購(gòu)物車產(chǎn)品,訂單產(chǎn)品等等。
產(chǎn)品除了價(jià)格,名字,庫(kù)存等一些公用的屬性外, 產(chǎn)品根據(jù)不同的分類,會(huì)有一些獨(dú)有的屬性, 譬如電腦類產(chǎn)品會(huì)有cpu型號(hào),主板型號(hào)等屬性, 衣服類有顏色尺碼等屬性,在這里引入產(chǎn)品屬性組的概念, 一類產(chǎn)品從屬于一個(gè)屬性組。
屬性組的配置:
打開文件:@common/config/fecshop_local_services/Product.php
文件
可以看到對(duì)屬性組的配置
配置文件的內(nèi)容太多,這么不貼出來的,您可以打開這個(gè)文件查看具體內(nèi)容,里面有注釋
屬性組里面的屬性有類別,目前有三個(gè)類:
1、spu_attr
1.1 spu和sku的概念:sku是產(chǎn)品的唯一標(biāo)示,最小庫(kù)存單位,譬如一款鞋子為一個(gè)spu,這款鞋子的不同的顏色和不同的尺碼為一個(gè)sku,
1.2 什么是spu屬性(spu_attr
),當(dāng)一款鞋子的不同的sku是顏色和尺碼的不同,那么顏色和尺碼就是這款鞋子的spu屬性(spu_attr)。
1.3 spu_attr
是用來在產(chǎn)品詳細(xì)頁(yè)面,將這個(gè)spu下面的所有sku串聯(lián)起來,譬如頁(yè)面:http://fecshop.appfront.fancyecommerce.com/index.php/raglan-sleeves-letter-printed-crew-neck-sweatshirt-53386451-77774122
訪問這款衣服的每一個(gè)SKU,都會(huì)把其他的sku列出來,點(diǎn)擊后,就進(jìn)去其他sku的頁(yè)面,您會(huì)發(fā)現(xiàn)url是變化的,這個(gè)是類似于京東的方式。
注意:
1.3.1 因?yàn)榻M合的復(fù)雜性,spu attr
最多設(shè)置2個(gè)屬性,不能超過2個(gè)(如果超過會(huì)出問題。spu屬性會(huì)都不顯示),超過兩個(gè)請(qǐng)使用customer_option的方式。也就是類似于淘寶的方式。
1.3.2 這里的屬性需要嚴(yán)格按照下面的格式進(jìn)行配置,如果您想配置自己的spu屬性,那么
1.3.3 通過鏈接:https://fecshop.appfront.fancyecommerce.com/raglan-sleeves-letter-printed-crew-neck-sweatshirt-41214715 您可以看到,color屬性是用圖片來顯示的, 在spu_attr中,第一個(gè)屬性默認(rèn)用圖片顯示,譬如:
'spu_attr' => [ # spu用來區(qū)分sku的屬性,譬如下面的屬性的不同,對(duì)應(yīng)不同的sku,進(jìn)而是不同的庫(kù)存
# 第一個(gè)屬性會(huì)被用戶當(dāng)做圖片來顯示。
'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,
],
# 第二個(gè)屬性不會(huì)當(dāng)做圖片來顯示
'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 將會(huì)被當(dāng)做圖片來顯示出來。
2、general_attr(普通屬性),可以是各種格式的值,譬如時(shí)間格式,email格式,下拉條選擇值等。這些屬性可以用于分類側(cè)欄屬性過濾。
示例配置:
'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格式驗(yàn)證)
],
],
# 這是input type='date' 的類型
'my_date' => [
'label'=>'我的日期',
'name'=>'my_date',
'display'=>[
'type' => 'inputDate', # 字符串格式的屬性(Date格式驗(yàn)證)
],
],
# 這是<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' =>'裙長(zhǎng)',
'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' =>'袖長(zhǎng)',
'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' =>'領(lǐng)口', # 后臺(tái)顯示的中文名(目前后臺(tái)只有中文)
'name' =>'collar',
'display' =>[
'type' =>'select',
'data' =>[
'Round Neck' => 'Round Neck', # 下拉條里面對(duì)應(yīng)的各個(gè)可以選擇的值。
'V-Neck' => 'V-Neck',
'Hooded' => 'Hooded',
'Turn-down-Collar' => 'Turn-down Collar',
]
],
//'require' => 0,
//'default' => 2,
],
],
3、custom_options用戶自定義屬性,顯示方式方面有點(diǎn)和spu屬性類似,spu屬性顯示的方式是京東的方式,點(diǎn)擊每一個(gè)選項(xiàng)是url跳轉(zhuǎn)的
用戶自定義類似于淘寶的方式,選擇各個(gè)顏色尺碼,頁(yè)面是不跳轉(zhuǎn)的,各個(gè)顏色尺碼有相應(yīng)的圖片,庫(kù)存,價(jià)格,sku等。
您可以查看演示地址:http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596
您可以給產(chǎn)品屬性組添加的屬性類型就上面幾種,在后臺(tái)編輯產(chǎn)品的時(shí)候,選擇不同的屬性組,就會(huì)加載相應(yīng)的屬性出來。
示例配置:
'custom_options' => [
'my_color' => [
'dbtype'=> 'String', #類型
'label' =>'My Color', # 顯示的名字
'name' =>'color', # 在數(shù)據(jù)庫(kù)中存在的列名
'showAsImg' => true, # (在前端展示部分)通過圖片的方式展示屬性。譬如;http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596,
# 你會(huì)發(fā)現(xiàn),該屬性對(duì)應(yīng)的顯示方式不是值,而是產(chǎn)品的圖片。
'require' => 1, # 1代表是必填選項(xiàng),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
。您可以看到顏色是用圖片實(shí)現(xiàn)的,如果您想用圖片顯示,那么
您需要設(shè)置'showAsImg' => true
即可。
只能有一個(gè)custom_option屬性設(shè)置為true,如果多個(gè)設(shè)置為true,只有一個(gè)
有效,其他的會(huì)被忽略。
上面是屬性組里面的三種屬性類型,分別是:
spu_attr
general_attr
和 custom_options
,我們可以通過配置的方式添加多個(gè)屬性組,每一個(gè)屬性組包含上面
的三種屬性,譬如衣服裙子一個(gè)屬性組,電腦一個(gè)屬性組,手機(jī)一個(gè)屬性組
等等,
通過屬性組配置的方式可以很方便的擴(kuò)展產(chǎn)品獨(dú)有的屬性,
在配置文件中配置好產(chǎn)品屬性組后,
在后臺(tái)
編輯產(chǎn)品的時(shí)候選擇相應(yīng)的屬性組即可添加相應(yīng)的屬性,對(duì)于屬性組里面的屬性,一旦編輯后
。盡量不要經(jīng)常的改動(dòng)。
就是前端頁(yè)面?zhèn)葯诘漠a(chǎn)品過濾,如圖:
如何設(shè)置呢?
1、全局設(shè)置:首先打開配置文件
@appfront/config/fecshop_local_modules/Catalog.php
配置
return [
'catalog' => [
'params'=> [
###############################
## category部分設(shè)置 ##
###############################
'category_breadcrumbs' => false, # 是否顯示分類的面包屑導(dǎo)航。
/**
* 注意:做側(cè)欄分類產(chǎn)品過濾的屬性,必須是select類型的,其他的類型請(qǐng)不要用,
* 對(duì)于select類型,目前不支持多語(yǔ)言數(shù)據(jù)庫(kù)存儲(chǔ),select類型的各個(gè)值是通過前端翻譯文件來實(shí)現(xiàn)翻譯的、
* 對(duì)于color size 對(duì)應(yīng)的保存值,只可以使用 '數(shù)字','字符','空格','&','-','_' 這6類字符
*/
'category_filter_attr' =>[
'color','size',
],
'category_filter_category' => true,
'category_filter_price' => true,
category_filter_attr 就是配置分類側(cè)欄的產(chǎn)品屬性過濾,目前設(shè)置了color和size ,這里設(shè)置后是一個(gè)公用的設(shè)置,也就是所有的分類就默認(rèn)為這兩個(gè)屬性的過濾。
category_filter_category
代表側(cè)欄是否顯示分類的過濾
category_filter_price
代表側(cè)欄是否顯示價(jià)格的過濾。
2、個(gè)性化設(shè)置
在上面設(shè)置的全局設(shè)置的基礎(chǔ)上,可以進(jìn)行個(gè)性化設(shè)置,后臺(tái)打開分類,如圖:
分類產(chǎn)品過濾屬性:是在全局設(shè)置的基礎(chǔ)上添加一些新的產(chǎn)品屬性,用于分類側(cè)欄屬性過濾
分類產(chǎn)品非過濾屬性:是在全局設(shè)置的基礎(chǔ)上刪除一些產(chǎn)品屬性,譬如下面的圖中, 添加的是size,雖然在全局設(shè)置中添加了size,但是該分類添加了size,因此該 分類側(cè)欄的屬性過濾不會(huì)有size。
通過上面,我們可以很方便的添加產(chǎn)品在分類側(cè)欄的屬性過濾。
1.首先設(shè)置搜索語(yǔ)言,@common/config/fecshop_local_services/Search.php
1.1
return [
'search' => [
'filterAttr' => [
'color','size', # 在搜索頁(yè)面?zhèn)葯诘乃阉鬟^濾屬性字段
],
'childService' => [
'mongoSearch' => [
'searchIndexConfig' => [ #設(shè)置用于全文搜索的產(chǎn)品屬性以及權(quán)重,權(quán)重高的屬性,排名靠前。
'name' => 10, # 產(chǎn)品name作為full search text的屬性,權(quán)重為10
'description' => 5, # 產(chǎn)品description作為full search text的屬性,權(quán)重為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
是添加在搜索頁(yè)面?zhèn)葯谟糜谶^濾的產(chǎn)品屬性。
1.2
searchIndexConfig
是設(shè)置用于全文搜索的產(chǎn)品屬性以及權(quán)重,權(quán)重高的屬性,排名靠前。
1.3
searchLang
是設(shè)置搜索的語(yǔ)言,全文搜索是需要根據(jù)語(yǔ)言切詞的,
因此各個(gè)語(yǔ)言的搜索會(huì)略有差異,根據(jù)各個(gè)語(yǔ)言,生成對(duì)應(yīng)的產(chǎn)品語(yǔ)言搜索表。
2.生成搜索表
首先需要根據(jù)上面的配置文件,設(shè)置您的所有的語(yǔ)言。也就是上面的searchLang
。
每一個(gè)語(yǔ)言對(duì)應(yīng)一個(gè)產(chǎn)品搜索表,這是因?yàn)閙ongodb的full text search,一個(gè)表只能有一個(gè) 語(yǔ)言選項(xiàng),因此需要生成多個(gè)產(chǎn)品搜索表,生成的腳本為:
@fecshop/shell/search/fullSearchSync.sh
,您進(jìn)入@fecshop/shell/search下
執(zhí)行sh fullSearchSync.sh
即可。
產(chǎn)品的自定義屬性如圖:
1.1京東模式:類似于京東的產(chǎn)品,選擇每一個(gè)選項(xiàng)后,頁(yè)面會(huì)跳轉(zhuǎn)到另外一個(gè)url頁(yè)面, 也就是說:每一個(gè)選項(xiàng)就是一個(gè)產(chǎn)品(在數(shù)據(jù)庫(kù)產(chǎn)品表中是一行數(shù)據(jù))。
1.2淘寶模式:類似于淘寶商城的產(chǎn)品,選擇一個(gè)選項(xiàng)后,產(chǎn)品頁(yè)面不會(huì)跳轉(zhuǎn)。
2.1京東模式:這種模式,需要引入sku和spu的概念,關(guān)于這個(gè)概念在上面已經(jīng)說明。 譬如頁(yè)面(演示demo):http://fecshop.appfront.fancyecommerce.com/index.php/raglan-sleeves-letter-printed-crew-neck-sweatshirt-53386451-77774122
2.1.1配置:首先需要設(shè)置一個(gè)屬性組,上面的內(nèi)容已經(jīng)說明,在配置文件中添加, 需要注意的spu屬性不能超過兩個(gè)(spu屬性組合的復(fù)雜性)。
2.1.2新建產(chǎn)品,選擇對(duì)應(yīng)的屬性組,如圖
就可以查看到這個(gè)屬性組中的屬性,填寫值即可。
填寫sku和spu,需要注意的是,您新建的該款產(chǎn)品的spu必須相同,sku不同,一般用您的 spu+spu屬性的值組合成sku,如圖,我新建的spu對(duì)應(yīng)的幾個(gè)sku產(chǎn)品。
2.1.3 按照上面如圖的方式配置完成后,基本就完成了配置,在前臺(tái)就可以看到了。
2.2淘寶模式,演示demo:http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596
2.2.1配置:需要在屬性組里面配置 custom_options用戶自定義屬性
,這個(gè)在上面已經(jīng)
說明如何配置,您可以參考上面的說明中的文件中的例子進(jìn)行修改。
2.2.2后臺(tái)編輯
在屬性組中添加了 custom_options用戶自定義屬性
,在新建產(chǎn)品的時(shí)候點(diǎn)擊添加,彈出產(chǎn)品編輯的彈框,
選擇相應(yīng)的屬性組,然后點(diǎn)擊 “自定義信息”,如圖:
勾選,填寫各個(gè)屬性的值,以及選擇圖片,最后點(diǎn)擊+號(hào)圖標(biāo),就可以添加一行,
添加完了,保存,就可以到產(chǎn)品詳細(xì)頁(yè)面看了,譬如產(chǎn)品
http://fecshop.appfront.fancyecommerce.com/index.php/reindeer-pattern-glitter-christmas-dress-86519596
如果某些組合,您沒有添加,就會(huì)看到某些選項(xiàng)是虛線標(biāo)示,如果沒有庫(kù)存,也會(huì)虛線標(biāo)示。 對(duì)于該產(chǎn)品,產(chǎn)品sku的庫(kù)存會(huì)無效,產(chǎn)品自定義部分的庫(kù)存才是相應(yīng)選項(xiàng)的庫(kù)存 ,當(dāng)該產(chǎn)品被下單后,也是在該選項(xiàng)對(duì)應(yīng)的qty部分減少產(chǎn)品的庫(kù)存,而不是sku的庫(kù)存(qty)
成本價(jià)格:代表產(chǎn)品的成本,也就是采購(gòu)在fecshop中,只是記錄一下,沒有其他用處, 當(dāng)然,您可以通過腳本,生成您的出售價(jià)格。
銷售價(jià)格:也就是產(chǎn)品在頁(yè)面顯示的價(jià)格
銷售特價(jià):產(chǎn)品的特價(jià),當(dāng)設(shè)置了產(chǎn)品的特價(jià),而且特價(jià)時(shí)間沒有過期,則特價(jià)是有效的, 當(dāng)銷售特價(jià)有效時(shí),銷售價(jià)格就會(huì)失效。
特價(jià)開始時(shí)間:產(chǎn)品銷售特價(jià)開始的時(shí)間
特檢結(jié)束時(shí)間:產(chǎn)品銷售特價(jià)結(jié)束的時(shí)間
Tier Price: 批發(fā)價(jià)格
規(guī)定產(chǎn)品購(gòu)買幾個(gè)以上的價(jià)格。譬如購(gòu)物2個(gè)以上17美元,購(gòu)買4個(gè)以上16美元。
對(duì)于在產(chǎn)品分類頁(yè)面顯示的產(chǎn)品的幾個(gè)都是一個(gè)產(chǎn)品的價(jià)格。產(chǎn)品中有一個(gè)最終價(jià)格, 是通過腳本計(jì)算出來的,這個(gè)最終價(jià)格用于在分類頁(yè)面的價(jià)格排序以及價(jià)格過濾,該腳本一天跑一次。 文件為: @fecshop/shell/computeProductFinalPrice.sh, 可以在cron中配置該腳本一天跑一次。
目前后臺(tái)還沒有做這個(gè)功能。
更多建議: