要求

必备知识

  • 了解 AEM Mobile
  • 有关通过点播门户创建和发布内容的知识
  • 使用 On-Demand Services API 的经验

必要的产品

  • AEM Mobile
  • 访问 On-Demand Services API
  • 共享内容

共享内容介绍

On-Demand Services API(之前称为“Content Producer Service API”)允许第三方开发者与 On-Demand Services 集成。此服务允许您执行以下操作:

  • 管理文章
  • 管理集合
  • 管理产品
  • 管理推送通知

当您要发布多篇基于 HTML 的文章时,可以使用共享内容 API 来捆绑在这些文章之间共享的内容。本文说明如何使用共享内容。

在 AEM Mobile 中,您可以发布单个文章。每篇文章通过 article_name 来标识。设置共享内容时,将允许多篇基于 HTML 的文章使用相同的 CSS 和 Javascript 文件。

如果不使用共享内容,则每篇 HTML 文章需要包含各自的 CSS 和 JS 文件。

在此示例中,“css/style.css”和“js/main.js”文件在每篇文章中都会重复,从而导致开销。通过使用共享内容,这些文件可添加到一个 sharedContent 实体中并由每篇文章引用。

使用共享内容时,共享的文件存储在一个实体中并从多篇文章中进行引用。

了解动态共享内容

在 AEM Mobile 2017.2 版本(2017 年 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

    article_one 中的内容资源现在仅需使用“shared”(对于 sc_one)和“fonts”(对于 sc_two)前缀即可引用 dynamicSharedContent 实体中的内容。dynamicSharedContent 位于 HTML 文章的上一个目录中。

    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. 新的共享内容功能不会影响现有的共享内容工作流程。如果要利用动态共享内容,则必须更改现有共享内容以启用新的动态工作流程。

    当您准备好进行发布时,请发布动态共享内容。然后发布引用了共享内容的文章。

    要更新共享内容,请添加或更改动态共享内容中的资源并密封实体。预览引用了共享内容的文章,然后发布动态共享内容。引用文章中会反映所进行的更改。

注意:

目前还无法取消发布动态共享内容。在此功能获得支持之前,变通方法是从动态共享内容中删除所有文件内容并重新发布。您也可以从引用文章或动态横幅中删除指向此动态共享内容的符号链接。

共享内容的注意事项

在使用文章中的共享内容时,查看器必须先下载完整的共享内容实体,然后才可以呈现文章。请考虑创建多个共享内容实体,而不是使用一个包含所有共享内容的大型实体。

内容的访问路径取决于符号链接的创建,如第 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 许可  Twitter™ 与 Facebook 中的内容不在 Creative Commons 的条款约束之下。

法律声明   |   在线隐私策略