网站结构在我的aem项目中为like this。
对于页脚组件,我正在使用以下代码:-
<div class="ftrsection" data-sly-repeat="${currentPage.listChildren}">
<h3 data-sly-test.child="${item.title}" >${child}</h3>
<ul class="footermenu">
<li data-sly-repeat.subpage="${item.listChildren}">
<a href="${subpage.path}.html" title="${subpage.title}" class="">${subpage.title}</a>
</li>
</ul>
</div>
当我进入主页时,它将其作为代码第一行中的当前页面,并完美地在页脚中显示网站层次结构as this
但是,当我进入内页(此处为探索页)时,它将其作为currectPage并显示我不想要的页脚as this。我希望整个站点保持不变。如何使其恒定?
答案 0 :(得分:0)
您可以创建一个Java使用对象(例如Footer.java
,该对象可以始终为您的网站获取正确的根页面。然后可以像这样调用它:
data-sly-use.footer=“Footer” data-sly-repeat=“${footer.rootPage.listChildren}”
答案 1 :(得分:0)
已解决。必须创建一个帮助器类以找到正确的根。
文件:Footer.java
package com.csmpl.bbsr.me.core.models;
import java.util.*;
import java.util.Iterator;
import com.day.cq.wcm.api.Page;
import com.day.cq.wcm.api.PageFilter;
import com.adobe.cq.sightly.WCMUsePojo;
public class Footer extends WCMUsePojo{
private List<Page> items = new ArrayList<Page>();
private Page rootPage;
// Initializes the navigation
@Override
public void activate() throws Exception {
rootPage = getCurrentPage().getAbsoluteParent(2);
if (rootPage == null) {
rootPage = getCurrentPage();
}
Iterator<Page> childPages = rootPage.listChildren(new PageFilter(getRequest()));
while (childPages.hasNext()) {
items.add(childPages.next());
}
}
// Returns the navigation items
public List<Page> getItems() {
return items;
}
// Returns the navigation root
public Page getRoot() {
return rootPage;
}
}
然后必须像这样在页脚的htl中访问该类:
<div class="ftrsection" data-sly-use.footer="com.csmpl.bbsr.me.core.models.Footer" data-sly-repeat="${footer.root.listChildren}">
<h3 data-sly-test.child="${item.title}" >${child}</h3>
<ul class="footermenu">
<li data-sly-repeat.subpage="${item.listChildren}">
<a href="${subpage.path}.html" title="${subpage.title}" class="">${subpage.title}</a>
</li>
</ul>
</div>
它奏效了。希望能帮助到你。 :)