TurboCMS.Java模板制作指南.doc

上传人:一*** 文档编号:573546 上传时间:2018-10-30 格式:DOC 页数:35 大小:1.97MB
返回 下载 相关 举报
TurboCMS.Java模板制作指南.doc_第1页
第1页 / 共35页
TurboCMS.Java模板制作指南.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《TurboCMS.Java模板制作指南.doc》由会员分享,可在线阅读,更多相关《TurboCMS.Java模板制作指南.doc(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、.TurboCMS内容管理系统(Java 版本)模 板 制 作 指 南北京泰得文通科技有限公司修订时间:2010 年 7 月.TurboCMS2009的模板制作(频道部分)一、概述TurboCMS 是一个基于模板的内容管理系统,整个系统的使用流程如下图:表单数据库录入保存 生成模板 用户通过 WEB 表单录入信息 表单中的信息被保存在数据库中的一条记录中 某一个频道的所有信息构成了一张表,有多个频道,则数据库中可能有多个表存在。 内容中的数据结合模板生成 HTML 文件。从上面的过程可以看出,每个频道需要定义一个表单,以及一个模板。模板定义了数据呈现的形式,模板中定义的字段通常同表单中的字段是

2、一一对应的。表单数据库中的表模板三者间的关系如下图:表单 模板数据库中的表XxXxXxHTML 文件xxxxxxxxxxxxXxXxXxxxxxxxxxxxxx.频道的表单可以使用系统提供的表单定义工具生成,而模板则必须要手工制作,本文主要介绍模板的制作。1、从什么地方定义模板所谓模板,在 TurboCMS 中其实是一个普通的 HTML 文件,它定义了所有用这个模板生成的 HTML 文件的大致表现形式,包括布局、字体、颜色、风格等信息。以管理员身份登陆 TurboCMS,将会看到一个“模板”视图,其中保存的就是网站的模板文件。 “模板”视图其实是“文件夹”视图的一个快截方式,专门管理/temp

3、lates 目录。我们建议将所有的模板文件都保存在这里,如果一定要放在其他目录的话,也是允许的。如果要编辑模板文件,请首先选中某个模板文件,然后鼠标右键,选择“Notepad ”,以源代码的方式编辑模板文件。.在这个非常类似于 Windows 的 Notepad 的环境中,可以以源代码的方式编辑模板文件,并在其中插入定义模板专用的脚本。最后将文件保存下来便成为模板。2、模板和模板脚本模板一方面定义了最终的 HTML 文件的形式和风格,另一方面还定义了数据如何呈现在最终的 HTML 文件中。模板中的 HTML 定义的是形式和风格,而其中的脚本则定义了数据的呈现。当站点中的一个频道的所有信息被发布

4、时,系统构造了一个数据环境,然后将频道中的一条记录取出来,并放到数据环境中去,接下来将模板放到数据环境中去,解释执行其中的脚本,最后将所有的输出写入到 HTML 文件。系统依次处理所有的记录,每处理一条记录就执行一遍上面的这个过程。我们引入一种新的语言(TDL,Template Define Language)来定义模板中的数据输出。它是一种脚本语言,使用 Java 作为运行脚本,暴露了若干对象供脚本访问,以实现脚本中的灵活控制。模板中的 TDL 脚本用两个特殊符号分隔:。这两个符号之间的内容被当成 TDL 脚本处理,其他的内容原样地输出到 HTML 文件中去。请注意这里的分隔符与 Java

5、中的分隔符的区别。一段模板中的 TDL 脚本例:也支持表达式直接输出,等同于。模板中的 TDL 脚本是 Java 脚本,任何合法的 Java 代码都是被允许的。关于 Java 的语法基础,可以参考 Java 技术部分。在 TDL 脚本中,除了可以使用标准的 Java 代码之外,还可以访问系统提供的几个固有对象,用其同数据环境打交道,取出需要的数据。这几个对象分别是:System, ThisDocument,ThisChannel,ThisSite,ThisPage,ThisPageColumn ,ThisColumn,ThisMagazine,ThisIssue, Response。本文中对这

6、几个对象将进行详细的说明。.二、TDL 编程1、网站规划在讲解 TDL 编程前我们先来介绍一下网站规划的步骤,以便理解模板的作用。站点首页inc 文件频道一首页 频道二首页 频道三首页子频道一首页 子频道二首页.目录页(可能分页)当前频道top 5导航栏hotnewshotnewshotnewshotnews某栏目的最新几条(头条信息)带摘要的 top 10 带摘要的 top 10带摘要的 top 10子栏目导航栏文章 1 文章 n 带摘要的 top 10 带摘要的 top 10文章标题列表.文章 1文章 2 文章 3.由上图可以看出,当一篇文章提交到某个频道后,有三种文件需要生成或修改:1、

7、文章本身的 HTML 页面(文章内容页)2、频道的封面页3、上级频道以及首页中的 top 列表(通过 inc 文件体现)因此,有三种模板脚本存在:1、文章内容页模板2、封面页模板3、附带发布的模板也即是说,对每一个频道,需要制作三个模板文件,其中的附带发布模板是可选的。2、文章内容页模板制作前面我们说过,TDL 的脚本中可以访问若干个内置对象。所谓内置对象,是指不需要申明就可以直接访问的 Class 对象。文章内容页的模板制作需要访问的两个主要的内置对象是 Response 和 Document。Response 对象的目的在于从 TDL 中输出,Document 对象的主要作用是访问上下文中

8、当前处理的文章的各字段的值。Document 对象是最主要的对象,脚本通过它来取得当前数据环境中的数据,它只有三个方法.2.1 Document 对象的方法 Item(field Name)获取字段 fieldName 的值,返回字段值,是一个对象例:String Name,Sex,Age;Name = (String)ThisDocument.Item(“Name”);Sex = (String)ThisDocument.Item(“Sex”);Age = (String)ThisDocument.Item(“Age”);如果确信调用会返回的是一个对象,则应该申明相应的对象来进行调用,例:j

9、ava.util.Vector pageall = (java.util.Vector)ThisDocument.Item(“pages“);参数 fieldName 表示字段名,他们同频道的表单定义中为字段取的名字是一样的。推荐全部使用英文做字段名。在使用 Document 的 Item 方法返回字段值时应当确信字段名是在频道的表单定义中确实定义好了的,并且名称拼写没有错误。除了可以访问表单定义时定义的字段以外,有几个字段是始终可以访问的,他们是: Id,当前数据环境中的那条记录在整个系统中的唯一编号 Title,内容的标题 Author,提交这条内容的用户的用户名 SubmitDate,这

10、条内容的提交时间. Url,当前记录在生成 HTML 文件后,这个文件在系统中的 URL,是绝对路径,如/site1/news/news3498.htm Content,当前记录的正文字段。Title 标题和 Content 正文是不论在表单定义中是否定义,在内容提交时系统均会要求输入的两个字段,所以可以放心地访问这两个字段。 PageNum,如果一条记录的正文内容有多页,则每一页都将生成一个独立的HTML 文件,在模板中不用担心, Content 字段始终返回的是当前页的内容,而PageNum 则返回当前页的页号,页号是从 1 开始的。 PrevPage,如果正文有多页,则 PrevPage

11、 返回前一页的那个文件的 URL,如果当前页是 1,则这个字段返回空串。 NextPage,如果正文有多页,则 NextPage 返回下一页的那个文件的 URL,如果当前页是最后一页,则这个字段返回空串。 CMSPIC,文章的图片字段 CMSWLINK,文章的文件连接字段 CMSSUMMARY,文章的摘要字段 Pages,如果正文有多页,则 Pages 字段返回所有页的集合。特别注意的是,集合在 Java 中是一个对象,因此需要使用定义一个 Vector 来取得。集合中保存的是每一页的 URL。输出所有页的一个目录的代码如下:第“ + (i+1) + “页“);elseResponse.Out

