首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从CQ大坝中找到未使用的图像

如何从CQ大坝中找到未使用的图像
EN

Stack Overflow用户
提问于 2016-02-03 21:02:35
回答 3查看 2.1K关注 0票数 1

有没有办法从CQ大坝找到未使用的资产?目前,我们的CQ实例已经积累了大量的资产,到目前为止至少有25%没有被使用。我们的CQ实例正在windows (5.6)上运行。有更干净的方法来做同样的事情吗?

谢谢,Santhosh

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-04 09:59:17

您可以使用以下XPATH查询来获取所有资产:

代码语言:javascript
复制
/jcr:root/content/dam//*[@jcr:primaryType='dam:Asset']

使用QueryManger,您可以获得资产节点列表:

代码语言:javascript
复制
Workspace workspace = session.getWorkspace();
QueryManager qm = workspace.getQueryManager();
Query query = qm.createQuery(xpathQuery, Query.XPATH);
QueryResult queryResult = query.execute();
result = queryResult.getNodes();

接下来,您需要获取每个资产的路径并验证它是否被使用:

代码语言:javascript
复制
while(result.hasNext()) {
    Node assetNode = result.nextNode();
    String assetPath = assetNode.getPath();
}

要验证是否使用了它,您需要再次运行xpath:

代码语言:javascript
复制
/jcr:root/content/mywebsite//*[@fileReference='putAssetPathHere']

现在result.hasNext() == true意味着资产被使用了

票数 2
EN

Stack Overflow用户

发布于 2017-08-28 11:19:08

另一个解决方案是使用ReferenceSearch

代码语言:javascript
复制
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
            }
        }
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-12-27 13:32:29

对我来说,下面的代码奏效了。帮助链接:页面

代码语言:javascript
复制
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());

       }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35187627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档