如何在AEM中获取Smart Collection中的所有资源?
How to get all the assets in a Smart Collection in AEM?
根据智能 collection 的路径,我正在尝试在 AEM 中获取智能 collection 中的所有资产。
我可以通过在 sling:members
下获取节点路径来为正常的 collection 执行此操作
但是如何获取一个Smart的所有资产Collection
sling:members 下的数据为空,因此我的代码仅适用于普通 collections 而不是智能 Collection
鉴于 java
中智能 collection 的路径,我希望获得智能 Collection 的所有资产
这是一个简单的片段,您可以 运行 使用 AEM Groovy Console:
// https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/javadoc/com/day/cq/dam/api/collection/SmartCollection.html
import com.day.cq.dam.api.collection.SmartCollection;
import com.day.cq.dam.api.Asset;
def SMART_COLLECTION_PATH = "/content/dam/collections/J/Jx4h69ABp_KoLbZJ-8dq/test-collection";
def smartCollectionResource = getResource(SMART_COLLECTION_PATH)
def smartCollection = smartCollectionResource.adaptTo(SmartCollection.class)
smartCollection
.getQuery()
.getResult()
.getNodes()
.each {
def assetResource = getResource(it.path);
def asset = assetResource.adaptTo(Asset.class)
println asset.path
}
基本要点是您可以获得智能集合资源,然后将其调整为 SmartCollection 从那里您可以调用 getQuery
、执行查询、获取节点并将它们调整为资产对象或直接处理节点。在上面的代码中,我打印了资源路径。
即使上面的代码是groovy,也很简单,你可以很快将它转换成java。
根据智能 collection 的路径,我正在尝试在 AEM 中获取智能 collection 中的所有资产。
我可以通过在 sling:members
下获取节点路径来为正常的 collection 执行此操作但是如何获取一个Smart的所有资产Collection
sling:members 下的数据为空,因此我的代码仅适用于普通 collections 而不是智能 Collection
鉴于 java
中智能 collection 的路径,我希望获得智能 Collection 的所有资产这是一个简单的片段,您可以 运行 使用 AEM Groovy Console:
// https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/javadoc/com/day/cq/dam/api/collection/SmartCollection.html
import com.day.cq.dam.api.collection.SmartCollection;
import com.day.cq.dam.api.Asset;
def SMART_COLLECTION_PATH = "/content/dam/collections/J/Jx4h69ABp_KoLbZJ-8dq/test-collection";
def smartCollectionResource = getResource(SMART_COLLECTION_PATH)
def smartCollection = smartCollectionResource.adaptTo(SmartCollection.class)
smartCollection
.getQuery()
.getResult()
.getNodes()
.each {
def assetResource = getResource(it.path);
def asset = assetResource.adaptTo(Asset.class)
println asset.path
}
基本要点是您可以获得智能集合资源,然后将其调整为 SmartCollection 从那里您可以调用 getQuery
、执行查询、获取节点并将它们调整为资产对象或直接处理节点。在上面的代码中,我打印了资源路径。
即使上面的代码是groovy,也很简单,你可以很快将它转换成java。