# B-5 非販售產品詳細頁 > [name=JasonWu] ###### tags: `CP頁` ## 舊功能網址 - https://www.ttstaging.com.tw/product/1893926 ## 相關示意圖 ![](https://i.imgur.com/1meSpHR.jpg) ## 頁面顯示相關(呼叫 API,取得頁面樣式) - SeoMeta 資訊 - 透過 api 取得頁面所需的 meta 資訊 - 麵包屑 - 透過 api 取得麵包屑 - 型錄資訊 - 透過 api 取得產品名稱, 型號資訊等資訊 - 型錄多媒體 - 透過 api 取得型錄大圖, 型錄小圖, 3D, 360, Video 等資訊 - tab 區塊,切換顯示 - 固定內容,未販售只顯示 "Product Detail" 與 "Company Profile" 兩個 tab - 型錄 Detail 資訊 - 參考型錄資訊 - 廠商資訊 - 透過 api 取得廠商相關資料 - 聯繫廠商 - 推薦型錄 ## 頁面操作相關(頁面按鈕、點選相關邏輯) - SeoMeta 資訊 - 麵包屑 - 型錄資訊 - 連結到廠商的 ep 頁面或是 front 公司詳目頁 - 組合出 RFQ 連結 - Contact Supplier 跳轉 - 型錄 Add to favorite 連結 - 型錄多媒體 - 型錄大圖放大效果 - 型錄大圖 Zoom in 效果 - 型錄小圖捲動效果 - 3D, 360, Video 燈箱效果 - tab 區塊,切換顯示 - 點選切換顯示資料 - 型錄 Detail 資訊 - 切換 Tab 顯示資訊 - 型錄認證燈箱效果 - 廠商資訊 - 連結到廠商的 ep 頁面或是 front 公司詳目頁 - 廠商 Add to favorite - 廠商 Other Products 推薦 - 公司認證燈箱效果 - 公司工廠圖片燈箱效果 - 判斷是否有登入,來決定顯示那些廠商資訊 - 聯繫廠商 - 推薦型錄 - 警語 - 檢查型錄相關資訊,決定是否要顯示警語 ## 頁面顯示相關邏輯(呼叫 API,取得頁面樣式) ### SeoMeta 資訊 - 之前相關資訊放在 xml 中傳遞 ![](https://i.imgur.com/nd2g6gV.jpg) - 後續 html meta tag 取用 ![](https://i.imgur.com/Wt1DmGK.jpg) - 新功能透過 api 取值 - 參考 https://hackmd.io/nlZlemkdTRCC7ua4Uup8UA#meta ### 麵包屑 - 參考現有顯示方式 ![](https://i.imgur.com/X9xlXz3.jpg) - 新功能透過 api 取值 - 參考 https://hackmd.io/nlZlemkdTRCC7ua4Uup8UA#%E9%BA%B5%E5%8C%85%E5%B1%91 ### 型錄資訊 - 參考現有顯示方式,主要分兩段顯示相關資料 - 主要資訊 ![](https://i.imgur.com/WOTANxN.jpg) - 詳目資訊 ![](https://i.imgur.com/E8NUr52.jpg) - 新功能透過 api 取值 - 參考 https://hackmd.io/nlZlemkdTRCC7ua4Uup8UA#%E5%9E%8B%E9%8C%84%E8%B3%87%E8%A8%8A ### 型錄多媒體 - 參考現有顯示方式 ![](https://i.imgur.com/I5ZidhV.jpg) - 需要有一個 Enlarge 按鈕,點選後會顯示瀏覽效果 ![](https://i.imgur.com/DIAyWW3.jpg) - 新功能透過 api 取值 - 參考 https://hackmd.io/nlZlemkdTRCC7ua4Uup8UA#%E5%9E%8B%E9%8C%84%E5%A4%9A%E5%AA%92%E9%AB%94 ### 廠商資訊 - 未登入 ![](https://i.imgur.com/5JhiZMQ.jpg) - 已登入 ![](https://i.imgur.com/zCuJJIt.jpg) - 解析 json 顯示資料 - 參考文件 https://hackmd.io/WTAzi5tXQBuakQV1tkgATw?view#%E5%85%AC%E5%8F%B8%E8%81%AF%E7%B5%A1%E8%B3%87%E8%A8%8A ### 聯繫廠商 - 參考文件 https://hackmd.io/FDa_t2QwRxKoBimH6mW4qQ ### 推薦型錄 - 參考相關文件 https://hackmd.io/-912y5bWSBCAmzJKdTP-ZA?view#%E9%A0%81%E9%9D%A2%E6%93%8D%E4%BD%9C%E7%9B%B8%E9%97%9C%E9%82%8F%E8%BC%AF%E9%A0%81%E9%9D%A2%E6%8C%89%E9%88%95%E3%80%81%E9%BB%9E%E9%81%B8%E7%9B%B8%E9%97%9C%E9%82%8F%E8%BC%AF ## 頁面操作相關邏輯(頁面按鈕、點選相關邏輯) ### 型錄資訊 - 顯示畫面 ![](https://i.imgur.com/WirtySS.jpg) - 解析 json,顯示對應的資料 - 連結到廠商的 ep 頁面或是 front 公司詳目頁 - 畫面的 More About This Product 的連結 - 如果 json 中有 ep url 才顯示,點選後另開新視窗,連結 ep url - 組合出 RFQ 連結 - 畫面中的 Request for Quotation - 點選後另開新視窗,連結到 rfq 功能,該連結是固定的,目前的連結是 https://www.ttstaging.com.tw/latest-price/step1?productId=1895999 - Contact Supplier 跳轉 - 畫面中 Contact Supplier 按鈕 - 點選後,畫面捲動到下方的 Contact Supplier 區塊 - 型錄 Add to favorite 連結 - 畫面中 Add to favorites - 如果該型錄尚未被收錄到 favorite 中,顯示 Add to favorites - 如果已經收錄,顯示 Go to favorites - Add to favorites 跟 Go to favorites 的部分參考條列頁的同一段邏輯 ### 型錄多媒體 - 顯示畫面 ![](https://i.imgur.com/I5ZidhV.jpg) - 解析 json,顯示對應的資料 - 型錄大圖放大效果 - 點選 enlarge,會顯示以下的燈箱 ![](https://i.imgur.com/DIAyWW3.jpg) - 目前顯示的效果是 jquery.smoothZoom,頁面需要載入 jquery.smoothZoom.css 與 jquery.smoothZoom.js - 相關寫法 ``` $('.zoom_thumbnails').find('li a').each(function () { $(this).bind('click', { src: $(this).attr('href')}, function (e) { $('.zoom_thumbnails').find('li a').removeClass(); $(this).addClass('current'); $('#zoom_container').off('smoothZoom'); $('#zoom_container').smoothZoom('destroy').smoothZoom({ image_url: e.data.src }); return false; }); }).eq(0).trigger('click'); ``` - 型錄大圖 Zoom in 效果 - 滑鼠移動到大圖上,會有 Zoom in 的效果 ![](https://i.imgur.com/UztA1uL.jpg) - 目前顯示的效果是 jquery.elevateZoom.cover,頁面需要載入 jquery.elevateZoom.cover.js - 相關寫法 ``` $('#product-slider-gallery-for').off('beforeChange'); $('#product-slider-gallery-for').on('beforeChange', function(event, slick, currentSlide, nextSlide) { $('.zoomContainer').remove(); $('#zoom' + currentSlide).removeData('elevateZoom'); $('#zoom' + currentSlide).removeData('zoomImage'); if ($(window).width() > 768) { var naturalWidth = $('#zoom' + nextSlide).prop('naturalWidth'); var naturalHeight = $('#zoom' + nextSlide).prop('naturalHeight'); if (naturalWidth <= 360 && naturalHeight <= 360) { } else { $('#zoom' + nextSlide).elevateZoom({ responsive: true, onShow: function() { $('#product-slider-gallery-for').slick('slickPause'); }, onDestroy : function() { $('#product-slider-gallery-for').slick('slickPlay'); } }); } } }); ``` - 型錄小圖捲動效果 - 小圖捲動的圖示,先顯示 3D,然後是 360,最後是 Video - 接下來顯示小圖圖片 - 點選小圖圖片,將上面的圖替換為對應的大圖 - 小圖捲動效果如下圖 ![](https://i.imgur.com/WNORrEW.jpg) - 目前型錄捲動的效果是 slick slide,頁面需要載入 slick-utils.js - 相關寫法 ``` $('.pdPhotoShow').slick({ autoplay: true, autoplaySpeed: 4000, speed: 600, fade: true, arrows: false, dots: false, mobileFirst:true, asNavFor:'.pdPhotoNav', rtl: false, onAfterChange:function(slickSlider,i){ $('.pdPhotoNav .slick-slide').removeClass('slick-active'); $('.pdPhotoNav .slick-slide').eq(i).addClass('slick-active'); } }); ``` - 3D, 360, Video 燈箱效果 - 點選 3D, 360, Video 的時候,透過燈箱顯示對應的 url,該 url 透過 iframe 顯示在燈箱區塊中 - 點選 3D 與 360 的效果如下圖 ![](https://i.imgur.com/2LrY7jx.jpg) - 點選 Video 的效果如下圖 ![](https://i.imgur.com/PTjjIOZ.jpg) - 當打開燈箱,後方會有 mask 效果,點選 mask 的時候,關閉燈箱 - 燈箱右上角提供 X 按鈕,點選後關閉燈箱 - Video 點選後,可以撥放影片 ### tab 區塊,切換顯示 - 非販售時,固定顯示兩個 tab - Product Detail - Company Profile - 效果如下圖 ![](https://i.imgur.com/acGBDsc.jpg) - 一開始設定為 Product Detail - 點選 Company Profile 時,隱藏 Product Detail 區塊 - 第一次點選 Company Profile 時,透過 api 抓取 Company Profile,如果抓過了,不需要重抓,切換顯示區塊即可 ### 型錄 Detail 資訊 - 型錄認證燈箱效果 - 參考相關認證燈箱效果 https://hackmd.io/OFJ68AIxTfePBEeKqlGa-w ### 廠商資訊 - 連結到廠商的 ep 頁面或是 front 公司詳目頁 ![](https://i.imgur.com/PTX5rdQ.jpg) - 如果該公司有 ep 相關頁面,點選連結會開啟新視窗,連結到 ep 首頁 - 如果該公司沒有 ep 相關頁面,會連結到 front company cp 頁 - 廠商 Add to favorite ![](https://i.imgur.com/PTX5rdQ.jpg) - 如果該公司沒有加入過 favorite,顯示 Add to favorite - 如果該公司有加入過 favorite,顯示 Go to favorite - 參考現有 favorite 相關邏輯 - 廠商 Other Products 推薦 ![](https://i.imgur.com/gzWJaEd.jpg) - 解析 json 產出 Other Products 相關資訊 - 如果點選 Product,會開啟新視窗連結到該型錄的詳目頁 - All Products 按鈕也是用相同的邏輯顯示,但 All Products 不會有圖片跟下面的販售資訊,只會有名稱跟 url 而已,點選後會連結到對應的查詢頁面 - 公司相關認證燈箱效果 ![](https://i.imgur.com/kamejTh.jpg) - 請參考 Product Detail 處的燈箱效果 - 由於認證分為第三方認證、公司認證,型錄認證,其中第三方認證沒有燈箱,只有公司認證與型錄認證有燈箱 - 公司認證與型錄認證都有 All Certifications,參考上面的 All Products 效果,All Certifications 在 json 中不會有圖片,只有名稱跟 url,點選後會連結到對應的查詢頁面 - 公司工廠圖片燈箱效果 ![](https://i.imgur.com/Jka1pg1.jpg) - 公司工廠,先顯示影片,再顯示圖片 - 解析 json 內容後,如果是影片,提供撥放按鈕,可以直接撥 - 如果是圖片,先顯示小圖,點選小圖後,開啟燈箱,顯示大圖 ![](https://i.imgur.com/F1U3JPF.jpg) - 需有燈箱共同效果 - 燈箱後方有 mask,點選 mask 會關閉燈箱 - 燈箱右上角有 x,點選後關閉燈箱 - 判斷是否有登入,來決定顯示那些廠商資訊 - 沒有登入的畫面 ![](https://i.imgur.com/yFZRpb9.jpg) - 有登入的畫面 ![](https://i.imgur.com/nSdQhJe.jpg) - 除了 Onwer, Contact Person, Business Phone Number 外,其他欄位的資訊都在 json 中 - 如果有登入,另外發一個新的 ajax request 呼叫 api,回傳對應的上面三個欄位並顯示 - 可參考現有 ep api - https://hyweb.en.ttstaging.com.tw/ajaxbox/findSecretContact/v2/42/147927 #### 規格 - path : ${TT-API網址}/product/lightbox/contact/{langId}/{cid} - method : GET #### Input Column | Type | Require | Desc -----------|----------|---------|--------- langId | number | Y | 語系id cid | number | Y | 公司id #### 邏輯 - 示意圖中的藍框是名片小圖 - 點選小圖,開啟燈箱,顯示名片大圖 - 示意圖中的紅框是聯絡人小圖 - 點選小圖,開啟燈箱,顯示聯絡人大圖 ![](https://i.imgur.com/xm5YKp8.jpg) - 開啟燈箱需有共同效果 - 燈箱後方有 mask,點選 mask 會關閉燈箱 - 燈箱右上角有 x,點選後關閉燈箱 #### Output ```=json { "owner" : {{ string }}, // owner 名稱 "contactFullName" : {{ string }}, // Contact Person "contactPhoneNumber" : {{ string }}, // Business Phone Number "pcContactImgUrl" : {{ string }}, // 聯絡人大圖 "mobileContactImgUrl" : {{ string }}, // 聯絡人小圖 "pcContactCardImgUrl" : {{ string }}, // 名片大圖 "mobileContactCardImgUrl" : {{ string }}, // 名片小圖 "contactImgTitle" : {{ string }}, // 圖片說明 "contactCardImgTitle" : {{ string }} // 名片圖片說明 } ``` ### 聯繫廠商 - 參考文件 https://hackmd.io/FDa_t2QwRxKoBimH6mW4qQ ### 推薦型錄 - 參考相關文件 https://hackmd.io/-912y5bWSBCAmzJKdTP-ZA?view#%E7%9B%B8%E9%97%9C%E7%A4%BA%E6%84%8F%E5%9C%96 ### 警語 #### 檢查型錄相關資訊,決定是否要顯示警語 - 目前頁面中有數個地方包含 catalogStandardCid 的 api,這些 catalogStandardCid 與是否顯示警語有關,目前條列頁已經有警語相關效果了,套用相同的邏輯,判斷本頁面中所有的 catalogStandardCid 來決定要顯示那些警語