AEM Mobile 内容更新处理程序

AEM Mobile Content Update Handlers

我指的是 aem-phonegap-kitchen-sink and aem-phonegap-starter-kit。我到了可以导出我的 PhoneGap 应用程序、构建和 运行 的地步。但是,我尝试将其他图像添加到我的一个页面模板中。仅导出名为 image 的图像资源。所有其他图像都将被忽略。如果您在下方看到我的内容树,image 将导出为 page-one.img.png,但其他两个将被忽略。

我开始研究 aem-phonegap-kitchen-sink 和 [aem-phonegap-starter-kit] 的 ContentSync 配置,我发现这些处理程序被引用了

我查找了 content sync documentation(我使用的是 6.1),但这只提到了简单的处理程序,如 copyassets

我找遍了所有地方,但找不到关于它们的文档。我认为 mobilepageassets 是导出我的图像的内容。

那么如何导出我的其他图像?

更新

我试图将 wcm/foundation/components/image 添加到 com.day.cq.wcm.contentsync.impl.handler.PagesUpdateHandler OSGi 配置中。这没有效果。 我还尝试将我的图像资源类型切换为 foundation/components/image。那也没有效果。

由于找不到任何文档,我找到了 mobilepageassets 的内容更新处理程序实现并对其进行了反编译。

custom handler component 是用

创建的
@Component(factory="com.day.cq.contentsync.handler.ContentUpdateHandler/identifier")

所以为了找到 mobilepageassets 实现,我去了 services console 并使用

进行了过滤器查找
(component.factory=*mobilepageassets)

从那里,我能够通过 Luyten 反编译器获得实现 class,以及我下载的 JAR 文件和 运行 的位置。

通过查看该来源,我明白了两件事:

  1. 我得到 page-name.img.png 的唯一原因是我碰巧将我的图像资源命名为 image,这与 WCM 页面缩略图使用的名称相同。
  2. 这个更新处理程序读取它自己的 OSGi 配置,它有一个 属性 用于 cq.pagesupdatehandler.imageresourcetypes

最后,我添加了 com.adobe.cq.mobile.platform.impl.contentsync.handler.MobilePageAssetsUpdateHandler OSGi 配置

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="sling:OsgiConfig"
    cq.pagesupdatehandler.imageresourcetypes="[wcm/foundation/components/image]"/>

确实导出了我的图像,但是路径错误。他们被导出到一个 'jcr_content' 文件夹,标记在其中寻找“__jcr_content”。我确实注意到在 PG 入门套件和厨房水槽中对此进行了特殊处理。我没有实现自己的图像组件,而是发现 mobileapps/components/image 这对我的需要来说足够简单了。在那种情况下,我什至不需要 OSGi 配置。

即使在 AEM 6.2 中,您也可以在 OSGi 控制台中为以下服务添加组件的资源类型:

com.adobe.cq.mobile.platform.impl.contentsync.handler.MobilePageAssetsUpdateHandler.name -

com.adobe.cq.mobile.platform.impl.contentsync.handler.MobilePagesUpdateHandler.name -

com.adobe.cq.mobile.platform.impl.contentsync.handler.MobileRootPageUpdateHandler.name -

com.adobe.cq.mobile.platform.impl.contentsync.handler.OffersUpdateHandler.name