好吧,我正在尝试为网站创建一个导航菜单,该网站会自动从网站的文件夹结构中获取其值。我正在使用opencms导航标签。结构类似于:
我想要的是让所有元素能够始终显示相同的菜单,无论你当时的水平如何,下拉菜单中的子菜单。
问题在于我只能通过“forFolder”标签显示您所在级别的元素。或者我可以显示整个树(使用“treeForFolder”),但也可以显示您所在的级别,例如如果你在Submenu2.2,它将不会显示子菜单2.2.1 ......
<cms:navigation type="treeForFolder" var="nav" startLevel="2" endLevel="5"/>
<ul class="nav navbar-nav">
<c:forEach items="${nav.items}" var="elem">
<li><a href="<cms:link>${elem.resourceName}</cms:link>" class="${clase}">${elem.navText}</a></li>
</c:forEach>
</ul>
我怎样才能达到目的? StartLevel和EndLevel参数不会改变任何内容,因为它将显示直到您当前的导航级别。
我想使用cms nav标签,而不是直接通过java。
提前致谢!
答案 0 :(得分:0)
您可以使用 forSite 类型。
像这样:
<cms:navigation type="forSite" startLevel="0" endLevel="3" var="nav"/>
查看API: CmsJspNavigationBean
答案 1 :(得分:0)
我不知道你是否仍然需要它(现在才发现),但这里是导航菜单的代码,我觉得它也有帮助你:
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="org.opencms.jsp.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms"%>
<div id="subNav">
<cms:navigation var="nav" type="treeForFolder" startLevel="2" endLevel="5" />
<c:set var="oldLevel" value="" />
<c:forEach items="${nav.items }" var="element">
<c:set var="currentLevel" value="${ element.navTreeLevel}" />
<c:choose>
<c:when test="${empty oldLevel })"></c:when>
<c:when test="${currentLevel > oldLevel }">
<ul class="dropMenu">
</c:when>
<c:when test="${currentLevel == oldLevel }">
</li>
</c:when>
<c:when test="${currentLevel < oldLevel }">
<c:forEach begin="${currentLevel+1 }" end="${oldLevel }">
</li>
</ul>
</c:forEach>
</li>
</c:when>
</c:choose>
<c:choose>
<c:when
test="${fn:startsWith(cms.requestContext.uri, element.resourceName)}">
<c:set var="elementClass">activeNavigation</c:set>
</c:when>
<c:otherwise>
<c:set var="elementClass">default</c:set>
</c:otherwise>
</c:choose>
<c:set var="navText">${ element.navText}</c:set>
<c:if test="${empty navText or fn:contains(navText, '??? NavText') }">
<c:set var="navText">${element.title }</c:set>
</c:if>
<li><a class="${elementClass}" href="<cms:link>${element.resourceName}</cms:link>">${navText}</a>
<c:set var="oldLevel" value="${currentLevel }"></c:set>
</c:forEach>
<c:if test="${!empty oldLevel}">
</li>
</ul>
</c:if>
</div>
此树列出如下:
所选菜单点为粗体。
我希望这就是你要找的东西。 :)
编辑:哦,如果你想要更深入,你可以增加endLevel。