12、put(“第“ + (i+1) + “页“);%如果不知道一条内容到底有无可能有分页,则最好在输出下一页的连接前先判断一下,如下:前一页“);if(!nPage.equals(“)Response.Output(“后一页“);.%注意,所有对字段的名称都是大小写无关的,即 ThisDocument.Item(“Content”)与ThisDocument.Item(“CONTENT”)是等效的。2.2 Document 对象的方法public Vector RelativeArticles(int lngCount, String RelDefine)RelativeArticles 方法返回

13、当前文章的相关文章。返回的是一个 Link 对象组成的向量。参数 lngCount 为返回的条数。如果大于实际的条数,则只返回实际的条数。参数RelDefine 为“相关文章”的名,请使用空串来表示缺省的相关文章。public Channel DocumentChannel() 返回当前文章所在的频道对象。public String DocumentSource() 返回当前文章的文章来源。Response 对象负责内容的输出,通常用来直接将字段的值输出到 HTML 文件。Response对象有两个方法: Output(txtText),将 txtText 输出到 HTML 文件中去。 Cle

14、ar,取消所有已经有的输出,将输出缓冲清空。模板文件中有普通的 HTML 以及模板脚本,普通的 HTML 将直接输出到缓冲区,脚本将被解释执行,脚本中也可以通过调用 Output 将文本输出到缓冲区。当模板文件结束时,缓冲区中的内容就被输出到 HTML 文件中去了。注意 Clear 方法除了将清除所有用 Output 输出的内容外,还将清除所有的已经在缓冲中的普通 HTML 内容。3、封面页模板的制作频道的封面页制作中的主要任务在于列出频道内所有文章的标题和连接。这个列表支持分页显示,可以定义每页仅显示多少条。TDL 解释器将只把当前页的文章返回。封面页制作需要访问的对象为 Channel,它

15、也是一个内置对象。另外,还可能涉及到类TOC 和 Link,这两个类是不能直接访问的,一定是通过对象 Channel 的属性返回的。Channel 对象的属性和方法: Top(x)方法,返回当前频道的最新文章,是 Document 对象的集合,例:n“);java.util.Vector vt=ThisChannel.Top(5);for(int i=0;i“ + aDoc.Item(“TITLE“) + .“n“);Response.Output(“n“);% TopEx(x)方法,同上,但包含子频道中的文章 Name 属性,频道名 Path 属性,频道的全名。因频道可为树形结构, Path

