自訂 Liquid
自行撰寫 Liquid 程式碼片段來決定存取權限,可使用顧客、購物車、商品和商店前台變數。
Custom liquid 規則讓您可以自行撰寫 Liquid 程式碼片段,來決定訪客是否可取得存取權限。這是應用程式中最靈活的規則:只要是能以 Liquid 條件針對顧客、其購物車、目前的商品或商品系列,或商店前台本身來表達的內容,都可以用來限制存取。不過,這也是唯一一種程式碼片段出錯會造成實際後果的規則,詳見下文。
Custom liquid 屬於需要判斷結果的規則,因此沒有 If/Unless 切換開關。應用程式會為每位訪客執行您的程式碼片段,並讀取其最終結果。結果必須剛好是 true 或 false(前後的空白會被忽略):true 表示通過規則,false 表示未通過。其他輸出(例如 true - customer is eligible)並非有效結果。您的程式碼片段可以存取與 Shopify 佈景主題中關於目前訪客和頁面相同類型的資料。
開啟鎖定,點擊 Unlock rules 分頁,然後從 Condition type 下拉選單中選擇 Custom liquid。

在 Unlock rules 分頁的 Condition type 下拉選單中選擇 Custom liquid。
程式碼編輯器
Section titled “程式碼編輯器”此規則的條件類型會開啟專用的 Liquid 程式碼編輯器,具備語法醒目提示、自動完成和即時語法驗證功能,您在輸入時,Liquid 中的錯誤就會直接在編輯器中標示出來,甚至不必等到儲存。

在程式碼編輯器中撰寫並驗證 Liquid 程式碼片段。
編輯器提供一組可插入的變數,依所描述的對象分組:
| 群組 | 變數 |
|---|---|
| 顧客 | customer, customer.tags, customer.orders_count, customer.total_spent, customer.b2b? |
| 購物車 | cart.item_count, cart.total_price, cart.items |
| 商品與商品系列 | product.tags, product.vendor, product.metafields, collection.handle |
| 商店前台 | request.path, request.page_type, localization.country.iso_code, localization.language.iso_code |

從 Variables and templates 面板瀏覽可用的變數。
如果您想從可運作的內容開始,而不是從空白的編輯器開始,同一個面板中也提供現成的範本,您可以直接套用並調整,包括已登入顧客檢查、顧客標籤檢查、購物車商品數量或購物車總額下限、商品標籤檢查、訪客國家/地區檢查、URL 路徑檢查,以及直接檢查 customer.b2b? 的現成 Shopify B2B customer 範本。

選擇入門範本,包括現成的 Shopify B2B 範本。
- 開啟您要保護的鎖定,然後點擊 Unlock rules 分頁。
- 新增存取規則,並將條件類型設為 Custom liquid。
- 直接在編輯器中撰寫程式碼片段,或開啟 Variables and templates 複製變數,或從現成範本開始。
- 確保您的程式碼片段最終輸出,對應通過的訪客剛好是
true,對其他所有人剛好是false。請不要在該值前後加入說明文字、HTML 或其他輸出。編輯器會標示基本的語法問題,但您仍需自行確認邏輯是否符合預期。 - (選填)設定單一規則的 Redirect URL,僅在此特定規則拒絕訪客時使用。
- 儲存鎖定。
失效時放行的行為
Section titled “失效時放行的行為”範例:允許帶有 VIP 標籤的已登入顧客
Section titled “範例:允許帶有 VIP 標籤的已登入顧客”假設私人頁面只開放給帳號帶有 vip 標籤的已登入顧客。
- 選擇 VIP collection preview 頁面作為要保護的內容。

選擇要留給 VIP 顧客的頁面。
- 新增 Custom liquid,並將入門程式碼片段替換為:
{% if customer and customer.tags contains 'vip' %}true{% else %}false{% endif %}您輸入時,編輯器下方會顯示 Liquid syntax is valid 的確認訊息。

編輯器會醒目提示 Liquid,並在您儲存前驗證語法。
- 將規則的 Redirect URL 留空。
- 將 Access denied message 設為:
This page is available to VIP customers only.

Custom liquid 只有一個訊息欄位,會顯示給所有被程式碼片段拒絕的人。
- 點擊 Save。
商店前台的結果
Section titled “商店前台的結果”對於帶有 vip 標籤的已登入顧客,程式碼片段會輸出剛好是 true,因此頁面會正常開啟。對於訪客和沒有該標籤的顧客,則會輸出剛好是 false,因此他們會看到上述訊息。請不要在程式碼片段輸出的 true 或 false 前後加入文字。

當 Liquid 程式碼片段回傳 false 時,訪客會看到此範例中的 Access denied message。