本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:210
评论数量:205
留言数量:-19
访问次数:920336
建立时间:2007年5月10日




[openCMS]管理和定制OpenCms 6 - 第6章 定制网站
文章收藏,  网上资源,  软件技术,  电脑与网络

李小白 发表于 2007/11/30 9:56:44

原创:路由器技术资料网(www.52router.com) 翻译:性感小肥猪(hahahaha78_fbs at yahoo.com.cn) 本书为英文版的中译本,本人翻译该书是出于个人爱好!请不要询问任何与OpenCms有关的技术问题!如需购买本书请进入本站的商城页面并联系译者!转载请注明出处!     第6章 定制网站   我们已对如何使用系统作了详细的描述—创建和编辑内容,管理项目,执行管理任务。  现在,让我们把注意力转移到如何定制网站上来。 本章中,我将解释如何开发网站的外观以及内容的布局—添加动态的元素并控制资源。 我们将讨论: •简短的模板介绍 • JSP标签 • JSP scriptlets • 怎样创建一个模板 • JSP模板 • The OpenCms标签库 • 使用模板,JSP标签和scriptlets 时会遇到的一些问题 模板 为了理解当我们创建模板并添加JSP标签时所做的工作,也将帮助我们理解当客户请求一些内容时将会发生什么。 当客户端请求一个页面时,OpenCms 将寻找用于该页面的内容。 这些内容片段基本上是通过工作区创建的文件。从这一点上说,这些内容并没有任何的排版,它仅有导航是怎样、使用什么模板以及其它的相关信息。OpenCms使用这些信息来提取正确的模板并将内容放置到模板中。  模板提供了环境结构,导航,以及用于文档的格式化信息。在内容被提交到模板中之后,最终的文档就被发送给客户端的浏览器。   在旧版本的OpenCms (5.0及以前版本)中,可通过XML模板语言来创建模板。  现在XML模板不受支持,不过如果您希望获得XML模板支持的话,您可安装旧的用于XML模板的模块。 从OpenCms5.0起,JSP模板是标准的模板语言。   OpenCms带有几个内置模板。  这些模板都叫作TemplateOne, 提供了预先写好的高级模板,当您创建一个新的Page文件时,您可选择这些TemplateOne模板。 与正规的模板文件一样, TemplateOne 也是以JSP和HTML所写的,虽然它使用了一些定制的Java类以激活一些特性。 本章中,我们将讨论从无到有创建定制的模板。 模板由两种类型的元素所组成。首先,它们使用标准的HTML。 HTML中的部分将被传送到客户端而不作任何的修改。 其次,它们能够包含JSP内容。  JSP (Java Server Pages)是一种技术,它是由Java编程语言所创建的,用于在HTML或XML文件中插入动态的内容。JSP内容可被插入到一个或两个表单中 – 标签或scriptlets。 JSP Tags (JSP 标签 ) JSP 标签看起来与HTML或 XML标签比较类似。  但是当客户端请求一个JSP文档时,服务器读取文档以搜索JSP标签。当服务器找到一个标签时,就执行被请求的代码并将产生的结果插入进去并发送给客户端。 标签是由标签库(taglibs)来管理的。 OpenCms 提供了一个包含了对使用OpenCms进行工作非常有用的标签库。 这些标签能够被用来在OpenCms中访问或修改内容。 下面的例子将说明JSP标签和JSP标签库实际上是如何工作的: <%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %> <html> <head> <title>Show User's First Name</title>   <body> User's First Name: <cms:user property="firstname"/> </body> </html> 此例子中的大部分是以HTML所写的,您应该能够认出熟悉的标签。但是有几个标签是JSP标签。 开头部分的taglib 标签告诉服务器此页面将使用来自于OpenCms 库的标签。 JSP库是由 URI (Universal Resource Identifier)命名的。  URL是URI的一个最普通的类别,用于OpenCms JSP标签库的URL是http://www.opencms.org/taglib/cms。  上面的第一行告诉服务器任何以cms: 命名开头的标签都来自于OpenCms JSP 标签库。 第二个标签是OpenCms标签库的user 标签,告诉服务器从OpenCms取得用户信息并写入到文档中的当前位置。更确切地说,设置特性属性为 "firstname" 告诉服务器以查找用户的名字。 与服务器执行JSP标签一样,它创建一个新的文档 – 一个只包含了HTML的文档。  此文档将在user标签所处的原始文档中包含用户的名字,因此当此文档被发送给客户端时,HTML看起来是这样的: <html> <head> <title>Show User's First Name</title> <head> <body> User's First Name: Matt </body>   带有taglib 标签的第一行被移除了,并且cms:user 标签被用用户的名字(此例中是”Matt”)来代替。 JSP Scriptlets JSP 标签提供了一个在JSP页面内提供动态内容的方法,而其它的方法则是使用JSP scriptlets。  Scriptlets 是一段能够被插入到文档内的Java 代码片段。 一个想法是在文档中插入代码与插入JavaScript代码类似,除了一个情况,这是在服务器上插入代码,而不是在客户端插入代码,而客户端是执行代码。被插入的代码是一个完整的能够随时执行的Java 代码。 如果您想编写 scriptlets, 那么您需要熟悉Java。 如果您不会Java, 您可能需要跳过此节。  我们在本书中将使用JSP标签,您可轻松地创建OpenCms模板而不需要编写任何的scriptlets。 为了让您对scriptlets是如何工作的有个大概的认识,下面例子是用scriptlet改写了先前的例子: <html> <head> <title>Show User's First Name</title> <head> <body> User's First Name: <% org.opencms.jsp.CmsJspActionElement cms = new org.opencms.jsp.CmsJspActionElement(pageContext, request, response); out.println(cms.user("firstname")); %> </body> </html> scriptlet 位于<% 和 %> 分隔符之间。这里只有两个Java声明。  第一个(占两行)创建了一个新的org.opencms.jsp.CmsJspActionElement named cms 类型的Java 对象。 此对象有权使用OpenCms的JSP标签的所有功能。 第三个参数,pageContext, 为每个JSP页面提供自动的请求和返回功能。 第二个声明使用CmsJspActionElement类的用户方式获得用户的名并将此信息插入到发送给客户端的文档中。 可通过scriptlets 访问大部分的OpenCms API (应用程序接口)。 因为这个原因,您可创建对OpenCms数据进行复杂的操作的功能强大的scriptlets 。  要编写更高级的scriptlets 可参考OpenCms 的相关文档。 6.4   使用模版 正如我们所看到的, jsp 标签, 标签库和脚本提供一种向HTML或XML文档插入动态内容的方法. 它主要应用在opencms模板. 利用JSP标签,我们可以建立模板,生成导航信息,检索内容等。 首先我们将创建一个存放新模版的地方。 6.4.1       模版模块 第四章中,我们使用模块管理. 模块是为了扩展opencms功能.模版提供与其他产品集合,修改opencms本身,或扩展opencms功能. 第一步,我们需要一个地方存放模板文件. 以便与opencms的内容脱离. 内容编辑器不需要查看模版内容. 同时,有时候需要把模版(连同图像,样式表和资源文件)从一个opencms服务器移到到另一个上面,而不必移动所有的内容. 基于这些原因,有必要在自己的模块里存储模版。 第四章中讲了如何创建一个模块,在此我们将在这个新建的模块中创建自己的模版。 在opencms工作区资源浏览器可以查看模块,你首先需要更改地点. 从下拉式清单,选择Site代替/sites/default/ . 在左边导航面板/system/modules 文件夹可以找到所存放模版500)this.width=500'> 在第四章中我们创建了名为tv.alephnull.modules.templates的模块,他会生成文件夹/system/modules/tv.alephnull.modules.templates. 在这个文件夹中,应该至少包含有三个下级文件夹,templates, elements,和resources. 不同文件夹存放不同的数据类型。 templates:该文件夹包含jsp模版文件 elements:包含模版所用到的jsp或文本文件 resources:这个文件夹将包含样式表,图象和其他客户端所需要的资源。 如果这些文件夹不存在(例如,在创建模版是没有选中该文件夹的复选框) ,你只需要创建一个新的即可。 在这个级别模快组可能还有其他文件夹,包括classes和libs文件夹用来存储编译好的java类,default_bodies文件夹存储网页布局信息. 在这我们暂时用不到这些. 一些文件夹,如templates,是opencms推荐使用的. 对于resources和elements文件夹并非如此. 其命名和使用规则都是由opencms开发小组规定的,但并没有规定非要建立这些文件夹, 在这我们鼓励你遵循既定规则,用来结构化你的模块. 现在我们知道了那些文件夹是必须的,那么开始创建第一个模版。 6.4.2       创建新模版 首先,我们将要做的是创造一个新的JSP页面.浏览到模版的template文件夹,点击新建按钮建立一个新文件. 从菜单选择jsp文件然后继续. 第一件你将需要做的,是给予新的JSP名称.500)this.width=500'> 第二步:编辑该文件的属性500)this.width=500'> 设定文件标题.在用户创建新文件,选择模版时,该标题将会显示在模版的下拉列表中。 缓存字段允许您设定具体的caching参数,它决定了模板是否储存在opencms 的软性缓存里. 通常这里保持空白。 内容编码字段允许你指定一个特定类型的内容编码(ISO-8859或UTF-8为例) . 如果你不想使用默认编码,你只需要在此设定模版编码即可,使用该模版的页面都会以此编码显示.一般情况下不需要更改该属性值。 最后一个字段是export. 这决定了第一次访问时模版是不是可被导出. 默认情况下,它的值为false. 如果这个值为true,模板执行一次后, 由此产生的HTML将被储存在磁盘上. 下一次请求时,将会直接传输html静态网页,不需要再执行一次jsp页面。 当服务器高负荷和模版的时延比较长时,就会看出它的作用。如果你想每次访问页面时都检索模版页面,那就需要把值设为默认false. 点击完成将创建一个模板文件,回到资源管理器页面,你现在应该看到您的新模板文件. 点击文件的图标,并选择编辑源代码用来编辑该模版。  


阅读全文(2988) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.094 second(s), page refreshed 144782404 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号