如何在AEM的整个站点中使页脚组件恒定?

时间:2018-12-13 04:42:33

标签: aem sightly

网站结构在我的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。我希望整个站点保持不变。如何使其恒定?

2 个答案:

答案 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>

它奏效了。希望能帮助到你。 :)