AEM標籤架構

標籤可讓內容分類和組織。 標籤可依命名空間和分類法來分類。 如需使用標籤的詳細資訊:

  • 如需將內容標籤為內容作者的相關資訊,請參閱使用標籤
  • 請參閱管理標籤,以了解管理員關於建立和管理標籤的觀點,以及已套用哪些內容標籤。

本文著重於支援在AEM中標籤的基礎架構,以及如何以開發人員的身分運用它。

簡介

若要標籤內容並運用AEM標籤基礎結構:

cq:標籤節點類型

標籤的聲明被捕獲到cq:Tag.類型的節點的儲存庫中

  • 標籤可以是簡單的字詞(例如sky)或代表階層分類(例如fruit/apple,表示一般水果和較特定的蘋果)。
  • 標籤以唯一TagID識別。
  • 標籤包含選用的中繼資訊,例如標題、本地化標題和說明。 標題應顯示在使用者介面中,而非TagID(若存在)。

標籤架構也能限製作者和網站訪客僅使用特定、預先定義的標籤。

標籤特性

標記 ID

TagID標識解析到儲存庫中標籤節點的路徑。

通常,TagID是以命名空間開頭的速記TagID,或者可以是從分類根節點開始的絕對TagID

當標籤內容時,如果內容尚不存在,則將cq:tags屬性添加到內容節點,並將TagID添加到屬性的String陣列值。

TagID包含namespace,後面接著本機TagID代表 分類法中階層順序的容器標籤子標籤。子標籤可用來參照與任何本機TagID相同的標籤。 例如,可使用fruit標籤內容,即使該內容是具有子標籤的容器標籤,例如fruit/applefruit/banana亦然。

分類根節點

分類根節點是儲存庫中所有標籤的基本路徑。 分類根節點必須​​為cq:Tag類型的節點。

在AEM中,基本路徑為/content/cq:tags,根節點為cq:Folder類型。

標籤命名空間

命名空間可將項目分組。 最典型的使用案例是每個網站(例如公用與內部)或每個大型應用程式(例如網站或資產)都有命名空間,但命名空間可用於各種其他需求。 使用者介面中會使用命名空間,以僅顯示適用於目前內容的標籤子集(即特定命名空間的標籤)。

標籤的命名空間是分類子樹中的第一級,即分類根節點下方的節點。 命名空間是父代不 cq:Tag 是節點類型的 cq:Tag 節點。

所有標籤都有命名空間。 如果未指定命名空間,則將標籤分配給預設命名空間,即TagID default,即。/content/cq:tags/default。 在這種情況下,標題預設為Standard Tags

容器標籤

容器標籤是包含任何數目和子節點類型的cq:Tag類型節點,因此可以使用自訂中繼資料來增強標籤模型。

此外,分類法中的容器標籤(或超標籤)是所有子標籤的子總和:例如,標籤為fruit/apple的內容也被視為標籤為fruit,即搜索僅標籤為fruit的內容也會找到標籤為fruit/apple的內容。

解析TagID

如果標籤ID包含冒號(:),冒號會將命名空間與標籤或子分類法分開,然後以一般斜線(/)分隔。 如果標籤ID沒有冒號,表示預設命名空間。

標籤的標準且唯一位置在/content/cq:tags下方。

引用未指向cq:Tag節點的非現有路徑或路徑的標籤被視為無效,並且會被忽略。

下表顯示一些示例TagIDs、其元素,以及TagID解析到儲存庫中絕對路徑的方式:

TagID 命名空間 本機ID 容器標籤 葉標籤 儲存庫絕對標籤路徑
dam:fruit/apple/braeburn dam fruit/apple/braeburn fruit,apple 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,借此允許或拒絕作者和網站訪客在指定命名空間中建立標籤。

拒絕某些標籤或命名空間的讀取權限將控制將標籤應用於特定內容的能力。

典型做法包括:

  • 允許tag-administrators組/角色對所有命名空間的寫入訪問(在/content/cq:tags下添加/修改)。 此群組隨附AEM現成可用。
  • 允許使用者/作者讀取應讀取之所有命名空間的存取權(大多為)。
  • 允許使用者/作者撰寫存取使用者/作者應可自由定義標籤的命名空間(add_node/content/cq:tags/some_namespace下)

可標籤內容:cq:可標籤的Mixin

為了讓應用程式開發人員將標籤附加到內容類型,節點的註冊(CND)必須包括cq:Taggable mixin或cq:OwnerTaggable mixin。

繼承自cq:Taggablecq:OwnerTaggable mixin旨在指出內容可由擁有者/作者分類。 在AEM中,它只是cq:PageContent節點的屬性。 標籤框架不需要cq:OwnerTaggable mixin。

注意

建議僅在匯總內容項目的頂層節點(或其jcr:content節點)上啟用標籤。 範例包括:

  • jcr:content節點為cq:PageContent類型的頁面(cq:Page),其中包含cq:Taggable混合。
  • 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屬性是String陣列,當作者或網站訪客將TagID套用至內容時,用於儲存一或多個。 只有在將屬性添加到以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或與標籤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。

本頁內容