有没有办法从CQ大坝找到未使用的资产?目前,我们的CQ实例已经积累了大量的资产,到目前为止至少有25%没有被使用。我们的CQ实例正在windows (5.6)上运行。有更干净的方法来做同样的事情吗?
谢谢,Santhosh
发布于 2016-02-04 09:59:17
您可以使用以下XPATH查询来获取所有资产:
/jcr:root/content/dam//*[@jcr:primaryType='dam:Asset']使用QueryManger,您可以获得资产节点列表:
Workspace workspace = session.getWorkspace();
QueryManager qm = workspace.getQueryManager();
Query query = qm.createQuery(xpathQuery, Query.XPATH);
QueryResult queryResult = query.execute();
result = queryResult.getNodes();接下来,您需要获取每个资产的路径并验证它是否被使用:
while(result.hasNext()) {
Node assetNode = result.nextNode();
String assetPath = assetNode.getPath();
}要验证是否使用了它,您需要再次运行xpath:
/jcr:root/content/mywebsite//*[@fileReference='putAssetPathHere']现在result.hasNext() == true意味着资产被使用了
发布于 2017-08-28 11:19:08
另一个解决方案是使用ReferenceSearch
for (String path : paths) {
if (resourceResolver.getResource(path) != null) {
Map<String, ReferenceSearch.Info> searchResult = referenceSearch.search(resourceResolver, path);
if (searchResult.isEmpty()) {
//path is unused asset
}
//get used pages
for (Map.Entry<String, ReferenceSearch.Info> info : searchResult.entrySet()) {
info.getKey();//will return page path
}
//get used properties paths
for (Map.Entry<String, ReferenceSearch.Info> info : searchResult.entrySet()) {
for (String prop : info.getValue().getProperties()) {
//prop is property path
}
}
}
}发布于 2018-12-27 13:32:29
对我来说,下面的代码奏效了。帮助链接:页面
String damPath = "/content/dam/geometrixx/offices/basel kitchen.jpg";
for (ReferenceSearch.Info info: new ReferenceSearch().search(resourceResolver, damPath).values()) {
for (String p: info.getProperties()) {
out.println("Path is "+info.getPage().getPath());
}https://stackoverflow.com/questions/35187627
复制相似问题