需求

必備知識

必要產品

  • AEM Mobile
  • On-Demand Services API 的存取權
  • 共用內容

共用內容簡介

On-Demand Services API (先前稱為「Content Producer Service API」) 可讓協力廠商開發人員將產品與隨選服務整合。此服務可讓您執行下列動作:

  • 管理文章
  • 管理系列
  • 管理產品
  • 管理推播通知

當您想要發佈多個以 HTML 為基礎的文章時,可以使用 Shared Content API 來包裹這些文章所共用的內容。本文將說明如何使用共用內容。

在 AEM Mobile 中,您可以發佈個別文章。每個文章都是以其 article_name 識別。當設定共用內容時,您可以讓多個以 HTML 為基礎的文章使用相同的 CSS 和 Javascript 檔案。

若不使用共用內容,每個 HTML 文章就必須包含各自的 CSS 和 JS 檔案。

在此範例中,「css/style.css」和「js/main.js」檔案會複製到每個文章中,並造成額外負荷。使用共用內容,這些檔案就可以新增至一個 sharedContent 實體中,並由每個文章參照。

使用共用內容時,共用檔案會儲存在單一實體中,並從多個文章參照。

了解動態共用內容

在 AEM Mobile 2017.2 版本 (2017 年 2 月 6 日) 中,動態共用內容可讓您更新共用內容,而不需要更新參照共用內容的文章。在這個版本之前,使用 sharedContent 實體時,您必須同時更新共用內容以及連結至該內容的文章。然後,應用程式用戶必須點選「更新」提示才能取得更新。在這個版本中,您可以使用新的 dynamicSharedContent 實體來上傳共用內容。當您更新動態共用內容並發佈之後,系統就會自動針對所有參照的文章進行變更。您再也不需要更新參照的文章,而且用戶再也不需要點選「更新」提示。

sharedContentdynamicSharedContent 這兩種工作流程都受到支援。本節探討的主題是如何使用動態共用內容。如果您想要改用先前的共用內容工作流程,請在適當情況下,以 sharedContent 取代 dynamicSharedContent

 

使用共用內容

  1. 建立每個文章的文章實體。

  2. 將文章內容 (與 manifest.xml 一起壓縮) 上傳至擷取服務。如需詳細資訊,請參閱「建立適用於 AEM Mobile 的 HTML 文章」。

  3. 建立共用內容實體。要求主體必須包含標準的實體中繼資料屬性。請注意在下列範例中,「sc_one」欄位是 dynamicSharedContent 實體名稱。

    PUT /publication/<projectID>/dynamicSharedContent/sc_one
  4. 從產生的已建立實體中取得 contentUrl (回應的一部分)。

    {
        …
        "_links": {
            …
            "contentUrl": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/"
        }
    }
  5. 將共用資源上傳至此 contentUrl。

    範例:

    PUT /publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/css/style.css
    PUT /publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/js/main.js
  6. 密封 (認可) dynamicSharedContent 實體的內容。

    PUT /publication/<projectId>/dynamicSharedContent/sc_one;version=<entVersion>/contents
  7. 從密封的實體中取得更新的 contentUrl (回應的一部分)。

    {
        …
        "_links": {
            …
            "contentUrl": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion2>/"
        }
    }
  8. 在文章中,上傳參照共用 contentUrl 的符號連結資產。請注意在下列範例中,「article_one」欄位是文章實體名稱,而「shared」欄位則是包含共用內容的檔案夾名稱。首先,請執行 GET 呼叫以取得最新的 dynamicSharedContent 實體版本。接著,更新共用資源的連結。

    PUT /publication/<projectId>/article/article_one/contents;contentVersion=<cVersion3>/dynamicShared
    Content-Type:  application/vnd.adobe.symboliclink+json
    {"href": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion2>/"}
  9. 在相同文章中,設定另一個共用內容實體的其他參照。

    PUT /publication/<projectId>/article/article_one/contents;contentVersion=<cVersion3>/fonts
    Content-Type:  application/vnd.adobe.symboliclink+json
    {"href": "/publication/<projectId>/dynamicSharedContent/sc_two/contents;contentVersion=<cVersion2>/"}

    請注意,Content-Type 標頭會將此資源識別為符號連結,資源名稱 (在此範例中為「article_one」) 會識別符號連結的來源,而上傳的資產內容則會識別目標。

  10. 密封 (認可) 參照實體的內容。

     

    PUT /publication/<projectId>/article/article_one;version=<entVersion>/contents

    現在使用「shared」(sc_one) 和「fonts」(sc_two) 前置詞,article_one 內的內容資產就可以參照 dynamicSharedContent 實體中的內容。相對於 HTML 文章,dynamicSharedContent 位於它的上一層目錄中。

    article_one 的 HTML 內容會以下列方式參照 javascript 和 css:

    <script src="../shared/js/logic.js"></script>
    <link rel="stylesheet" type="text/css" href="../shared/css/style.css">

    字體可透過下列方式取得:

    @font-face {
      font-family: "myFirstFont";
      src: "url(../fonts/Exotic_Regular.woff");
    }
  11. 針對非預備應用程式發佈 dynamicSharedContent 實體,或針對啟用預備的應用程式觸發預備,藉以將 dynamicSharedContent 實體的變更傳播至所有參照的文章。

    PUT /job
    {
        "workflowType": "publish",
        "entity": {
            "/publication/dynamicSharedContent/sc_one;version=<entVersion>"
        }
    }

將現有的共用內容轉換成動態共用內容

新的共用內容功能不會影響現有的共用內容工作流程。如果您想要運用動態共用內容,就必須變更您現有的共用內容,才能啟用新的動態工作流程。

  1. 建立新的 dynamicSharedContent 實體。

  2. 將先前 sharedContent 實體的所有資產都新增至新的 dynamicSharedContent 實體並密封實體的內容。

  3. 更新每篇文章的符號連結 (symlink) 檔案,使其指向密封版本中新的 dynamicSharedContent 實體。

  4. 預覽 (預備) 專案內容。文章應該會提供動態內容。

  5. 新的共用內容功能不會影響現有的共用內容工作流程。如果您想要運用動態共用內容,就必須變更您現有的共用內容,才能啟用新的動態工作流程。

    當您準備好發佈時,請發佈動態共用內容。然後,發佈參照共用內容的文章。

    若要更新共用內容,請在動態共用內容中新增或變更資產並且密封實體。預覽參照共用內容的文章,然後發佈動態共用內容。這些變更就會反映在參照的文章中。

註解:

目前,您無法解除發佈動態共用內容。在這個選項受到支援之前,因應措施是從動態共用內容中移除所有檔案內容並重新發佈。您也可以從參照的文章或動態橫幅中移除這個動態共用內容的 symlink。

共用內容的考量

當您在文章中使用共用內容時,檢視器必須下載完整的共用內容實體,才能呈現文章。請考慮建立多個共用內容實體,而不使用一個包含所有共用內容的大型實體。

可取得內容的路徑取決於符號連結的建立,如步驟 8 和 9 所示。在步驟 8 中,sc_one 是在「shared」路徑下參照。在步驟 9 中,sc_two 是在「fonts」路徑下參照。您可以比較共用內容的運作方式與 Unix 作業系統中的符號連結用法。

共用內容只能透過 On-Demand Services API 管理。隨選服務入口網站中目前沒有管理共用內容的用戶介面。

On-Demand Services API 包含 sharedContent 的範例,請查看 /sharedContent 檔案夾。

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策