turbocms.java模板制作指南.doc

上传人:F****n 文档编号:98043842 上传时间:2019-09-07 格式:DOC 页数:35 大小:1.88MB
返回 下载 相关 举报
turbocms.java模板制作指南.doc_第1页
第1页 / 共35页
turbocms.java模板制作指南.doc_第2页
第2页 / 共35页
turbocms.java模板制作指南.doc_第3页
第3页 / 共35页
turbocms.java模板制作指南.doc_第4页
第4页 / 共35页
turbocms.java模板制作指南.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

1、TurboCMS内容管理系统(Java版本) 模 板 制 作 指 南北京泰得文通科技有限公司修订时间:2010年7月解决党委自身和基层党支部存在的的突出问题,发挥各村、社区、机关单位党支部在当前城市征迁、园区建设、招商引资、服务群众、维护稳定的作用,我镇党委高度重视,制定了切合临淮实际的活动实施方案,按照中央规定的活动步骤和要求扎实有效的开展了基层组织建设年活动。TurboCMS内容管理系统Java版本模板制作指南TurboCMS2009的模板制作(频道部分)一、概述TurboCMS是一个基于模板的内容管理系统,整个系统的使用流程如下图:XxXxXxHTML文件xxxxxxxxxxxx 表单数

2、据库录入保存生成模板l 用户通过WEB表单录入信息l 表单中的信息被保存在数据库中的一条记录中l 某一个频道的所有信息构成了一张表,有多个频道,则数据库中可能有多个表存在。l 内容中的数据结合模板生成HTML文件。从上面的过程可以看出,每个频道需要定义一个表单,以及一个模板。模板定义了数据呈现的形式,模板中定义的字段通常同表单中的字段是一一对应的。表单数据库中的表模板三者间的关系如下图:xxxxxxxxxxxx XxXxXx表单模板数据库中的表第 35 页 共 35 页频道的表单可以使用系统提供的表单定义工具生成,而模板则必须要手工制作,本文主要介绍模板的制作。1、从什么地方定义模板所谓模板,

3、在TurboCMS中其实是一个普通的HTML文件,它定义了所有用这个模板生成的HTML文件的大致表现形式,包括布局、字体、颜色、风格等信息。以管理员身份登陆TurboCMS,将会看到一个“模板”视图,其中保存的就是网站的模板文件。“模板”视图其实是“文件夹”视图的一个快截方式,专门管理/templates目录。我们建议将所有的模板文件都保存在这里,如果一定要放在其他目录的话,也是允许的。如果要编辑模板文件,请首先选中某个模板文件,然后鼠标右键,选择“Notepad”,以源代码的方式编辑模板文件。在这个非常类似于Windows的Notepad的环境中,可以以源代码的方式编辑模板文件,并在其中插入

4、定义模板专用的脚本。最后将文件保存下来便成为模板。2、模板和模板脚本模板一方面定义了最终的HTML文件的形式和风格,另一方面还定义了数据如何呈现在最终的HTML文件中。模板中的HTML定义的是形式和风格,而其中的脚本则定义了数据的呈现。当站点中的一个频道的所有信息被发布时,系统构造了一个数据环境,然后将频道中的一条记录取出来,并放到数据环境中去,接下来将模板放到数据环境中去,解释执行其中的脚本,最后将所有的输出写入到HTML文件。系统依次处理所有的记录,每处理一条记录就执行一遍上面的这个过程。我们引入一种新的语言(TDL,Template Define Language)来定义模板中的数据输出

5、。它是一种脚本语言,使用Java作为运行脚本,暴露了若干对象供脚本访问,以实现脚本中的灵活控制。模板中的TDL脚本用两个特殊符号分隔:。这两个符号之间的内容被当成TDL脚本处理,其他的内容原样地输出到HTML文件中去。请注意这里的分隔符与Java中的分隔符的区别。一段模板中的TDL脚本例: 也支持表达式直接输出,等同于。模板中的TDL脚本是Java脚本,任何合法的Java代码都是被允许的。关于Java的语法基础,可以参考Java技术部分。在TDL脚本中,除了可以使用标准的Java代码之外,还可以访问系统提供的几个固有对象,用其同数据环境打交道,取出需要的数据。这几个对象分别是:System,T

