Shopify 指令碼的需求與限制
部分 Shopify 指令碼的限制旨在強化安全性,並確保無論同時有多少顧客使用您的商店,指令碼都能順利執行。若您正在為 Shopify 商店開發指令碼,請留意以下限制。
本頁內容
網路商店與 Storefront API
建立或編輯指令碼時,您可以選擇只在網路商店執行,或同時在網路商店與下列 app 中執行:
- 使用 Storefront API、JavaScript Buy SDK 或 Mobile Buy SDK (Android 與 iOS) 建置的自訂 app
- 能產生結帳的自訂 app
- Tapcart 與 Plobal Apps 行動應用程式建立工具
若要讓指令碼正常運作,您的網站必須內建購物車功能,因此無法在 Buy Buttons 或 Facebook and Instagram by Meta 銷售管道中使用指令碼。
已發布的指令碼
同一時間每種指令碼類型僅能發布一個。舉例來說,您可以同時發布一個商品項目指令碼與一個運費費率指令碼,但無法同時發布兩個商品項目指令碼。
Shopify 指令碼數量上限
您最多可建立 200 個 Shopify 指令碼。
訂單草稿
商品項目指令碼、運費費率指令碼與付款指令碼無法搭配訂單草稿或訂單草稿的結帳頁面使用。
中繼欄位
Shopify 指令碼無法存取 中繼欄位。
購物車/結帳屬性
Shopify 指令碼無法存取 Shopify Liquid 購物車屬性。您可以在購物車頁面加入這些屬性,向顧客蒐集額外資訊,但無法建立使用這些屬性的指令碼。
折扣代碼
指令碼可以讀取是否已套用折扣代碼、折扣金額,以及折扣類型(例如固定金額、百分比或運費)。指令碼無法得知折扣代碼的套用方式,例如是否限定購物車或單一商品項目。因此,指令碼無法取得折扣後的總計金額,或自動折扣。
讀取購物車中套用折扣的商品項目指令碼與運費指令碼,與折扣組合不相容。.discount_code 方法只能傳回單一折扣代碼。不支援透過折扣組合套用多個折扣代碼的購物車。
商品項目
指令碼無法將品項加入購物車,也無法提高品項價格。
運費費率
指令碼無法提高運費費率的金額。
多種幣別
您的指令碼在 多種幣別 環境中可能無法如預期運作。若要確保指令碼可在使用非商店主要幣別的購物車或結帳頁面正常運作,您需要將指令碼移轉至 Shopify Functions。
正規表示式
不支援正規表示式比對。若您正在建立商品項目指令碼,您可以改用下列方法作為替代方案:
split方法start_with與end_with方法include方法
佈景主題
您可能需要更新 Liquid 佈景主題,才能支援您的指令碼並避免讓顧客感到困惑。例如,並非所有佈景主題都會在購物車中顯示商品項目折扣。若您的主題屬於此情況,您需要編輯主題,讓購物車顯示商品項目折扣。若要瞭解詳情,請參閱可對 Liquid 佈景主題進行的 修改類型。
資源
每個指令碼可用的 CPU 與記憶體都有上限。為指令碼預留的資源會視購物車大小與指令碼所需的運算量而定。Shopify 會嚴格追蹤這些資源限制,確保不會阻礙您的指令碼如預期運作。
當您 測試 指令碼時,Script Editor 主控台會輸出該指令碼對已分配資源的使用百分比。
輸入/輸出
除少數例外,Shopify 指令碼不支援輸入/輸出。也就是說,指令碼無法執行網路請求或資料庫呼叫,也無法從使用者取得輸入。
您可以在 Script Editor app 中使用 puts 方法將文字輸出至主控台。
時間與隨機性
指令碼不得包含隨機或以時間為基礎的運算。Shopify 指令碼無法存取 Time 物件與 rand 方法。
由於每當購物車總計重新計算時,指令碼都會執行,因此若顧客經常變更購物車,基於時間或亂數產生的指令碼可能會出現不可預期或令人困惑的結果。不過,您可以使用 Launchpad app 安排指令碼在活動期間執行。
指令碼字元上限
您建立的指令碼最多可含 40,960 個字元。
訂閱訂單
若您的商品項目指令碼與運費指令碼為訂閱商品建立折扣,則該折扣會套用至下列付款:
- 僅適用於每次配送付費的首次付款,不適用於排程訂單
- 預付訂閱訂單的全額
瞭解詳情:訂閱與指令碼。
加速結帳作業
當您將 Shopify 指令碼與 加速結帳作業 搭配使用時,運費折扣會在顧客選取加速付款方式後才套用。因此,訂單價格的變更不會反映在顧客的裝置或瀏覽器上。顧客會在其加速結帳作業中看到原價,但實際收費會以正確的折扣後價格為準。
Shopify 銷售點 (POS)
Shopify 指令碼不支援搭配 Shopify 銷售點 (POS) 使用。
變更付款閘道名稱
以圖片或標誌呈現為閘道名稱的付款閘道,無法變更名稱。名稱旁帶有標誌圖片的付款閘道,則可變更名稱。
結帳分開出貨
運費指令碼與 Shopify Checkout 中的分開出貨 不相容。若您使用運費指令碼並啟用分開出貨,結帳時將不會向顧客顯示分開的貨件。