我们有很多内容需要在AEM中导入。 什么是导入它的最佳方式?这是从excel文件导入的任何可能性吗?
导出的一个很好的例子是/etc/importers/bulkeditor.html我们可以用单个"属性/列"导出文件。我可以在哪里定义根路径和属性。
我试过这个包,但是不包含我喜欢的内容。 https://helpx.adobe.com/experience-manager/using/creating-custom-excel-service-experience.html
答案 0 :(得分:0)
http://localhost:4502/etc/importers/bulkeditor.html
我只是按照上面链接上的说明进行了测试,但是它有效。
我的测试:
根路径= / content / myapp-path / rootpage
查询参数=“jcr:title”:我要在搜索中包含的内容的标题
内容模式=未选中
属性/ Columnos = sling:resourceType和 JCR:标题
自定义属性/列= landingTags
点击搜索...然后工作。
答案 1 :(得分:0)
可以通过多种方式将数据导入AEM。
对您而言,“正确”的方式取决于您的具体要求。
以下是一些或多或少的常见方式(从便宜/快速到广泛/舒适排序)以及文档或示例的链接:
为了解析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=import
:https://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,这应该是一个简单的选项。