非表示条件の使用

非表示の条件を使用して、コンポーネントリソースをレンダリングするかどうかを決定できます。その一例として、テンプレート作成者がテンプレートエディターでコアコンポーネントのリストコンポーネントを設定し、子ページに基づいてリストを作成するオプションを無効にすることを決定する場合があります。デザインダイアログでこのオプションを無効にすると、リストコンポーネントのレンダリング時に非表示の条件が評価され、子ページを表示するオプションが表示されないようにプロパティが設定されます。

概要

オプションのごく一部しか使用しないユーザーにとって、多数のオプションが表示されたダイアログは非常に複雑になります。これにより、ユーザーは、ユーザーインターフェイスエクスペリエンスに困惑する場合があります。

管理者、開発者およびスーパーユーザーは、非表示の条件を使用することで、一連のルールに基づいてリソースを非表示にできます。この機能を使用すると、作成者がコンテンツを編集する際に表示されるリソースを決定できます。

メモ

式に基づいたリソースの非表示は、ACL アクセス権限の代わりにはなりません。コンテンツは編集可能なまま、表示されなくなるだけです。

実装と使用の詳細

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)。
  • 値は読み取り専用です。
  • 関数(必要な場合)は、サービスによって提供される所定の関数に限られます。

非表示の条件の例は、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/list上のgranite:hideプロパティの値として定義されます

    chlimage_1-220

  5. disableChildren の値がデザイン設定から取得され、式 ${cdDesign.disableChildren}false と評価されます。つまり、そのオプションはコンポーネントの一部としてレンダリングされません。

    granite:hide プロパティの値として非表示式を使用している例は、GitHub のこちらのページで確認できます。

  6. ページ作成者がリストコンポーネントを使用するときに、オプション「子ページ」が表示されなくなりました。

    chlimage_1-221

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now