# H-44 我的最愛 Product 列表頁 > [name=Tony Fan] ###### tags: `H我的最愛` `頁面分析` ## 重點摘要 * www的Favorite List和BU的Favorite List,頁面各種邏輯並無差異,差別只差在未登入或SU與已登入。 * 舊案把已登入買主導入BU,未登入或純供應商導入www的最愛頁面。 * 如同 `HEADER元件 Favorite Menu` 一樣,都只要靠header-service的指令就能取得最愛產品或供應商的資料與明細: ``` window.headerEntry.getMyFavorites() ``` * 由於頁面比起 `HEADER元件 Favorite Menu` 多了篩選排序分頁的功能,因此[擴充`getMyFavorites`](https://docs.google.com/spreadsheets/d/12U90GlZtqTFVemxzp5lFCv5l_eAZchVlOJN6xbRxDLI/edit#gid=785992005&range=A39:B39)來處理: ``` window.headerEntry.getMyFavoritesByCondition([DataType],[Show],[Sort By],[Page],[Rows]) ``` ## API 清單 No | API | Desc | 執行順序 | 執行條件 | 參考 ---|---------|----------------------------|----------|---------------------------------------|------ 1 | [L01](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?both#L01-%E5%8F%96%E5%BE%97%E6%9C%83%E5%93%A1%E8%B3%87%E6%96%99-API) | 取得會員資料 | 1 | page init | 無 2 | [URI-A-02](https://hackmd.io/Cbw7V8AETEOzCk4s7TgfwA) | prepare 多語標籤 | 2 | page init | [附註-多語標籤](#多語標籤) 3 | [L01](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%8F%96%E5%BE%97Favorite%E8%B3%87%E6%96%99-API) | 取得Favorite資料(特定條件篩選) | 2 | page init | 無 4 | [L01](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%88%AA%E9%99%A4Favorite%E8%B3%87%E6%96%99-API) | 刪除Favorite資料 | None | on remove | 無 5 | [URI046](https://hackmd.io/C0_27LhmTD6m9qV_DahhTQ) | SEO資料 | 2 | page init | [附註-SEO資料](#SEO資料) ## 原頁面網址 - https://www.taiwantrade.com/favoriteProductlist ![](https://i.imgur.com/W86s9rf.png) - https://www.taiwantrade.com/favoriteProductlist?page=1&rows=2 ![](https://i.imgur.com/gzIgfQi.png) ## 原頁面 URL 解析 * `${domain}/favoriteProductlist` * domain: 網域 * `${domain}/favoriteProductlist?page=[page]&rows=[rows]` * domain: 網域 * page: * API欄位:[page] ([L01 - 取得Favorite資料](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%8F%96%E5%BE%97Favorite%E8%B3%87%E6%96%99-API) ) * rows: * API欄位:[row] ([L01 - 取得Favorite資料](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%8F%96%E5%BE%97Favorite%E8%B3%87%E6%96%99-API) ) ## 頁面解說圖 ### 頁面區塊說明 以區塊方式說明使用到的 API ![](https://i.imgur.com/17uCdQF.png) <div id="B_H-44-01"></div> * H-44-01 * 共用區塊: Header Service元件, 參考[`A-01 Header元件分析`](https://hackmd.io/aA5DMa_GTQqoolRC2B8ohw) * 導頁判斷機制:當登入的使用者是BU身份,必須導頁到BU。參考[頁面邏輯說明 導頁](#導頁) * H-44-02 * 同 H-44-01,Header Service元件中取得常駐列(Perma Column)的部分 * H-44-03 * Favorites * [多語標籤](#多語標籤): watchlist * Products * menu項目需要 highlight效果 * [多語標籤](#多語標籤): products * 括號內數字:代表我的最愛產品數字,數字等同於`個人化計算`的最愛產品數字 * Suppliers * 連結到 [H-46 我的最愛 Supplier 列表頁](https://hackmd.io/TZO1EHOTR7GJ1ZOp7xILlw) :https://{domain}/favoriteSupplierlist * [多語標籤](#多語標籤): suppliers * 括號內數字:代表我的最愛供應商數字,數字等同於`個人化計算`的最愛供應商數字 * H-44-04 * Product List * [多語標籤](#多語標籤): productlist <div id="B_H-44-05"></div> * H-44-05 ![](https://i.imgur.com/Nav5ir9.png) 1. Contact Supplier:帶入勾選項目,導入 [H44A Contact Us(PRODUCT)頁](https://hackmd.io/07IcP_hKT-eTCAdJ-FgLFg) * [多語標籤](#多語標籤): contactsupplier * 機制:可複選但至少要選擇1筆最愛產品,且必須小於`ContactLimit`(目前是20),否則跳出警告,或是disable按鈕 * 導入URL:https://{domain}/contact/PRODUCT?contactType=PRODUCT&productIds%5B[產品ID]%5D=[語系ID]&productIds... * [參數] 請參見 [頁面欄位說明 H-44-07 checkbox](#C_H-44-07_1) * e.g.: https://www.taiwantrade.com/contact/PRODUCT?contactType=PRODUCT&contactType=PRODUCT&productIds%5B2045421%5D=42&productIds%5B2295801%5D=42 2. Compare:帶入勾選項目,導入[H-45 我的最愛(PRODUCT)比較頁](https://hackmd.io/LxZm4SObSISeMEoINEqlFg) * [多語標籤](#多語標籤): compare * 機制:可複選但至少要選擇2筆最愛產品,且必須小於`CompareLimit`(目前是20),否則跳出警告,或是disable按鈕 * 導入URL:https://{domain}/favoriteProductcompare * 方法:POST * Form (x-www-form-urlencode): * favoriteType=PRODUCT * rowIds=[產品ID] * rowIds=[產品ID] * rowIds=... * [參數] 請參見 [頁面欄位說明 H-44-07 checkbox](#C_H-44-07_1) * e.g.: [POST] https://www.taiwantrade.com/favoriteSuppliercompare * favoriteType=PRODUCT * rowIds=2295801 * rowIds=2045421 3. Remove:帶入勾選項目,刪除我的最愛(PRODUCT) * [多語標籤](#多語標籤): remove * 機制:可複選但至少要選擇1筆最愛產品,否則跳出警告,或是disable按鈕 * 使用:呼叫js method,參考[規格](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%88%AA%E9%99%A4Favorite%E8%B3%87%E6%96%99-API) ``` window.headerEntry.removeMyFavorites([產品ID],'PRODUCT',[語系ID],[產品URL]) ``` * [參數] 請參見 [頁面欄位說明 H-44-07 checkbox](#C_H-44-07_1) <div id="B_H-44-06"></div> * H-44-06 * Show: * [多語標籤](#多語標籤): show * API欄位:[show-by] * 選項: * All * API值:(不輸入或空值) * [多語標籤](#多語標籤): all * Not contacted yet * API值:false * [多語標籤](#多語標籤): notcontactedyet * contacted * API值:true * [多語標籤](#多語標籤): contacted ![](https://i.imgur.com/5ncpBFk.png) * Sort By: * API欄位:[sort-by] * 選項: * Added Time New to Old * API值:(不輸入或空值) 或 aNtO * [多語標籤](#多語標籤): addedtimenewtoold * Added Time Old to New * API值:aOtN * [多語標籤](#多語標籤): addedtimeoldtonew * Contact Time New to Old * API值:cNtO * [多語標籤](#多語標籤): contacttimenewtoold * Contact Time Old to New * API值:cOtN * [多語標籤](#多語標籤): contacttimeoldtonew ![](https://i.imgur.com/Gu9gXXn.png) * H-44-07 * 透過 頁面URL參數(page & rows) 和 H-44-06(或09) 和 H-44-08 所選的選項,帶入 [L01](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%8F%96%E5%BE%97Favorite%E8%B3%87%E6%96%99-API) 取得Favorite資料 * 列表項目對應參考:[頁面欄位說明 H-44-07](#H-44-07) <div id="B_H-44-08"></div> * H-44-08 * Preview: * [多語標籤](#多語標籤): previous * API欄位:[page] * API值:當前頁數-1 * 總頁數>當前頁數+1,按鈕效果disable * 頁數: * API欄位:Rows:每頁幾筆 * API值:頁數數字 * Next: * [多語標籤](#多語標籤): next * API欄位:[page] * API值:當前頁數+1 * 總頁數<當前頁數+1,按鈕效果disable * H-44-09 * 同 H-44-05 * H-44-10 ![](https://i.imgur.com/5keESQY.png) * [多語標籤](#多語標籤): `yourcansendupto` + ContactLimit(目前是20) +` contactsatonce` + '(' + [checkbox選取筆數] + ')' ### 頁面欄位說明 區塊中使用到的欄位對應 #### H-44-07 透過 [頁面URL參數(page & rows)](#原頁面-URL-解析) 和 [頁面區塊說明 H-44-06(或09)](#B_H-44-06) 和 [頁面區塊說明 H-44-08](#B_H-44-08) 所選的選項參數,帶入 [L01 - 取得Favorite資料](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#L01-%E5%8F%96%E5%BE%97Favorite%E8%B3%87%E6%96%99-API) ``` window.headerEntry.getMyFavoritesByCondition('PRODUCT',[show-by],[order-type],[page],20) ``` 將Output結果依序顯示於此區塊中,對應API欄位與多語標籤如下: ![](https://i.imgur.com/vVwLcWR.png) <div id="C_H-44-07_1"></div> 1. checkbox: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`productId` 和 `languageId` - 在 [區塊 H-44-05](#B_H-44-05) 中,勾選的checkbox用`productId` 作為[產品ID],用`languageId`作為[語言ID]導入按鈕所執行的動作 - 可以用hidden input儲存,或是用html data tag例如下(xsl): ```=xsl <input type="checkbox" name="productId" data-language-id="{field[@name='languageId']}" value="{field[@name='productId']}" /> ``` 2. 圖片 - img src: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`primaryPicture100` - 若url無路徑則顯示一張空白圖片例如 ![blank](https://i.imgur.com/KR9j9cv.png) - img title: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`productName` - img alt: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`productName` 3. 產品名稱: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`productName` - 超連結: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`url` 4. Certification:(API欄位有值才顯示此項目) - [多語標籤](#多語標籤): `certifications` - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`certifications` 5. Made In:(API欄位有值才顯示此項目) - [多語標籤](#多語標籤): `madein` - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`countryName` 6. Suppliers:(API欄位`companyName`有值才顯示此項目) - [多語標籤](#多語標籤): `suppliers` - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`companyName` - 超連結: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`companyCpUrl` 7. 產品描述:(API欄位`descFull`有值才顯示此項目) - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`descFull` - more: - 標籤: more - 動作: 收合為兩行或展開全段落顯示 8. 產品規格:(API欄位`specList`有值才顯示此項目) - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`specList` - 每個規格一個表: - 規格名(標題): - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`specList`[i].`name` - 規格值(內容): - 表格每行列出:[API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`specList`[i].`items` 9. Min. Order:(API欄位`minOrder`有值才顯示此項目) - [多語標籤](#多語標籤): `ez_minorder` - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`minOrder` + ' ' + `unitName` 11. 販售價格: - API欄位`isDiscount`無值顯示或不為1: - 免運標註: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`isFreeShipping` 有值且為1: - 顯示![](https://i.imgur.com/0t9koOW.png) + [多語標籤](#多語標籤): `ez_freeshipping` - 價格: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):$ `price` / `unitName` - API欄位`isDiscount`有值且為1: - 舊價格: - 用刪除號劃掉表示為舊價格 - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):$ `oldPrice` / `unitName` 12. 販售價格(折扣):(API欄位`isDiscount`有值且為1,顯示此項目) - 折扣: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`discount` + ![](https://i.imgur.com/r6leqyK.png) - 折扣剩餘天數: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`discountCountDown` - 免運標註: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`isFreeShipping` 有值且為1: - 顯示![](https://i.imgur.com/0t9koOW.png) + [多語標籤](#多語標籤): `ez_freeshipping` - 價格: - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):$ `price` / `unitName` 13. Added(加入日期): - [多語標籤](#多語標籤): `added` - [API欄位](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?view#%E7%94%A2%E5%93%81%E6%AC%84%E4%BD%8D):`createTime` ## 頁面邏輯說明 請見 [頁面解說圖 頁面欄位說明](#頁面欄位說明) 各欄說明 以下僅列出特別需要注意的頁面邏輯 ### 導頁 載入頁面時,在 [頁面區塊說明 H-44-01](#B_H-44-01)載入後, 呼叫 [L01 - 取得會員資料](https://hackmd.io/D1GVQJmcSKGzdMUT-28Owg?both#L01-%E5%8F%96%E5%BE%97%E6%9C%83%E5%93%A1%E8%B3%87%E6%96%99-API) 回傳欄位`companyType`,如果會員身份是BU或ALL,則導入BU 我的最愛產品 * BU:https://bu.taiwantrade.com/favProdList ![](https://i.imgur.com/JlQ4qbJ.png) 否則,繼續此頁(僅供應商SU身份,或是未登入狀態) * FRONT:https://www.taiwantrade.com/favoriteProductlist ![](https://i.imgur.com/zlb57xa.png) ### SEO資料 比照AEM舊案,在HEAD TAG 內植入的SEO資料 參考 [API URI046](https://hackmd.io/C0_27LhmTD6m9qV_DahhTQ) General類的頁面代碼 指定為 FAVORITES_PRODUCT_LIST ## 附註 ### 多語標籤 需要多語標籤,請參考下圖圖示所表示的參數`code`值 透過 [多語標籤 API](https://hackmd.io/Cbw7V8AETEOzCk4s7TgfwA) 取得翻譯名稱。 取得後,請參考頁面欄位說明或是以下圖示,填入所需的標籤`code`對應的`name` 以下列出此頁面所需的所有`code`: - watchlist - products - suppliers - productlist - contactsupplier - compare - remove - show - all - notcontactedyet - contacted - addedtimenewtoold - addedtimeoldtonew - contacttimenewtoold - contacttimeoldtonew - previous - next - yourcansendupto - contactsatonce 頁面欄位說明 - certifications - madein - suppliers - ez_minorder - ez_freeshipping - added