Shopify 指令碼要求與限制
Shopify 指令碼存在某些限制,目的是為了增強安全性,以及確保無論有多少顧客同時使用您的商店,指令碼都能正常執行。為 Shopify 商店建置指令碼時,請留意下列限制。
此頁面上
線上商店和 Storefront API
在您建立或編輯指令碼時,可選擇僅在網路商店執行,或是同時在網路商店和下列應用程式中執行:
- 以 Storefront API、JavaScript Buy SDK、Mobile Buy SDK (Android 和 iOS) 建立的自訂應用程式
- 會產生結帳作業的自訂應用程式
- Tapcart 和 Plobal 應用程式 的行動版應用程式建立工具
若要讓指令碼成功執行,您的網站必須內建購物車功能,而在此情況下,您無法搭配使用指令碼與購買按鈕或 Meta 的 Facebook 和 Instagram 銷售管道。
已發佈的指令碼
一次只能發佈每種指令碼的一個指令碼。例如,您可以發佈一個商品項目指令碼和一個運費指令碼,但是不能一次發佈兩個商品項目指令碼。
Shopify 指令碼數量上限
您最多可以建立 200 個 Shopify 指令碼。
訂單草稿
商品項目指令碼、運費費率指令碼和付款指令碼不能用於訂單草稿或訂單草稿結帳作業。
中繼欄位
Shopify 指令碼無法存取中繼欄位。
購物車/結帳屬性
Shopify 指令碼無法存取 Shopify Liquid 購物車屬性。您可以新增這些屬性至購物車頁面以蒐集顧客的額外資訊,但無法建立使用這些資訊的指令碼。
折扣代碼
指令碼可以存取折扣代碼套用狀態、折扣金額和折扣類型,例如固定金額、百分比或運費。然而,指令碼無法存取折扣代碼的套用方式,例如是否為購物車專屬折扣或商品項目專屬折扣。換句話說,指令碼無法存取折扣後總金額或是自動折扣。
存取購物車所套用折扣的商品項目及運送指令碼與折扣組合不相容。此外,.discount_code
方式只能回傳單一折扣代碼。系統不支援使用折扣組合包含多個折扣代碼的購物車。
商品項目
無法藉由指令碼將品項加入購物車或調高品項的價格。
運費
Scripts 指令碼無法調高運費費率的價格。
多種幣別
您的指令碼可能無法正常搭配多種幣別使用。為確保指令碼適用於未採用商店主要幣別的購物車或結帳頁面,您需要將指令碼移轉到 Shopify Functions。
規則運算式
不支援規則運算式比對。若要建立商品項目指令碼,可以使用下列其中一種變通方法:
-
split
方式 -
start_with
和end_with
方式 -
include
方式
佈景主題
您可能必須更新 Liquid 佈景主題以支援指令碼,並避免造成顧客困惑。例如,某些佈景主題不會在購物車內顯示商品項目折扣。若遇到這種情況,您必須編輯佈景主題,讓商品項目折扣顯示在購物車中。深入瞭解您可以針對 Liquid 佈景主題進行的修改類型。
資源
指令碼可用的 CPU 和記憶體容量有限。為指令碼保留的資源取決於購物車大小以及指令碼需要的計算量。Shopify 會密切追蹤這些資源限制,確保您的指令碼能如預期運作。
測試指令碼時,Script Editor 主控台會列印指令碼所使用的分配資源百分比。
輸入/輸出
除了幾個例外情況外,Shopify 指令碼無法輸入/輸出。這表示指令碼無法執行 Web 要求或資料庫呼叫,也無法取得使用者的輸入內容。
您可使用 puts
方法,將文字列印到 Script Editor 應用程式的主控台中。
時間和隨機性
指令碼無法用於隨機或以時間為依據的計算。Shopify 指令碼無法存取 Time
物件和 rand
方法。
因為每次重新計算購物車總金額時,指令碼都會執行,所以如果顧客經常變更購物車內容,以時間為依據的指令碼或亂數產生程序可能會出現無法預期或令人混淆的結果。不過您可以使用 Launchpad 應用程式,排定指令碼在某些事件進行期間執行。
指令碼字元限制
可建立的指令碼長度上限為 40,960 個字元。
訂閱產品訂單
若您的商品項目和運送指令碼為訂閱商品建立折扣,則該折扣適用於以下付款金額:
- 僅限每次配送付費的第一筆款項 (不適用於已排定的訂單)
- 預付訂閱商品訂單的總金額
深入瞭解訂閱產品和指令碼。
加速結帳作業
您搭配 Shopify 指令碼使用加速結帳作業時,系統會在顧客選取加速付款方式後套用運費折扣,因此訂單金額變更不會反映在顧客的裝置或瀏覽器中。顧客會在加速結帳作業中看見訂單原始價格,但系統會以正確折扣價格向他們收費。
Shopify Point of Sale (POS)
Shopify 指令碼不適用於 Shopify Point of Sale (POS)。
重新命名付款閘道
您無法重新命名以圖片或標誌顯示名稱的付款閘道。在名稱旁顯示標誌圖片的付款閘道則可重新命名。