CQ-5(AEM)上的站点地图即使在取消选择“站点地图中的显示页面”后也会呈现子页面

时间:2016-03-04 20:26:39

标签: aem

当我取消选择“在网站地图中显示页面”时,我遇到了一个问题,它取消了父网页,但仍会呈现其子网页。

enter image description here

现在我假设它是一个简单的布尔检查,看看是否在页面属性中选择了“站点地图”。但是,如果这是解决方案,我不确定调用该变量是什么。

以下是我将其呈现给页面的方式:

private void printChildren(Page currentPage,JspWriter writer,List extraCategoryList)抛出IOException {         boolean childPagePrinted = false;         Page categoryPage = null;

Iterator<Page> childIterator = currentPage.listChildren();
while(childIterator.hasNext()) {

    Page childPage = childIterator.next();
    if(childPage.getProperties().get("showInSitemap") != null){

      if(childPage.getProperties().get("sitemapcategory") != null){
          extraCategoryList.add(childPage);
      }else{

        if(!childPagePrinted){
            writer.print("<ul>");
            childPagePrinted=true;
        }
        String pageHtml = getPageHtml(childPage);
        writer.print(pageHtml);   
      }
    }
    printChildren(childPage,writer,extraCategoryList);

}

if(childPagePrinted){
       writer.print("</ul>");
}

}

么?

1 个答案:

答案 0 :(得分:0)

那是因为在你的循环中,你仍然调用printChildren(childPage,writer,extraCategoryList); 你需要在if(childPage.getProperties()。get(“showInSitemap”)中移动这一行!= null)

现在无论选择什么,它仍然会调用它。 所以它应该是这样的:     Iterator childIterator = currentPage.listChildren();     while(childIterator.hasNext()){

    Page childPage = childIterator.next();
    if(childPage.getProperties().get("showInSitemap") != null){

        if(childPage.getProperties().get("sitemapcategory") != null){
            extraCategoryList.add(childPage);
        }else{

            if(!childPagePrinted){
                writer.print("<ul>");
                childPagePrinted=true;
            }
            String pageHtml = getPageHtml(childPage);
            writer.print(pageHtml);
        }
        // print the childs if we're printing the parent
        printChildren(childPage,writer,extraCategoryList);
    }

}

if(childPagePrinted){
    writer.print("</ul>");
}