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