modulestwo中的main.jsp的构建过程
第一步构建头部区域
<head>
<title><cms:property name="Title" file="search" /></title>
<meta name="description" content="<cms:property name="Description" file="search" />" >
<meta name="keywords" content="<cms:property name="Keywords" file="search" />" >
<meta http-equiv="Content-Type" content="text/html; charset=<cms:property name="content-encoding" file="search" default="<%= OpenCms.getSystemInfo().getDefaultEncoding() %>"/>" >
<meta name="robots" content="index, follow" >
<meta name="revisit-after" content="7 days" >
<!-- insert stylesheets needed for the template -->
<c:forEach items="${cms.stylesheets}" var="cssFile">
<link href="<cms:link>${cssFile}</cms:link>" rel="stylesheet" type="text/css">
</c:forEach>
<link href="<cms:link>../resources/css/style.css?preset=${cms.presetPath}&style=${cms.stylePath}</cms:link>" rel="stylesheet" type="text/css">
<!--[if lte IE 6]>
<link href="<cms:link>%(link.weak:/system/modules/com.bestsoft/resources/css/patch_ie.css:8ffaafcc-e131-11dc-bbcd-3bdd2ea0b1ac)</cms:link>" rel="stylesheet" type="text/css">
<![endif]-->
<!-- insert individual stylesheet -->
<c:set var="stylesheet"><cms:property name="stylesheet" file="search"/></c:set>
<c:if test="${!empty stylesheet}">
<link href="<cms:link>${stylesheet}</cms:link>" rel="stylesheet" type="text/css">
</c:if>
<cms:editable/>
</head>
主要是用CmsTemplateLayout类去读取样式表和基本框架的内容
第二步构件body区
1)头部导航区域
<div id="topnav">
<a href="#content" class="skip">Skip to Main Content</a>
<c:if test="${!cms.options.value['TopNav'].isEmptyOrWhitespaceOnly}">
<c:out value="${cms.options.value['TopNav']}" escapeXml="false" />
</c:if>
</div>
<c:if test="${!cms.options.value['Header'].isEmptyOrWhitespaceOnly}">
<c:out value="${cms.options.value['Header'].resolveMacros}" escapeXml="false" />
</c:if>
</div>
<!-- end: header -->
<!-- begin: main navigation -->
<c:choose>
<c:when test="${!empty cms.styleValue['nav.main']}">
<cms:include file="${cms.styleValue['nav.main']}"/>
</c:when>
<c:otherwise>
<!-- <cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/menu/nav_style2.jsp:ee5498d9-dbe4-11dc-b087-3bdd2ea0b1ac)"/> -->
</c:otherwise>
</c:choose>
<!-- end: main navigation -->
<!-- begin: breadcrumb -->
<div id="breadcrumb">
<cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/breadcrumb.jsp:e72c6f1c-dbb3-11dc-af66-3bdd2ea0b1ac)" />
</div>
<!-- end: breadcrumb -->
读区站点config文件中的option设置,主要内容有头部导航和头部图片和底部的logo;
用resources中的nav_style.jsp与breadstrumb.jsp去动态导航;
第三步构建左部区域
<div id="col1">
<div id="col1_content" class="clearfix">
<c:if test="${cms.presetValue['column.left.visible'] == 'true'}">
<!-- include the left navigation menu -->
<c:if test="${cms.presetValue['nav.left.visible'] == 'true'}">
<cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/menu/nav_left.jsp:ee1ea4f4-d97c-11dc-bc65-3bdd2ea0b1ac)" />
</c:if>
<!-- include the boxes on the left side -->
<cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/boxes.jsp:622548e8-d886-11dc-8ec1-3bdd2ea0b1ac)">
<cms:param name="orientation" value="left" />
<cms:param name="config" value="${cms.configPath}" />
</cms:include>
</c:if>
</div>
</div>
读取框架文件,由nav_left.jsp去动态创建左边的内容
第四步,构建右部区域
<div id="col3">
<div id="col3_content" class="clearfix">
<c:catch>
<c:set var="page" value="${cms:vfs(pageContext).readXml[cms:vfs(pageContext).context.uri]}" />
</c:catch>
<!-- include the boxes on the right side -->
<c:if test="${cms.presetValue['column.right.visible'] == 'true'}">
<cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/boxes.jsp:622548e8-d886-11dc-8ec1-3bdd2ea0b1ac)">
<cms:param name="orientation" value="right" />
<cms:param name="config" value="${cms.configPath}" />
</cms:include>
</c:if>
</div>
</div>
同样由preset指定,由boxes.jsp来创建内容
第五步,构建中间和底部区域
<div id="col2">
<div id="col2_content" class="clearfix">
<!-- anchor for accessible link to main content -->
<a id="content" name="content"></a>
</cms:template>
<cms:template element="body">
<cms:include element="body" editable="true"/>
</cms:template>
<cms:template element="foot">
<!-- include the second body from an xml page, if available -->
<c:if test="${page.hasValue['body2']}">
<cms:include element="body2" editable="true"/>
</c:if>
<!-- include the boxes in the center -->
<cms:include file="%(link.weak:/system/modules/com.bestsoft/elements/boxes.jsp:622548e8-d886-11dc-8ec1-3bdd2ea0b1ac)">
<cms:param name="orientation" value="center" />
<cms:param name="config" value="${cms.configPath}" />
</cms:include>
</div>
<div class="clear"> </div>
</div>
<!-- end: center column -->
</div>
<!-- end: content area -->
<!-- begin: #footer -->
<div id="footer">
<c:if test="${!cms.options.value['Footer'].isEmptyOrWhitespaceOnly}">
<c:out value="${cms.options.value['Footer'].resolveMacros}" escapeXml="false" />
</c:if>
</div>
<!-- end: #footer -->
</div>
中间是可编辑区域,最后读取option文件来配置底部框架
分享到:
相关推荐
本开发学习笔记旨在记录在使用该版本时遇到的问题及其解决方案,帮助开发者更好地理解和掌握 Opencms 的核心功能。 1. **Opencms 介绍和环境搭建** - **简介**:Opencms 是一个基于 Java 技术的 CMS 平台,它提供...
3. **模块开发**:学习如何扩展OpenCms的功能,开发自定义模块。这包括理解和使用OpenCms的API,创建新的内容类型,以及构建可复用的服务和组件。 4. **集成与扩展**:书中会涵盖OpenCms与其他系统的集成,如CRM、...
4. **OpenCMS API**:学习和掌握OpenCMS提供的API,例如内容服务、用户管理、权限控制等,这将帮助你实现自定义功能。例如,`org.opencms.file.CmsObject`是核心接口,用于与OpenCMS系统交互。 5. **模块开发**:...
《OpenCms开发指南》:深入理解与定制OpenCms OpenCms是一款开源的内容管理系统,旨在为企业级网站提供高效、...通过本书的学习,读者将掌握OpenCms的核心功能和开发技巧,为构建高质量的企业级网站打下坚实的基础。
本书不仅体现了作者深厚的理论功底,还融入了其丰富的实践经验,对于想要学习OpenCMS的读者来说是一本不可多得的好书。 #### 六、总结 OpenCMS作为一款成熟且功能丰富的开源CMS系统,在构建和管理网站方面展现出了...
【OpenCms "傻瓜建站"之 templateTwo 模块】 OpenCms 是一个流行的开源内容管理系统,从7.0.4版本开始引入了templateTwo模块,它在7.0.5版本中进一步完善,成为了templateOne的升级替代方案。templateTwo的主要特点...
OpenCMS 是一个开源的内容管理系统(CMS),主要由Java语言开发,专为构建企业级网站提供了一个强大而灵活的平台。其Java API 提供了丰富的功能,使得开发者可以通过编程方式与OpenCMS系统进行交互,实现内容的创建...
OpenCms是一款强大的开源内容管理系统(CMS),专为构建和管理网站而设计。这款系统以其易用性、灵活性和可扩展性赢得了用户的喜爱。本文将深入解析OpenCms的中文文档,帮助用户快速掌握该系统的各项功能和操作。 ...
最新版本的opencms创建网站指南,是对官网上的OpenCms 8 beginner's guide to template creation.PDF英文的翻译,并对一些步骤做了详细的补充,是初学者入门创建网站详细指导
### OpenCms创建网站过程详解 #### 一、OpenCms简介及背景 ...需要注意的是,这只是OpenCms功能的冰山一角,要完全掌握并灵活运用OpenCms的强大功能,还需深入学习和实践。希望本文能为初学者提供一定的帮助。
但根据以上分析,如果你正面临类似的需求,可以尝试按照这些步骤进行操作,并结合博客文章的指导进行深入学习。记住,对任何系统的修改都需要谨慎,确保充分备份,以免造成不可逆的数据丢失或系统故障。
在学习和使用 OpenCms 内容类型模块时,开发者需要了解如何创建和配置内容类型,包括定义字段、设置权限、建立关联关系以及编写对应的模板。同时,掌握 XML 和 Java 编程也是必要的,因为 OpenCms 的许多定制化工作...
OpenCms是一个开源的内容管理系统(CMS),用于构建和管理企业级的网站。...尽管新版本的OpenCms可能包含更多改进和特性,但对于学习CMS系统设计和Java Web开发基础,7.5.3版本的源代码仍然是宝贵的资源。
源代码文件“poencms内容管理入门指南(源代码)”可能是包含了一些示例代码或演示项目,供学习者实践和理解OpenCMS的API调用、模板编写以及其他开发相关的内容。这将帮助开发者更深入地理解OpenCMS的工作原理,并能...
在OpenCms系统中,有时会遇到需要在一个服务器上运行多个OpenCms实例的情况,这通常涉及到使用Apache作为前端反向代理服务器与Tomcat作为应用服务器的集成配置。然而,当不再需要这样的多实例设置时,可以按照以下...
OpenCms7Development+src是关于OpenCms 7版本的深度学习和二次开发资源集合。OpenCms(Open Content Management System)是一个开源的内容管理系统,它允许用户通过Web界面管理网站内容,支持多种编程语言和数据库,...
OpenCMS 是一个开源的内容管理系统(CMS),用于构建和管理企业级的网站。版本 9.0.1 是 OpenCMS 的一...同时,对于开发者而言,这也是一次学习如何定制和扩展CMS的好机会,可以深入研究汉化过程,为其他项目提供参考。
OpenCMS(Open Content Management System)是一款开源的内容管理系统,它提供了丰富的功能,帮助企业或组织构建、管理和维护网站。本文将深入探讨OpenCMS的入门知识、配置方法以及如何利用源代码进行开发。 一、...
**OpenCMS内容管理入门指南** OpenCMS是一款开源的内容管理系统(CMS),它提供了强大的网站内容创建、管理和发布的功能。...通过深入学习和实践,你可以利用OpenCMS提供的功能创建出高效、易用的在线平台。
在IT行业中,OpenCMS是一个开源的内容管理系统,用于构建和管理企业级的网站。当我们部署或使用OpenCMS时,可能会遇到URL路径中包含“opencms”两次的情况,这可能对网站的用户体验和SEO(搜索引擎优化)产生不利...