OpenCMS动态生成导航菜单

这个动态生成导航是根据OpenCMS中的Demo完成。

 1. 添加模板:在/system/modules/模块名/templates/下添加navtemplate,定义head元素。其中引入模块element文件夹里面的nav.jsp:

<%@ page session="false" %>

<%-- --%>

<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>

<% // init %>



<cms:template element="head">

<%-- --%>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>OpenCms - <cms:property name="Title" escapeHtml="true" /></title>

 <meta HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=<cms:property name="content-encoding" default="ISO-8859-1" />"> 

<cms:editable /> 

</head>



<body> 

<!-- Navigation starts here -->

<cms:include file="../elements/book_nav.jsp" />

<!-- Navigation ends here -->

<br clear="all"> 

<!-- Main page body starts here -->

</cms:template>

2. 添加导航JSP: nav.jsp是遍历文件的核心,在模块element文件夹里面,代码如下:

<%@ page import="org.opencms.jsp.*" %>

<% 

// Create a JSP action element 

CmsJspActionElement cms = new CmsJspActionElement(pageContext, request, response); 



// Some shortcuts to often used Strings 

String filename = cms.getRequestContext().getUri(); 



// List of all pages / subfolders (sorted by NavPos property)

java.util.List list = cms.getNavigation().getNavigationForFolder(); 

java.util.Iterator i = list.iterator(); 



// Now build the navigation 

out.println("<p class=/"small/">Navigation: "); 

while (i.hasNext()) { 

CmsJspNavElement ne = (CmsJspNavElement)i.next(); 

if (! ne.getResourceName().equals(filename)) { 

out.println("<a href=/"" + cms.link(ne.getResourceName()) + "/">" + ne.getNavText() + "</a>"); } 

else { 

    out.println(ne.getNavText()); } 

if (i.hasNext()) { 

out.println(" | "); } } 

out.println("</p>"); 

%> 



3. 建立测试页面:切换到/sites/default/,在站点所在目录下建立temp.jsp,页面高级属性中,定义其所用的模板为:/system/modules/模块名/templates/navtemplate

<%@ page session="false" %>

<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>

<cms:include property="template" element="head" />

 

这样,浏览temp.jsp就会根据其所在目录下所有文件的NavText属性显示动态导航了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值