TurboCMS.Java模板制作指南

上传人:人*** 文档编号:557594102 上传时间:2022-09-01 格式:DOC 页数:34 大小:1.88MB
返回 下载 相关 举报
TurboCMS.Java模板制作指南_第1页
第1页 / 共34页
TurboCMS.Java模板制作指南_第2页
第2页 / 共34页
TurboCMS.Java模板制作指南_第3页
第3页 / 共34页
TurboCMS.Java模板制作指南_第4页
第4页 / 共34页
TurboCMS.Java模板制作指南_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《TurboCMS.Java模板制作指南》由会员分享,可在线阅读,更多相关《TurboCMS.Java模板制作指南(34页珍藏版)》请在金锄头文库上搜索。

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

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

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

4、板放到数据环境中去,解释执行其中的脚本,最后将所有的输出写入到HTML文件。系统依次处理所有的记录,每处理一条记录就执行一遍上面的这个过程。我们引入一种新的语言TDL,Template Define Language来定义模板中的数据输出。它是一种脚本语言,使用Java作为运行脚本,暴露了假设干对象供脚本访问,以实现脚本中的灵活控制。模板中的TDL脚本用两个特殊符号分隔:。这两个符号之间的容被当成TDL脚本处理,其他的容原样地输出到HTML文件中去。请注意这里的分隔符与Java中的分隔符的区别。一段模板中的TDL脚本例: 也支持表达式直接输出,等同于。模板中的TDL脚本是Java脚本,任何合法

5、的Java代码都是被允许的。关于Java的语法根底,可以参考Java技术局部。在TDL脚本中,除了可以使用标准的Java代码之外,还可以访问系统提供的几个固有对象,用其同数据环境打交道,取出需要的数据。这几个对象分别是:System,ThisDocument,ThisChannel,ThisSite,ThisPage,ThisPageColumn,ThisColumn,ThisMagazine,ThisIssue,Response。本文中对这几个对象将进展详细的说明。二、TDL编程1、规划在讲解TDL编程前我们先来介绍一下规划的步骤,以便理解模板的作用。某栏目的最新几条(头条信息)hotnew

6、shotnewshotnewshotnews导航栏站点首页带摘要的top 10带摘要的top 10带摘要的top 10inc文件文章n文章1子栏目导航栏频道一首页频道二首页频道三首页子频道一首页子频道二首页文章标题列表.带摘要的top 10带摘要的top 10.文章3文章2文章1目录页(可能分页当前频道top 5由上图可以看出,当一篇文章提交到某个频道后,有三种文件需要生成或修改:1、文章本身的HTML页面文章容页2、频道的封面页3、上级频道以及首页中的top列表通过inc文件表达因此,有三种模板脚本存在:1、文章容页模板2、封面页模板3、附带发布的模板也即是说,对每一个频道,需要制作三个模板

7、文件,其中的附带发布模板是可选的。2、文章容页模板制作前面我们说过,TDL的脚本中可以访问假设干个置对象。所谓置对象,是指不需要申明就可以直接访问的Class对象。文章容页的模板制作需要访问的两个主要的置对象是 Response和Document。Response对象的目的在于从TDL中输出,Document对象的主要作用是访问上下文中当前处理的文章的各字段的值。Document对象是最主要的对象,脚本通过它来取得当前数据环境中的数据,它只有三个方法.2.1 Document对象的方法Item(field Name)获取字段fieldName的值,返回字段值,是一个对象例:String Nam

8、e,Sex,Age;Name = (String)ThisDocument.Item(“Name);Sex = (String)ThisDocument.Item(“Sex);Age = (String)ThisDocument.Item(“Age);如果确信调用会返回的是一个对象,那么应该申明相应的对象来进展调用,例:java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);参数fieldName表示字段名,他们同频道的表单定义中为字段取的名字是一样的。推荐全部使用英文做字段名。在使用Document的Item

9、 方法返回字段值时应当确信字段名是在频道的表单定义中确实定义好了的,并且名称拼写没有错误。除了可以访问表单定义时定义的字段以外,有几个字段是始终可以访问的,他们是:l Id,当前数据环境中的那条记录在整个系统中的唯一编号l Title,容的标题l Author,提交这条容的用户的用户名l SubmitDate,这条容的提交时间l Url,当前记录在生成HTML文件后,这个文件在系统中的URL,是绝对路径,如/site1/news/news3498.html Content,当前记录的正文字段。Title标题和Content正文是不管在表单定义中是否认义,在容提交时系统均会要求输入的两个字段,所

10、以可以放心地访问这两个字段。l PageNum,如果一条记录的正文容有多页,那么每一页都将生成一个独立的HTML文件,在模板中不用担忧,Content字段始终返回的是当前页的容,而PageNum那么返回当前页的页号,页号是从1开场的。l PrevPage,如果正文有多页,那么PrevPage返回前一页的那个文件的URL,如果当前页是1,那么这个字段返回空串。l NextPage,如果正文有多页,那么NextPage返回下一页的那个文件的URL,如果当前页是最后一页,那么这个字段返回空串。l CMSPIC,文章的图片字段l CMSWLINK,文章的文件连接字段l CMSSUMMARY,文章的摘要

11、字段l Pages,如果正文有多页,那么Pages字段返回所有页的集合。特别注意的是,集合在Java中是一个对象,因此需要使用定义一个Vector来取得。集合中保存的是每一页的URL。输出所有页的一个目录的代码如下:!-%/容页分页 最新 n 页 第 n 页String pPage, nPage;java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);Response.Output( 最新 + pageall.size() + 页 );for(int i=0;ipageall.size();

12、i+)String Page = (String)pageall.get(i);if(Integer.parseInt(String)ThisDocument.Item(pageNum)=i)Response.Output( 第 + (i+1) + 页 );elseResponse.Output( 第 + (i+1) + 页 );%-如果不知道一条容到底有无可能有分页,那么最好在输出下一页的连接前先判断一下,如下:!-%/容页分页 前一页 后一页String pPage, nPage;pPage = (String)ThisDocument.Item(P

13、revPage);nPage = (String)ThisDocument.Item(NextPage);if(!pPage.equals()Response.Output(<<前一页    );if(!nPage.equals()Response.Output(后一页>>);%-注意,所有对字段的名称都是大小写无关的,即ThisDocument.Item(“Content)与ThisDocument.Item(“CONTENT)是等效的。2.2 Document对象的方法public Vector RelativeArticles(int lngCount, String RelDefine)RelativeArticles方法返回当前文章的相关文章。返回的是一个Link对象组成的向量。参数 lngCount为返回的条数。如果大于实际的条数,那么只返回实际的条数。参数RelDefine为“相关文章的名,请使用空串来表示缺省的相关文章。public Channel DocumentChannel()返回当前文章所在的频道对象。public String DocumentSource()返回当前文章

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

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号