現在表示中:

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

概要

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

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

注意:

式に基づいたリソースの非表示は、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
  2. テンプレート作成者は、リストコアコンポーネントのデザインダイアログでオプション「子を無効にする」を選択して、子ページに基づいたリストを生成するオプションがページ作成者に対して表示されないようにできます。

    chlimage_1
  3. ポリシーノードは、プロパティ disableChildrentrue に設定された状態で /conf/we-retail/settings/wcm/policies/weretail/components/content/list の下に作成されます。

  4. 非表示の条件は、ダイアログプロパティノード /conf/we-retail/settings/wcm/policies/weretail/components/content/listgranite:hide プロパティの値として定義されます。

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

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

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

    chlimage_1

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー