AEM タグ付けフレームワーク

タグ付けにより、コンテンツを分類および整理できますタグの分類には、名前空間と分類を使用できます。タグの使用について詳しくは、以下を参照してください。

  • コンテンツ作成者としてのコンテンツのタグ付けについては、タグの使用を参照してください。
  • タグの作成と管理、およびタグが適用されたコンテンツについては、管理者の観点から「タグの管理」を参照してください。

この記事では、AEMでタグ付けをサポートする基盤となるフレームワークと、それを開発者として使用する方法に焦点を当てます。

はじめに

コンテンツにタグを付けてAEM Tagging インフラストラクチャを使用するには:

  • タグは、cq:Tag タイプのノードとして分類階層のルートノードの下に存在する必要があります。
  • タグ付けされたコンテンツノードのNodeTypeには、cq:Taggable Mixin が含まれている必要があります。
  • TagID がコンテンツノードの cq:tags プロパティに追加され、cq:Tag タイプのノードに解決されます。

cq:Tag ノードタイプ

タグの宣言は、リポジトリーにおける cq:Tag. タイプのノードにキャプチャされます。

  • タグは、単純な単語(sky など)や、階層的な分類(一般的な果物とより具体的にリンゴの両方を意味する fruit/apple など)にすることができます。
  • タグは一意のTagID によって識別されます。
  • タグには、タイトル、ローカライズされたタイトル、説明など、オプションのメタ情報が含まれます。 ユーザーインターフェイスには、TagID ではなくタイトル(存在する場合)が表示されます。

また、タグ付けフレームワークでは、作成者やサイト訪問者が、事前に定義された特定のタグのみを使用するように制限されます。

タグの特徴

  • ノードタイプは cq:Tag です。
  • ノード名はTagID の構成要素になります。
  • TagID には常に名前空間が含まれています。
  • jcr:title プロパティ(UI に表示するタイトル)は省略可能です。
  • jcr:description プロパティは省略可能です。
  • 子ノードが含まれている場合、コンテナタグと呼ばれます。
  • リポジトリーにおいて、分類のルートノードと呼ばれる基本パスの下に保存されます。

タグ ID

TagID は、リポジトリー内のタグノードに解決されるパスを識別します。

通常、TagID は名前空間で始まる短縮形のTagID ですが、分類のルートノードから始まる絶対TagID にすることもできます。

コンテンツにタグ付けするときに、コンテンツがまだ存在しない場合は、cq:tags プロパティがコンテンツノードに追加され、TagID がこのプロパティの String 配列値に追加されます。

