top of page

Wix 網站製作

  • 作家相片: 作 振
    作 振
  • 2025年2月5日
  • 讀畢需時 7 分鐘

已更新:2025年6月13日

接下來,我要開始為"誠菓手作"這個品牌製作一個網站,這是一個由和菓子產品販賣以及教學的品牌,希望透過新的網站,獲得更多人的認識、分享更多關於和菓子的知識,以及能夠結合行銷廣告,可以分析客戶的喜好。當然,網路購物是不可少的環節。


整理一下上述的需求,是這個網站的設計目標:

  • 首頁,讓別人可以一目了然可以認識這個品牌的地方。

  • 能夠上架商品,進行網路購物 (可能是課程或是商品)

  • Blog,可以分享食譜、和菓子歷史等等。




有了需求,下一步要評估一下要使用的工具。

這裡評估使用Wix 來製作網站,主要有幾個原因:

  • 之前使用過,體驗還不錯。

  • 可以支援購物車。

  • 可以使用手機就可以進行編輯 (這個真的是大大的加分,因為很多時候,靈感突然就來,如果能夠即時的記下,可以將內容逐步完善)



最後因為誠菓手作的目標是希望有販賣季節菓子,而這種和菓子可能製作的時間比較長,又由於不放防腐劑的關係,所以需要能夠排程製作,所以希望夠將排程的狀況在網頁端顯示,讓客戶能夠直接挑選,這樣就可以減少很多與客戶溝通什麼時候需要產品的時間了。



先說結論,這次使用Wix 來進行製作網頁的體驗很好,由於Wix 本身就是一個以UI 介面為主的網頁編輯平台,而且可支持支援購物車以及手機線上編輯,所以初步的網頁大概就在兩天左右就完全架起來了。


這裡設計的是 一頁是首頁 + 部落格的設計,讓消費者可以在首頁直接獲取到所有的信息,然後誠菓手作的師傅可以分享他在製作的心得以及最新的消息。以下是網頁的概念設計



置頂的動圖,讓最重要的活動一目了然
置頂的動圖,讓最重要的活動一目了然

放置最新消息,並連結到BLOG
放置最新消息,並連結到BLOG
介紹關於誠菓手作這個品牌,按鈕可開啟詳細解說
介紹關於誠菓手作這個品牌,按鈕可開啟詳細解說
結合商城,上架商品,然後顯示在首頁便於購買
結合商城,上架商品,然後顯示在首頁便於購買
最後是誠菓手作師傅可以分喜食譜的地方
最後是誠菓手作師傅可以分喜食譜的地方
部落格撰寫處,可以區分"消息"以及"文章" 兩類,可以分別顯示在首頁的消息以及文章的部分。
部落格撰寫處,可以區分"消息"以及"文章" 兩類,可以分別顯示在首頁的消息以及文章的部分。


使用Wix 內建的購物車
使用Wix 內建的購物車

唯一需要開始支付費用的地方,是要進入結帳頁面,如果支付了費用之後,就可以開始使用結帳裡面的支付功能。

方案選擇
方案選擇

在付款之後,一切都解鎖了,購物車可以順利的跑到結帳的頁面了 😎

結帳頁面
結帳頁面

以上,基本上就已經完成網頁90%的功能設計。設計時間大約兩個半天的時間,如果孰悉的話應該可以更快。



不過接下來10% 的工作卻花了我3~4 天的時間,而且只作了簡易的證明功能(POC),但卻也是讓我更喜歡Wix這個設計平台。


先說我要做什麼。


如開始的需求,需要設計一個可供顧客選擇可以出貨的時間。為了讓誠菓手作的師傅容易操作,這個出貨時間需要簡單的讓師傅能夠操作(師傅不太可能到網頁更新太複雜的東西),同時客戶在網頁操作後,可以同步更新到師傅這裡,讓師傅可以方便掌握每周需要製作的訂單。

要達到這個目標,我這裡想到的方法是使用 google App Script 與 Wix Velo 串聯。以下是網路溝通示意圖。

網路溝通示意圖
網路溝通示意圖

Wix Velo 是Wix 專門為網頁開發者設計的系統,個人覺得真的蠻好用的,只要在編輯頁面上方"開發模式"點下,然後"開啟開發模式"即可進入 Velo 開發模式。

進入Wix Velo 開發模式
進入Wix Velo 開發模式

一開始進入這個 Velo 開發模式的時候覺得怪怪的,因為看不到網頁程式碼,一開始根本不知道要從何改起。不過後來慢慢了解,這個Velo 比較偏向"修改"網頁設計,為什麼這麼說呢? 我們可以看一段簡單的程式碼描述。

import { updateCartDeliveryTime } from 'backend/storeUtils'; // 從後端導入函數

let selectedDeliveryDate = null; // 用來儲存客戶選擇的日期

$w.onReady(function () {
    // *** 核心修改:將保存邏輯綁定到日期選擇器的 onChange 事件 ***
    // 假設您的日期選擇器下拉式選單 ID 是 'deliveryDatePicker'
    if ($w('#dropdown1').isVisible) { // 檢查元素是否存在
        $w('#dropdown1').onChange(async (event) => {
            selectedDeliveryDate = event.target.value; // 獲取選擇的日期值
            //console.log("前端,選擇的日期: ", selectedDeliveryDate)
            if (selectedDeliveryDate) {
                try {
                    // 只要日期選擇器的值改變,就立即將選擇的日期發送到後端函數處理
                    await updateCartDeliveryTime(selectedDeliveryDate);
                    console.log("前端:日期選擇器值改變,已將出貨日期發送到後端。");
                    
                    // 可選:在頁面顯示選擇的日期給客戶看 (例如一個文本元素 #deliveryDateDisplay)
                    // if ($w('#deliveryDateDisplay').found) {
                    //     $w('#deliveryDateDisplay').text = `您選擇的出貨日期為: ${selectedDeliveryDate}`;
                    // }

                } catch (error) {
                    console.error("前端:保存出貨日期失敗:", error);
                    // 可以在這裡顯示錯誤訊息給用戶
                }
            } else {
                // 如果用戶清空了選擇(如果您的下拉選單允許),也可以處理
                console.warn("前端:日期選擇器值被清空。");
                // 可選:可以再次呼叫後端清空資料庫中的日期,或顯示提示
                // if ($w('#deliveryDateDisplay').found) {
                //     $w('#deliveryDateDisplay').text = "請選擇預計出貨日期!";
                // }
            }
        });
    } else {
        console.warn("前端:未找到 ID 為 'deliveryDatePicker' 的日期選擇器。");
    }

    // *** 移除對「結帳」按鈕 onClick 事件的綁定 ***
    // 因為日期在日期選擇器 onChange 時就已經保存了,結帳按鈕不需要額外操作
    // 如果您之前有這段代碼,請將其移除或註釋掉:
    // $w('#checkoutButton').onClick(async () => { ... }); 
});

首先Wix 使用的JavaScript 的語言,所以如果孰悉JS的創友可能會覺得好開勳 😁


