瞭解 components.json 檔案與格式

主題必須要有一個指定主題中所使用元件的 components.json 檔案,它的位置在 /ThemeName/components.json

此檔案必須包含有效的 JSON,而且最低極限為必須包含一個空的 JSON 陣列 []

components.json 檔案語法會列出所有本機元件並完全支援元件分類。(遠端元件在「元件目錄」中註冊。)

不論您在主題層級的 components.json 檔案中增加了哪些元件 (包括未增加任何元件),Oracle Content Management 都會提供一組預設的元件供使用者使用。此預設集合在原始程式碼中定義。下列清單顯示這些元件和內嵌框架中呈現的 (內建) 元件。此外,在服務層級註冊並提供給執行處理中使用者使用的所有遠端元件,也都可在「網站產生器」中使用。

Oracle Content Management 包含下列本機元件。

名稱 類型 ID

標題

scs-title

scs-title

段落

scs-paragragh

scs-paragragh

影像

scs-image

scs-image

圖庫

scs-gallery

scs-gallery

圖庫格線

scs-gallerygrid

scs-gallerygrid

文件

scs-document

scs-document

按鈕

scs-button

scs-button

地圖

scs-map

scs-map

分隔線

scs-divider

scs-divider

空白間隔

scs-spacer

scs-spacer

YouTube

scs-youtube

scs-youtube

社群列

scs-socialbar

scs-socialbar

視訊

scs-video

scs-video

文章 (自訂元件)

scs-component

scs-comp-article

大標題 (自訂元件)

scs-component

scs-comp-headline

影像與文字 (自訂元件)

scs-component

scs-comp-image-text

Oracle Content Management 包含以下這些在內嵌框架呈現的元件。其中並不包括註冊的遠端元件。

名稱 類型 ID

對話

scs-app

對話

文件管理程式

scs-app

文件管理程式

資料夾清單

scs-app

資料夾清單

檔案清單

scs-app

檔案清單

Facebook 按讚

scs-app

Facebook 按讚

Facebook 推薦

scs-app

Facebook 推薦

Twitter 跟隨

scs-app

Twitter 跟隨

Twitter 分享

scs-app

Twitter 分享

一般格式

components.json 檔案的一般格式如下:

  • 元件特性在各元件內指定。最上層 "components""apps" 特性已不再使用。

  • 每個元件都有 "type" 特性。元件只能有某些值 (所有可能的值都列在預設元件表格中)。

  • 每個元件都有 "id" 特性且必須是唯一的。此特性用來區分 "type" 相同的元件。應用程式先前有 "appName" 特性。雖然 "appName" 在無 "id" 特性時仍可使用,但 "appName" 特性其實已不再使用。

  • 每個元件都有 "name" 特性,此為使用者介面中的顯示名稱。若未指定後備值,對元件而言,此值為相對應之預設元件的名稱;對遠端元件而言,此值為 ID。

以下為 components.json 檔案範例:

[
    {
        "name": "COMP_CONFIG_TEXT_CATEGORY_NAME",
        "list": [
            {
                "type": "scs-title",
                "id": "my-headline",
                "name": "My Headline",
                ...
            },
            {
                ...
            },...
        ]
    },
    {
        "name": "My own category name",
        "list": [ ... ]
    }
]

一般結構為類別物件的 JSON 陣列。每個類別物件都有一個 "name" 特性和 "list" 特性。"name" 特性可以是對應至某個本地化字串的鍵值。如果這些預設類別不夠用,您可以提供自己的類別名稱,但這些類別不會被本地化。下表列出可用的預設類別和相對應的鍵值。

鍵值 類別名稱 (英文)

COMP_CONFIG_CONTENT_CATEGORY_NAME

Content

COMP_CONFIG_CUSTOM_CATEGORY_NAME

Custom

COMP_CONFIG_MEDIA_CATEGORY_NAME

Media

COMP_CONFIG_SOCIAL_CATEGORY_NAME

Social

COMP_CONFIG_TEXT_CATEGORY_NAME

Text

每個類別物件中的 "list" 特性都包含一個元件物件陣列。每個元件或物件都必須要有 "type""id" 特性。其他特性則為選擇性。

  • "type" 特性必須是預設元件中的其中一種類型。"type" 若不存在,該元件就不會顯示。

  • "id" 特性在所有元件中必須是唯一的。"id" 若已經存在,該元件就不會顯示。

  • "name" 特性是元件在使用者介面中的顯示名稱。這取代了先前應用程式 (現在為遠端元件) 的 "appName" 特性。

  • 所有其他特性則如先前版本等同視之。

新增元件至 components.json

您不能修改預設元件。但是,可以根據現有的預設元件建立新元件。例如,可以根據 "scs-title" 元件 (已設定一些預設文字) 建立一個新元件。新增元件的最低要求是需指定 "type""id" 特性。

  • "type" 必須是預設元件中的其中一種類型。"type" 若不存在,該元件就不會顯示。

  • "id" 在所有元件中必須是唯一的。"id" 若已經存在,該元件就不會顯示。

以下是新增標題元件的程式碼範例。此元件將會與預設標題元件一起顯示。

[
    {
        "name": "COMP_CONFIG_TEXT_CATEGORY_NAME",
        "list": [
            {
                "type": "scs-title",
                "id": "my-headline"
            }
        ]
    }
]

以下是新增標題元件 (含顯示名稱和預設文字) 的程式碼範例。

[
    {
        "name": "COMP_CONFIG_TEXT_CATEGORY_NAME",
        "list": [
            {
                "type": "scs-title",
                "id": "my-headline",
                "name": "My Headline",
                "initialData": {
                    "userText": "This is a second title component"
                }
            }
        ]
    }
]

請注意,標題元件會以預設標題元件的所有特性為基礎,然後在預設元件套用主題層級的修改,以建立新元件。

回溯相容性

先前格式的 components.json 檔案仍可供讀取。

  • 檔案包含最上層 "components""apps" 特性。

  • 檔案若包含 "apps" 特性,系統仍會載入此特性底下的使用者定義遠端元件。

  • 檔案若包含最上層 "apps" 特性,系統會假設此特性底下之所有遠端元件的類型都是 "scs-app"

  • 若有 "appName" 特性,請將 "id" 設為 "appName" 值。如果指定,顯示名稱會與 "name" 相同,否則為 "id" 值。