使用隱藏條件 using-hide-conditions

隱藏條件可用於判斷元件資源是否已轉譯。 例如,範本作者在範本編輯器中設定核心元件list元件,並決定停用根據子頁面建立清單的選項。 在「設計」對話方塊中停用此選項會設定屬性,以便在呈現清單元件時,會評估隱藏條件,並且不會顯示顯示子頁面的選項。

概觀 overview

對於使用者而言,對話方塊可能會因許多選項而變得複雜,他們只能使用一小部分可用的選項。 這可能會導致使用者無法承受的使用者介面體驗。

透過使用隱藏條件,管理員、開發人員和超級使用者便能根據一組規則來隱藏資源。 此功能可讓他們決定在作者編輯內容時應該顯示哪些資源。

NOTE
根據運算式隱藏資源不會取代ACL許可權。 內容保持可編輯狀態但不會顯示。

實作與使用細節 implementation-and-usage-details

com.adobe.granite.ui.components.FilteringResourceWrapper負責根據granite:hide屬性的存在與值來篩選資源,該屬性位於要篩選的欄位上。 /libs/cq/gui/components/authoring/dialog/dialog.jsp的實作包含FilteringResourceWrapper.的執行個體

實作使用Granite ELResolver API,並透過ExpressionCustomizer新增cqDesign自訂變數。

以下是位於etc/design下或作為內容原則之設計節點上的幾個隱藏條件範例。

${cqDesign.myProperty}
${!cqDesign.myProperty}
${cqDesign.myProperty == 'someText'}
${cqDesign.myProperty != 'someText'}
${cqDesign.myProperty == true}
${cqDesign.myProperty == true}
${cqDesign.property1 == 'someText' && cqDesign.property2 || cqDesign.property3 != 1 || header.myHeader}

定義隱藏運算式時,請牢記以下事項:

  • 若要有效,應該表示找到屬性的範圍(例如cqDesign.myProperty)。
  • 值是唯讀的。
  • 功能(如有需要)應限製為服務提供的一組給定值。

範例 example

隱藏條件的範例可以在AEM中找到,特別是核心元件。 例如,考慮清單核心元件

使用範本編輯器,範本作者可以在設計對話方塊中定義清單元件中哪些選項可供頁面作者使用。 您可以啟用或停用選項,例如是否允許清單成為靜態清單、子頁面清單、標籤頁面清單等。

如果範本作者選擇停用子頁面選項,則會設定設計屬性,並評估其隱藏條件,導致該選項無法針對頁面作者呈現。

  1. 依預設,頁面作者可以使用清單核心元件,透過選擇選項​ 子頁面 ​來使用子頁面建立清單。

    chlimage_1-218

  2. 在清單核心元件的「設計」對話方塊中,範本作者可以選擇選項​ 停用子項,以防止根據子頁面產生清單的選項顯示給頁面作者。

    chlimage_1-219

  3. 原則節點是在/conf/we-retail/settings/wcm/policies/weretail/components/content/list下建立,屬性disableChildren設定為true

  4. 隱藏條件定義為對話方塊屬性節點/conf/we-retail/settings/wcm/policies/weretail/components/content/listgranite:hide屬性的值

    chlimage_1-220

  5. 從設計組態中提取disableChildren的值,而運算式${cqDesign.disableChildren}評估為false,表示選項將不會呈現為元件的一部分。

    您可以在GitHub的此處🔗檢視隱藏運算式,作為granite:hide屬性的值。

  6. 使用清單元件時,不再為頁面作者轉譯選項​ 子頁面

    chlimage_1-221

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2