16、 属性返回从顶级频道开始的路径,形式为:/root/parent/name,例:/ 教程和文档/web3d SubChannels 方法,返回一个 Channel 对象的集合,但是这些 Channel 对象的 TOC 属性均是空的。例:java.util.Vector vt=ThisChannel.SubChannels();for(int i=0;in“);java.util.Vector vc = ThisChannel.TOC.AllLinks;for(int i=0;i“);Response.Output(“ + aLink.Title + “);.Response.Output(“n

17、“);Response.Output(“n“);%输出上一页下一页连接的 TDL 代码例:前一页“);if(!nPage.equals(“)Response.Output(“后一页“);%4、附带发布的模板制作附带发布最主要的目的是取出频道的最新几条信息,然后用模板生成一个 inc 文件。因此,在附带发布页模板制作中,最主要的访问的对象是 Channel,访问它的 Top 和 TopEx 方法。但是,Channel 对象表示的是当前频道,如果要访问其他频道里的文章信息,就必须使用另一个 System 对象,下面对 System 对象做一个介绍。System 对象System 对象提供一些与系统

18、有关的辅助功能。它有以下方法: Execute(templateUri),加载一个模板文件,返回执行的结果。注意参数是绝对路径。用这个方法,可以实现一个模板中加载一个子模板的功能。 GetChannel(ChannelUri)返回一个特定的频道对象,参数 ChannelUri 是系统的 URI 格式的串,因为 TurboCMS的频道是层次形结构,在父频道与子频道间用“/”隔开。例:“/ 测试项目/新闻”表示“测试项目”频道下的“新闻”子频道。GetChannel 方法返回的对象跟缺省的 Channel 对象是一样的,有 Name、Path 属性和Top(x)以及 TopEx(x)及 SubCh

19、annels 等方法,但 TOC 属性不能访问。 GetChannelByID(pid) 返回指定频道 ID 的频道对象,参数 pid 为 TurboCMS 系统中维护的频道 ID。GetChannelByID 方法返回的对象跟缺省的 Channel 对象是一样的,有 Name、Path 属性和 Top(x)以及 TopEx(x)及 SubChannels 等方法,但 TOC 属性不能访问。 GetDocumentInChannel(x, ids,orderfield)返回指定频道集中前 x 篇文章,并按指定的 orderfield 排序参数使用请参考TurboCMS.Java 模版中的对象参考建议在所有的 TOPX 或 TOPEx 包含文件的模板中均使用 GetChannelByID 方法返回Channel 对象,而不是使用缺省的 Channel 对象(Channel 只是返回当前频道对象) 。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com