Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AEM 6中的面包屑_Aem_Breadcrumbs_Sightly - Fatal编程技术网

AEM 6中的面包屑

AEM 6中的面包屑,aem,breadcrumbs,sightly,Aem,Breadcrumbs,Sightly,我有一个创建面包屑的要求。我有以下代码,在JSP中运行良好。但是我正在努力将代码转换为sightly,因为我没有在currentStyle对象中获得正确的方法来获取“absParent”和其他。我们将非常感谢您的帮助 <%@ include file="/libs/foundation/global.jsp" %> <% final int startLevel = currentStyle.get("absParent

我有一个创建面包屑的要求。我有以下代码,在JSP中运行良好。但是我正在努力将代码转换为sightly,因为我没有在currentStyle对象中获得正确的方法来获取“absParent”和其他。我们将非常感谢您的帮助

        <%@ include file="/libs/foundation/global.jsp" %>
        <%

            final int startLevel = currentStyle.get("absParent", 3);
            final int endLevel = currentPage.getDepth() - currentStyle.get("relParent", 0);
            final int minItems = currentStyle.get("minItems", 2);
            if (startLevel <= endLevel - minItems) {
             %><section class="breadcrumbs"><%
                for (int level = startLevel+1; level < endLevel; ++level) {
                    Page itemPage = currentPage.getAbsoluteParent(level);
                    if (itemPage == null || !itemPage.isValid() || itemPage.isHideInNav()) {
                        continue;
                    }

                    final String pagePath = itemPage.getPath() + ".html";   
                    final String pageTitle = itemPage.getNavigationTitle();

                    String className = "breadcrumb-item-"+level;
                    if (level == startLevel) className += " breadcrumb-first";
                    if (level == endLevel-1) className += " breadcrumb-last";

                    pageContext.setAttribute("className", className);%>
                <section class="breadcrumbs ">
                        <a href="<%= xssAPI.getValidHref(pagePath) %>" class="breadcrumb-item"><%= xssAPI.encodeForHTML(pageTitle) %></a>
                </section>    

                <%} %>
            </section><%
            }

        %>


要创建面包屑,您必须编写一个WCMuse类并将其包含在此组件中

<div 
    data-sly-use.breadcrumb="${'com.mySite.components.BreadcrumbUse'}">
            <!-- + Breadcrumb component + -->
            <div class="breadcrumb component">
                <div class="breadcrumb_nav_bar clearfix"
                    data-sly-test="${breadcrumb.navList}"
                    data-sly-list.element="${breadcrumb.navList}">
                    <p data-sly-test="${!elementList.last}">
                        <a href="${element.path}.html">${element.title ||
                            element.navigationTitle || element.name}</a>
                    </p>
                    <p data-sly-test="${elementList.last}">${element.title ||
                        element.navigationTitle || element.name}</p>
                </div>
            </div>
            <!-- - Breadcrumb component - -->
</div>

${element.title|| element.navigationTitle | | element.name}

WCMUse类的代码示例:

Public class BreadcrumbUse extends WCMUse
{
    private List<Page> navList = new ArrayList<Page>();

    @Override
    public void activate() throws Exception
    {
        setBreadCrumbItems();
    }

    private void setBreadCrumbItems()
    {
        long level = 4L;
        long endLevel = 1L;
        int currentLevel = getCurrentPage().getDepth();
        while (level < currentLevel - endLevel)
        {
            Page trailPage = getCurrentPage().getAbsoluteParent((int) level);
            if (trailPage == null)
            {
                break;
            }
            this.navList.add(trailPage);
            level++;
        }
    }

    public List<Page> getNavList()
    {
        return this.navList;
    }

}
公共类面包屑总线扩展WCMUse
{
私有列表navList=newarraylist();
@凌驾
public void activate()引发异常
{
设置项目();
}
私有的无效项()
{
长电平=4L;
长端水平=1L;
int currentLevel=getCurrentPage().getDepth();
而(级别<当前级别-结束级别)
{
Page trailPage=getCurrentPage().getAbsoluteParent((int)级别);
if(trailPage==null)
{
打破
}
this.navList.add(trailPage);
级别++;
}
}
公共列表getNavList()
{
返回此.navList;
}
}

下面的代码将用于在AEM6.2中使用Javascript和HTL创建面包屑(以前很明显)。它对我很有效。现在开始

服务器端脚本中使用的Javascript(也可以使用java创建)

script.js

use(function () {
    var title = currentPage.getTitle();
   //To get the title of the current page
    var level = currentPage.getDepth();
   //To find the depth of the current page from the root
    var cts = new Array();
    // To store the traversed page (object) from the root
     for(var i=1;i<level;i++)
    {  // Here I used i=1 for mycase(i=0 will be /content)
        var titl = currentPage.getAbsoluteParent(i);
        //To get the absolute parent at each level from root
        pageStack.push(titl);
      //Stack to maintain the pages
    }
    return {
        title: title,
        pageStack:pageStack

    };
});
使用(函数(){
var title=currentPage.getTitle();
//获取当前页面的标题
var level=currentPage.getDepth();
//从根目录查找当前页面的深度
var cts=新数组();
//从根目录存储已遍历的页面(对象)
对于(var i=1;i
<sly data-sly-use.cpt="script.js">
    <h1>${cpt.title}</h1>
 <div data-sly-list="${cpt.pageStack}"> 
   <span> <a href ="${item.path}.html">${item.title}</a>/</span>
    </div> 
</div>