将内容导入AEM

时间:2016-07-15 08:33:04

标签: import cq5 aem crx

我们有很多内容需要在AEM中导入。 什么是导入它的最佳方式?这是从excel文件导入的任何可能性吗?

check this example

导出的一个很好的例子是/etc/importers/bulkeditor.html我们可以用单个"属性/列"导出文件。我可以在哪里定义根路径和属性。

我试过这个包,但是不包含我喜欢的内容。 https://helpx.adobe.com/experience-manager/using/creating-custom-excel-service-experience.html

3 个答案:

答案 0 :(得分:0)

http://localhost:4502/etc/importers/bulkeditor.html

documentation

我只是按照上面链接上的说明进行了测试,但是它有效。

我的测试:

根路径= / content / myapp-path / rootpage

查询参数=“jcr:title”:我要在搜索中包含的内容的标题

内容模式=未选中

属性/ Columnos = sling:resourceType和 JCR:标题

自定义属性/列= landingTags

点击搜索...然后工作。

答案 1 :(得分:0)

可以通过多种方式将数据导入AEM。

对您而言,“正确”的方式取决于您的具体要求。

  • 这是一次性导入,还是您打算写一个 可重复使用的导入工具?
  • 是由程序员或管理员完成导入,还是 而不是编辑?
  • 您是否需要容错或回滚?你是 在高效的实例上工作?
  • ...

以下是一些或多或少的常见方式(从便宜/快速到广泛/舒适排序)以及文档或示例的链接:

  1. 编写bash脚本并使用cURL请求(1)
  2. 发布值
  3. 使用工作流程启动器(4)上传DAM中的数据,编写EventHandler(2),(7)或工作流程(3)并解析数据,然后更改存储库。
  4. 使用文件上传部分(5)将数据上传到自己组件的单独文件中,解析数据并更改存储库。
  5. 为了解析excel数据,我建议你使用apache poi(6),它已经包含在AEM中。但是使用像csv,json或xml这样的格式可能会为你节省大量的解析工作。

    (1):http://www.aemcq5tutorials.com/tutorials/adobe-cq5-aem-curl-commands/

    (2):https://osgi.org/javadoc/r4v42/index.html?org/osgi/service/event/EventHandler.html

    (3):https://docs.adobe.com/docs/en/aem/6-1/develop/extending/workflows/wf-extending.html

    (4):https://docs.adobe.com/docs/en/aem/6-1/administer/operations/workflows/wf-start.html

    (5):https://helpx.adobe.com/experience-manager/using/uploading-files-aem1.html

    (6):https://poi.apache.org/spreadsheet/index.html

    (7):代码示例

    @Service
    @Component(immediate = true, policy = ConfigurationPolicy.OPTIONAL, description = "Listen to page modification events and track them.")
    @Properties(value = { @Property(name = "event.topics", value = { PageEvent.EVENT_TOPIC, DamEvent.EVENT_TOPIC}, propertyPrivate = true),
                          @Property(name = JobConsumer.PROPERTY_TOPICS, value = ModificationEventHandler.JOB_TOPICS, propertyPrivate = true) })
    public class ModificationEventHandler implements EventHandler, JobConsumer {
    @Override public void handleEvent(Event event) {
        logger.trace("Checking event.");
        PageEvent pageEvent = PageEvent.fromEvent(event);
        DamEvent damEvent = DamEvent.fromEvent(event);
        Map<String, Object> properties = new HashMap<>();
        if (damEvent != null) {
            // DamEvent is not serializable, so we cannot add the complete event to the map.
            logger.trace("Event on {} is a dam event ({}).", damEvent.getAssetPath(), damEvent.getType().name());
            properties.put(DAM_EVENT_ASSET_PATH, damEvent.getAssetPath());
        }
        if (pageEvent != null) {
            logger.trace("Event is a page event.");
            properties.put(PAGE_EVENT, pageEvent);
        }
        logger.trace("Adding new job.");
        jobManager.addJob(JOB_TOPICS, properties);
    }
    

答案 2 :(得分:0)

可以使用:operation=importhttps://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#importing-content-structures通过SlingPostServlet导入内容。以下是从页面改编的示例:

curl -u admin:admin http://localhost:4502/content/mysite/mypage \ 
    -F":operation=import" \
    -F":contentType=json" 
    -F":name=sample" \    
    -F":content={ 'jcr:primaryType': 'nt:unstructured', 'propOne' : 'propOneValue', 'childOne' : { 'childPropOne' : true } }"

另一个作者友好的选项是CSV Asset Importer包中包含的ACS AEM Tools。您可以将Excel文件保存为CSV,这应该是一个简单的选项。