TagID は、名前空間とそれに続くローカルTagID で構成されます。コンテナタグ には、分類の階層順を表すサブタグがあります。 サブタグを使用して、任意のローカルタグと同じタグを参照できます TagID. 例えば、コンテンツのタグ付けには fruit サブタグを含むコンテナタグ ( fruit/apple および fruit/banana.

分類のルートノード

分類のルートノードは、リポジトリー内にあるすべてのタグの基本パスです。分類のルートノードは、cq:Tag タイプのノードにすることが​できません

AEM の基本パスは /content/cq:tags であり、ルートノードのタイプは cq:Folder です。

タグの名前空間

名前空間を使用してグループ化できます。 サイトごと(例:公開または社内)や大規模なアプリケーションごと(例:Sites または Assets)に名前空間を設けることが最も典型的なユースケースですが、名前空間はその他の様々なニーズにも使用できます。名前空間は、ユーザーインターフェイスで使用され、現在のコンテンツに適用できるタグのサブセット(つまり、特定の名前空間のタグ)のみを表示します。

タグの名前空間は、分類サブツリーの最初のレベルです。これは、分類のルートノードの直下のノードです。名前空間は cq:Tag タイプのノードで、その親は cq:Tag ノードタイプではありません。

すべてのタグには名前空間があります。名前空間が指定されていない場合、タグはデフォルトの名前空間 ( TagID defaultつまり、 /content/cq:tags/default. この場合、タイトルはデフォルトでStandard Tagsに設定されます。

コンテナタグ

コンテナタグは、任意の数およびタイプの子ノードを含む、cq:Tag タイプのノードです。これにより、カスタムメタデータを使用してタグモデルを強化できます。

さらに、分類のコンテナタグ(スーパータグ)は、すべてのサブタグの総合として機能します。 例えば、 fruit/apple は次のタグが付いていると見なされます: fruit、も参照してください。 つまり、でタグ付けされたコンテンツを検索します。 fruit また、次のタグが付いたコンテンツも見つかります: fruit/apple.

タグ ID の解決

タグ ID にコロン (:) を呼び出す場合、コロンでタグやサブ分類から名前空間を区切り、その名前空間が通常のスラッシュ (/) をクリックします。 タグ ID にコロンが含まれていない場合は、デフォルトの名前空間が暗示されます。

タグの標準の場所は /content/cq:tags の下のみです。

存在しないパスまたは cq:Tag ノードを指していないパスを参照するタグは、無効と見なされて無視されます。

TagID の例とその要素、そのTagID がリポジトリー内の絶対パスにどのように解決されるかを次の表に示します。

TagID 名前空間 ローカル ID コンテナタグ リーフタグ リポジトリー内の絶対パス
dam:fruit/apple/braeburn dam fruit/apple/braeburn fruitapple braeburn content/cq:tags/dam/fruit/apple/braeburn
color/red default color/red color red /content/cq:tags/default/color/red
sky default sky (なし) sky /content/cq:tags/default/sky
dam: dam (なし) (なし) (なし) /content/cq:tags/dam
content/cq:tags/category/car category car car car content/cq:tags/category/car

タグタイトルのローカリゼーション

タグにオプションのタイトル文字列 jcr:title が含まれている場合は、jcr:title.<locale> プロパティを追加することで、表示用のタイトルをローカライズできます。

詳しくは、次を参照してください。

  • 異なる言語のタグ 開発者としての API の使用について説明する
  • 様々な言語でのタグの管理(管理者としてのタグ付けコンソールの使用を説明)

アクセス制御

タグは、リポジトリー内で分類のルートノードの下にノードとして存在します。作成者やサイト訪問者に対し、特定の名前空間内でのタグの作成を許可または禁止するには、リポジトリーに適切な ACL を設定します。

特定のタグまたは名前空間に対する読み取り権限を拒否することで、特定のコンテンツにタグを適用する機能が制御されます。

一般的な方法には次のものがあります。

  • すべての名前空間への書き込みアクセス(/content/cq:tags 下への add/modify)をtag-administrators グループ/役割に許可する。このグループは、追加設定なしで使用できる AEM に付属しています。
  • 読み取り可能にする必要があるすべての名前空間への読み取りアクセスをユーザー/作成者に許可する。
  • ユーザー/作成者がタグを自由に定義できる名前空間への書き込みアクセス(/content/cq:tags/some_namespace 下への add_node)をユーザー/作成者に許可する。

タグ付け可能なコンテンツ:cq:Taggable Mixin

アプリケーション開発者がコンテンツタイプにタグを付けるために、ノードの登録 (CND) は、 cq:Taggable mixin または cq:OwnerTaggable mixin.

cq:OwnerTaggable Mixin は cq:Taggable から継承されており、その目的は、所有者または作成者がコンテンツを分類できることを示すことです。AEM では、cq:PageContent ノードの属性にすぎません。cq:OwnerTaggable Mixin は、タグ付けフレームワークには必要ありません。

メモ

集約されたコンテンツアイテムの最上位ノード(またはその jcr:content ノード)では、タグの有効化だけを行うことをお勧めします。以下に例を示します。

  • jcr:content ノードのタイプが cq:PageContent であるページ(cq:Page)。cq:Taggable Mixin が含まれています。
  • jcr:content/metadata ノードに常に cq:Taggable Mixin があるアセット(cq:Asset)。

ノードタイプの表記(CND)

ノードタイプの定義は、リポジトリー内に CND ファイルとして存在します。CND 表記は、 JCR ドキュメント.

AEM に含まれるノードタイプの基本的な定義は、次のようになります。

[cq:Tag] > mix:title, nt:base
    orderable
    - * (undefined) multiple
    - * (undefined)
    + * (nt:base) = cq:Tag version

[cq:Taggable]
    mixin
    - cq:tags (string) multiple

[cq:OwnerTaggable] > cq:Taggable
    mixin

cq:tags プロパティ

cq:tags プロパティは、作成者またはサイト訪問者によってコンテンツに 1 つ以上のTagID が割り当てられたときにその ID を格納するための String 配列です。このプロパティは、cq:Taggable Mixin で定義されているノードに追加した場合にのみ意味があります。

メモ

AEMのタグ付け機能を使用するには、カスタムで開発されたアプリケーションは、 cq:tags.

タグの移動と統合

次に、タグ付けコンソールを使用してタグの移動または結合を実行した場合のリポジトリーでの影響について説明します。

タグ A を /content/cq:tags 下のタグ B に移動または結合した場合:

  • タグ A は削除されず、cq:movedTo プロパティを取得します。
    • cq:movedTo はタグ B を指します。

    • このプロパティは、タグ A がタグ B に移動または結合されたことを意味します。

    • タグ B を移動すると、それに応じてこのプロパティが更新されます。

    • したがって、タグ A は非表示になり、リポジトリにのみ保持されるので、タグ A を指すコンテンツノードのタグ ID を解決できます。

    • タグ A のようなタグは、それを指すコンテンツノードがなくなったら、タグのガベージコレクターによって削除されます。

    • cq:movedTo プロパティの特別な値に nirvana があります。この値は、タグが削除されたにもかかわらず、保持する必要のある cq:movedTo が含まれるサブタブが存在することが原因でそのタグをリポジトリーから削除できない場合に適用されます。

      メモ

      cq:movedTo プロパティは、次のいずれかの条件を満たす場合にのみ、移動または結合されたタグに追加されます。

      1. タグは、コンテンツで使用されます(つまり、参照が含まれています)。 または
      2. タグが、既に移動された子を持っている。
      * タグ B が作成され(移動がある場合)、 `cq:backlinks` プロパティ。
    • cq:backlinks は、参照を他の方向に保持します。 つまり、タグ B に移動または結合されたすべてのタグのリストが保持されます。

    • この機能は、主に保持する必要があります cq:movedTo タグ B が移動、結合、削除されたとき、またはタグ B がアクティブになったときに、それまでのプロパティ。この場合、すべての逆リンクタグもアクティブにする必要があります。

      メモ

      cq:backlinks プロパティは、次のいずれかの条件を満たす場合にのみ、移動または統合されたタグに追加されます。

      1. タグは、コンテンツ(参照が含まれている)で使用されます。または
      2. タグが、既に移動された子を持っている。

コンテンツノードの cq:tags プロパティを読み取る場合は、次のように解決されます。

  1. /content/cq:tags 下で一致するものが見つからない場合、タグは返されません。
  2. タグに cq:movedTo プロパティが設定されている場合は、参照先のタグ ID が使用されます。
    • これは、その次のタグに cq:movedTo プロパティがある限り繰り返されます。
  3. 次のタグに cq:movedTo プロパティがない場合は、そのタグが読み取られます。

タグを移動または結合したときに変更を発行するには、cq:Tag ノードとそのすべてのバックリンクを複製する必要があります。このレプリケーションは、タグ管理コンソールでタグがアクティブ化されると自動的に実行されます。

後でページの cq:tags プロパティに対して更新が行われると、以前の参照が自動的にクリーンアップされます。API を介して移動されたタグを解決すると、移動先のタグが返され、移動先のタグ ID が提供されるので、クリーンアップがトリガーされます。

このページ