6、hisDocument,ThisChannel,ThisSite,ThisPage,ThisPageColumn,ThisColumn,ThisMagazine,ThisIssue,Response。本文中对这几个对象将进行详细的说明。二、TDL编程1、网站规划在讲解TDL编程前我们先来介绍一下网站规划的步骤,以便理解模板的作用。某栏目的最新几条(头条信息)hotnewshotnewshotnewshotnews导航栏站点首页带摘要的top 10带摘要的top 10带摘要的top 10inc文件文章n文章1子栏目导航栏频道一首页频道二首页频道三首页子频道一首页子频道二首页文章标题列表.带摘要的

7、top 10带摘要的top 10.文章3文章2文章1目录页(可能分页)当前频道top 5由上图可以看出,当一篇文章提交到某个频道后,有三种文件需要生成或修改:1、文章本身的HTML页面(文章内容页)2、频道的封面页3、上级频道以及首页中的top列表(通过inc文件体现)因此,有三种模板脚本存在:1、文章内容页模板2、封面页模板3、附带发布的模板也即是说,对每一个频道,需要制作三个模板文件,其中的附带发布模板是可选的。2、文章内容页模板制作前面我们说过,TDL的脚本中可以访问若干个内置对象。所谓内置对象,是指不需要申明就可以直接访问的Class对象。文章内容页的模板制作需要访问的两个主要的内置对

8、象是 Response和Document。Response对象的目的在于从TDL中输出,Document对象的主要作用是访问上下文中当前处理的文章的各字段的值。Document对象是最主要的对象,脚本通过它来取得当前数据环境中的数据,它只有三个方法.2.1 Document对象的方法Item(field Name)获取字段fieldName的值,返回字段值,是一个对象例:String Name,Sex,Age;Name = (String)ThisDocument.Item(“Name”);Sex = (String)ThisDocument.Item(“Sex”);Age = (String

9、)ThisDocument.Item(“Age”);如果确信调用会返回的是一个对象,则应该申明相应的对象来进行调用,例:java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);参数fieldName表示字段名,他们同频道的表单定义中为字段取的名字是一样的。推荐全部使用英文做字段名。在使用Document的Item 方法返回字段值时应当确信字段名是在频道的表单定义中确实定义好了的,并且名称拼写没有错误。除了可以访问表单定义时定义的字段以外,有几个字段是始终可以访问的,他们是:l Id,当前数据环境中的那条记录在整

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

11、m则返回当前页的页号,页号是从1开始的。l PrevPage,如果正文有多页,则PrevPage返回前一页的那个文件的URL,如果当前页是1,则这个字段返回空串。l NextPage,如果正文有多页,则NextPage返回下一页的那个文件的URL,如果当前页是最后一页,则这个字段返回空串。l CMSPIC,文章的图片字段l CMSWLINK,文章的文件连接字段l CMSSUMMARY,文章的摘要字段l Pages,如果正文有多页,则Pages字段返回所有页的集合。特别注意的是,集合在Java中是一个对象,因此需要使用定义一个Vector来取得。集合中保存的是每一页的URL。输出所有页的一个目录

12、的代码如下:!-%/内容页分页 最新 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();i+)String Page = (String)pageall.get(i);if(Integer.parseInt(String)ThisDocument.Item(pageNum)=i)Respo

13、nse.Output( 第 + (i+1) + 页 );elseResponse.Output( 第 + (i+1) + 页 );%-如果不知道一条内容到底有无可能有分页,则最好在输出下一页的连接前先判断一下,如下:!-%/内容页分页 前一页 后一页String pPage, nPage;pPage = (String)ThisDocument.Item(PrevPage);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)R

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

当前位置:首页 > 办公文档 > 教学/培训

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