Navigation 如何根据openCMS 8.5.2中的文件夹站点结构创建导航菜单?

Navigation 如何根据openCMS 8.5.2中的文件夹站点结构创建导航菜单?,navigation,navbar,opencms,Navigation,Navbar,Opencms,嗯,我正在尝试为一个网站制作一个导航菜单,自动从网站的文件夹结构中获取其值。我正在使用opencms导航标签。结构类似于: 菜单1 菜单2 子菜单2.1 子菜单2.2 子菜单2.2.1 子菜单2.3 我想要的是让所有元素能够始终显示相同的菜单,无论您当时处于哪个级别,子菜单都是下拉式的 问题是,我只能通过“forFolder”标记显示与您处于同一级别的元素。或者我可以显示整个树(带有“treeForFolder”),但也可以显示到您所在的级别,例如,如果您位于子菜单2.

嗯,我正在尝试为一个网站制作一个导航菜单,自动从网站的文件夹结构中获取其值。我正在使用opencms导航标签。结构类似于:

  • 菜单1
  • 菜单2
    • 子菜单2.1
    • 子菜单2.2
      • 子菜单2.2.1
    • 子菜单2.3
我想要的是让所有元素能够始终显示相同的菜单,无论您当时处于哪个级别,子菜单都是下拉式的

问题是,我只能通过“forFolder”标记显示与您处于同一级别的元素。或者我可以显示整个树(带有“treeForFolder”),但也可以显示到您所在的级别,例如,如果您位于子菜单2.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


提前谢谢

您可以对站点使用类型

像这样:

<cms:navigation type="forSite" startLevel="0" endLevel="3" var="nav"/>

看看API:

我不知道您是否还需要它(现在才找到),但这是我的导航菜单的代码,我想它也能帮助您:

<%@ 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>

动态导航 违约 ${element.navText} ${element.title}
  • 此树的列表如下所示:

    • 菜单1
    • 菜单2
      • 子菜单2.1
      • 子菜单2.2
        • 子菜单2.2.1
        • 子菜单2.2.2
      • 子菜单2.3
    其中所选菜单点为粗体

    我希望这就是你想要的。:)

    编辑:哦,如果你想要更多的深度,你可以增加endLevel