$w.onReady(function ()

主要描述,這個網頁準備好($w.onReady)的時候要執行的動作,所以可以看的出來,他的基本動作是當網頁開啟之後去調整開啟之後的動作。



接下來是Velo 的運作邏輯,基本上設計與一般網站的架構是一樣的,這次我使用的只是其中的幾個功能,我的使用示意圖如下:

Wix 內部運作
Wix 內部運作

由此示意圖可以看出,Velo是透過後台(backend)為核心,與其他各部進行溝通的。可以在這裡配置需要的檔案。

Wix Velo 後端
Wix Velo 後端

前台的位置是在各頁面開啟都會看的到,例如上圖右側的程式碼,就是在購物車頁面裡的程式碼。


最後是CMS,他有點像是簡易的資料庫,Wix裡稱為集合,透過各種集合,可以直接與前台與後台進行互動。在跟前台互動的時候,甚至可以直接在UI介面上面進行點選,就可以直接連結CMS 的內容,十分方便。

ree


解說完基本的組成之後,接下來就開始正式的串聯工作囉。


由於Wix 的結帳系統屬於封閉系統,中間花了蠻多時間想要續修改結帳資訊,以串聯到最後給到客戶端的資訊,但是最後都是失敗收場 😭


所以最後使用決定完全不"修改"結帳資訊,僅將我們想要的預計出貨日其資訊結合結帳的資訊一起輸出,這中間就要使用到上述說到的CMS。所以預想的操作流程是這樣的:

Wix 以及 Google App Script 整體操作的流程
Wix 以及 Google App Script 整體操作的流程

整個流程看起來複雜得,但化繁為簡,只是要完成兩個動作:


  1. 誠菓手作師傅在Google sheet 新增可預約時間以及數量:

    透過App Script 的程式碼,擷取Google Sheet 的內容並將資訊以 JASON 的形式拋到 Wix 後台 。然後後台裡面的 deliveryDate_googlesheet.jsw 負責把這個這些資訊更新到CMS 裡面的 ShippintDate 的這個集合當中,最後透過下拉選單可以選擇CMS 裡面的內容。

  2. 消費者在網頁進行消費,選擇了可預約時間以及商品的數量後進行結帳 :

    在消費者選擇預約時間的過程當中,操作的過程被記錄下來存在CMS 的OrderDeliveryDate 裡面,然後當消費者結完帳的那一剎那,後台裡面的events.js 收到了結帳完成的信息,保留OrderDeliveryDate 裡面的最後一個操作動作作為選定,然後收集訂貨資訊以及選定的可預約時間傳遞給同在後台的mailgun以及deliveryDate_googlesheet.jsw。

    然後mailgun 負責將收集好的訂貨資訊以及可預約時間以email 寄出。

    從OrderDliveryDate 裡面的資訊透過 deliveryDate_googleseet.jsw 將訊息拋給App Script,然後運算後在Google Sheet 上面進行更新。


以上所有的程式範例碼我會放在下面,有興趣的創友可以參考。



最後經過驗證,整個資料流可以確實的透過以上所提到的技術進行傳遞,Demo 結果如下,不過因為時間的關係,還有一些瑕疵還需要調整:

Demo1: googel Sheet 與 Wix CMS 內容同步
Demo1: googel Sheet 與 Wix CMS 內容同步

Demo1: 可以將Google Sheet 實際將內容同步到CMS 裡面。

但可以看到幾個瑕疵,比如說日期少了一天(主要原因是時區處理的問題),另外一個是在CMS 裡面的資訊不夠簡潔,需要再做調整。


Demo2: 結帳流程結束後,結帳ID(cartID) 以及客戶選取的 deliveryDate
Demo2: 結帳流程結束後,結帳ID(cartID) 以及客戶選取的 deliveryDate

Demo2: 結帳後,可以順利的將顧客的cartID 以及 deliveryDate 在CMS被同步紀錄下來,這樣資訊就可以被記錄以及提取。

可以看到的瑕疵就是deliveryDate 裡面的內容是空的,主要是因為日期格式不對齊的問題,這個也能透過一些小修改進行調整。


Demo3: 透過Wix 測試頁面觸發,可將預期內容寫入Google sheet
Demo3: 透過Wix 測試頁面觸發,可將預期內容寫入Google sheet

Demo3: 透過Wix 前台的測試頁面使用按鈕的觸發,可以將Wix 後台預期要寫入的內容(日期: 2025/06/13, 數量: 20, 備註: 透過Wix 寫入) 放入Google Sheet當中。

還沒有寫到比對運算,理論上是可以透過時間日期的搜尋,去運算目前已安排的數量,這個運算可以寫在 App Script 當中。



後記:


因為時間的關係,沒有辦法把所有的事情做到盡善盡美,除了以上看到瑕疵以及待改善項目以外,還有mailgun 的 email 最後還是沒有辦法寄出,可能是卡在 mailgun 的API 最後沒有成功串通,或是沒有商用email 的關係,不論如何,要把這段串通還有一小段路要走。

Wix 的殘念日誌 😅
Wix 的殘念日誌 😅

不過整體使用體驗上,整個Wix 的前台UI 設計,提供了很方便快速的設計,而且設計彈性很高,可以自行編排內容然後得到想要的配置(Layout)效果。

再搭配內建的Blog 以及購物車,可以很快的搭建不論是個人部落客或是商業購物的網站需求。

最後就是Wix Velo 的強大功能,可以透過這個開發平台開很多可能性,透過網路API的串接,可以整合更多的功能在這個平台上面。



這次的程式碼撰寫使用了大量與AI 生成,透過與AI對話,可以一步一步的達成想要的結果。所以在現在這個有AI的時代裡面,想比會更為重要。

最新文章

查看全部
植物生長預測

這是一個我一直好想做的題目。把物理世界的資料作為未來世界的預測。其實,這就是目前AI正在做的事情,如何把資料收集進行分析判斷,得到一個預期的運算結果。 在這個專案裡面,我希望把多種元素導入,包括使用 Raspi 收集物理資訊,然後導入AI,然後將運算結果傳出來。這就是一個邊...

 
 
 

留言


創客爸爸.png

TRUNK DADDY

​歡迎訂閱

感謝你的訂閱,你將不會錯過任何一個最新的訊息

創客爸爸

© 2024 by TRUNKDADDY

bottom of page