TurboCMS.Java模板制作的指南_第1頁
TurboCMS.Java模板制作的指南_第2頁
TurboCMS.Java模板制作的指南_第3頁
TurboCMS.Java模板制作的指南_第4頁
TurboCMS.Java模板制作的指南_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、. .PAGE34 / NUMPAGES34TurboCMS容管理系統(tǒng)(Java版本)模板制作指南泰得文通科技修訂時間:2010年7月TurboCMS2009的模板制作(頻道部分)一、概述TurboCMS是一個基于模板的容管理系統(tǒng),整個系統(tǒng)的使用流程如下圖:XxXxXxHTML文件xxxxxxxxxxxx 表單數(shù)據(jù)庫錄入保存生成模板用戶通過WEB表單錄入信息表單中的信息被保存在數(shù)據(jù)庫中的一條記錄中某一個頻道的所有信息構(gòu)成了一表,有多個頻道,則數(shù)據(jù)庫中可能有多個表存在。容中的數(shù)據(jù)結(jié)合模板生成HTML文件。從上面的過程可以看出,每個頻道需要定義一個表單,以與一個模板。模板定義了數(shù)據(jù)呈現(xiàn)的形式,模板

2、中定義的字段通常同表單中的字段是一一對應(yīng)的。表單數(shù)據(jù)庫中的表模板三者間的關(guān)系如下圖:xxxxxxxxxxxx XxXxXx表單模板數(shù)據(jù)庫中的表頻道的表單可以使用系統(tǒng)提供的表單定義工具生成,而模板則必須要手工制作,本文主要介紹模板的制作。1、從什么地方定義模板所謂模板,在TurboCMS中其實是一個普通的HTML文件,它定義了所有用這個模板生成的HTML文件的大致表現(xiàn)形式,包括布局、字體、顏色、風(fēng)格等信息。以管理員身份登陸TurboCMS,將會看到一個“模板”視圖,其中保存的就是的模板文件?!澳0濉币晥D其實是“文件夾”視圖的一個快截方式,專門管理/templates目錄。我們建議將所有的模板文件

3、都保存在這里,如果一定要放在其他目錄的話,也是允許的。如果要編輯模板文件,請首先選中某個模板文件,然后鼠標(biāo)右鍵,選擇“Notepad”,以源代碼的方式編輯模板文件。在這個非常類似于Windows的Notepad的環(huán)境中,可以以源代碼的方式編輯模板文件,并在其中插入定義模板專用的腳本。最后將文件保存下來便成為模板。2、模板和模板腳本模板一方面定義了最終的HTML文件的形式和風(fēng)格,另一方面還定義了數(shù)據(jù)如何呈現(xiàn)在最終的HTML文件中。模板中的HTML定義的是形式和風(fēng)格,而其中的腳本則定義了數(shù)據(jù)的呈現(xiàn)。當(dāng)站點中的一個頻道的所有信息被發(fā)布時,系統(tǒng)構(gòu)造了一個數(shù)據(jù)環(huán)境,然后將頻道中的一條記錄取出來,并放到數(shù)

4、據(jù)環(huán)境中去,接下來將模板放到數(shù)據(jù)環(huán)境中去,解釋執(zhí)行其中的腳本,最后將所有的輸出寫入到HTML文件。系統(tǒng)依次處理所有的記錄,每處理一條記錄就執(zhí)行一遍上面的這個過程。我們引入一種新的語言(TDL,Template Define Language)來定義模板中的數(shù)據(jù)輸出。它是一種腳本語言,使用Java作為運行腳本,暴露了若干對象供腳本訪問,以實現(xiàn)腳本中的靈活控制。模板中的TDL腳本用兩個特殊符號分隔:。這兩個符號之間的容被當(dāng)成TDL腳本處理,其他的容原樣地輸出到HTML文件中去。請注意這里的分隔符與Java中的分隔符的區(qū)別。一段模板中的TDL腳本例: 也支持表達式直接輸出,等同于。模板中的TDL腳本

5、是Java腳本,任何合法的Java代碼都是被允許的。關(guān)于Java的語法基礎(chǔ),可以參考Java技術(shù)部分。在TDL腳本中,除了可以使用標(biāo)準(zhǔn)的Java代碼之外,還可以訪問系統(tǒng)提供的幾個固有對象,用其同數(shù)據(jù)環(huán)境打交道,取出需要的數(shù)據(jù)。這幾個對象分別是:System,ThisDocument,ThisChannel,ThisSite,ThisPage,ThisPageColumn,ThisColumn,ThisMagazine,ThisIssue,Response。本文中對這幾個對象將進行詳細的說明。二、TDL編程1、規(guī)劃在講解TDL編程前我們先來介紹一下規(guī)劃的步驟,以便理解模板的作用。某欄目的最新幾條

6、(頭條信息)hotnewshotnewshotnewshotnews導(dǎo)航欄站點首頁帶摘要的top 10帶摘要的top 10帶摘要的top 10inc文件文章n文章1子欄目導(dǎo)航欄頻道一首頁頻道二首頁頻道三首頁子頻道一首頁子頻道二首頁文章標(biāo)題列表帶摘要的top 10帶摘要的top 10文章3文章2文章1目錄頁(可能分頁)當(dāng)前頻道top 5由上圖可以看出,當(dāng)一篇文章提交到某個頻道后,有三種文件需要生成或修改:1、文章本身的HTML頁面(文章容頁)2、頻道的封面頁3、上級頻道以與首頁中的top列表(通過inc文件體現(xiàn))因此,有三種模板腳本存在:1、文章容頁模板2、封面頁模板3、附帶發(fā)布的模板也即是說,

7、對每一個頻道,需要制作三個模板文件,其中的附帶發(fā)布模板是可選的。2、文章容頁模板制作前面我們說過,TDL的腳本中可以訪問若干個置對象。所謂置對象,是指不需要申明就可以直接訪問的Class對象。文章容頁的模板制作需要訪問的兩個主要的置對象是 Response和Document。Response對象的目的在于從TDL中輸出,Document對象的主要作用是訪問上下文中當(dāng)前處理的文章的各字段的值。Document對象是最主要的對象,腳本通過它來取得當(dāng)前數(shù)據(jù)環(huán)境中的數(shù)據(jù),它只有三個方法.Document對象的方法Item(field Name)獲取字段fieldName的值,返回字段值,是一個對象例:

8、String Name,Sex,Age;Name = (String)ThisDocument.Item(“Name”);Sex = (String)ThisDocument.Item(“Sex”);Age = (String)ThisDocument.Item(“Age”);如果確信調(diào)用會返回的是一個對象,則應(yīng)該申明相應(yīng)的對象來進行調(diào)用,例:java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);參數(shù)fieldName表示字段名,他們同頻道的表單定義中為字段取的名字是一樣的。推薦全部使用英文做字段名。在使用D

9、ocument的Item 方法返回字段值時應(yīng)當(dāng)確信字段名是在頻道的表單定義中確實定義好了的,并且名稱拼寫沒有錯誤。除了可以訪問表單定義時定義的字段以外,有幾個字段是始終可以訪問的,他們是:Id,當(dāng)前數(shù)據(jù)環(huán)境中的那條記錄在整個系統(tǒng)中的唯一編號Title,容的標(biāo)題Author,提交這條容的用戶的用戶名SubmitDate,這條容的提交時間Url,當(dāng)前記錄在生成HTML文件后,這個文件在系統(tǒng)中的URL,是絕對路徑,如/site1/news/news3498.htmContent,當(dāng)前記錄的正文字段。Title標(biāo)題和Content正文是不論在表單定義中是否定義,在容提交時系統(tǒng)均會要求輸入的兩個字段,所

10、以可以放心地訪問這兩個字段。PageNum,如果一條記錄的正文容有多頁,則每一頁都將生成一個獨立的HTML文件,在模板中不用擔(dān)心,Content字段始終返回的是當(dāng)前頁的容,而PageNum則返回當(dāng)前頁的頁號,頁號是從1開始的。PrevPage,如果正文有多頁,則PrevPage返回前一頁的那個文件的URL,如果當(dāng)前頁是1,則這個字段返回空串。NextPage,如果正文有多頁,則NextPage返回下一頁的那個文件的URL,如果當(dāng)前頁是最后一頁,則這個字段返回空串。CMSPIC,文章的圖片字段CMSWLINK,文章的文件連接字段CMSSUMMARY,文章的摘要字段Pages,如果正文有多頁,則P

11、ages字段返回所有頁的集合。特別注意的是,集合在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();i+)String Page = (String)pageall.

12、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(PrevPage);nPage = (String)ThisDocument.Item(NextPage);if(!p

13、Page.equals()Response.Output(前一頁);if(!nPage.equals()Response.Output(后一頁);%-注意,所有對字段的名稱都是大小寫無關(guān)的,即ThisDocument.Item(“Content”)與ThisDocument.Item(“CONTENT”)是等效的。Document對象的方法public Vector RelativeArticles(int lngCount, String RelDefine)RelativeArticles方法返回當(dāng)前文章的相關(guān)文章。返回的是一個Link對象組成的向量。參數(shù) lngCount為返回的條數(shù)。如

14、果大于實際的條數(shù),則只返回實際的條數(shù)。參數(shù)RelDefine為“相關(guān)文章”的名,請使用空串來表示缺省的相關(guān)文章。public Channel DocumentChannel()返回當(dāng)前文章所在的頻道對象。public String DocumentSource()返回當(dāng)前文章的。Response對象負責(zé)容的輸出,通常用來直接將字段的值輸出到HTML文件。Response對象有兩個方法:Output(txtText),將txtText輸出到HTML文件中去。Clear,取消所有已經(jīng)有的輸出,將輸出緩沖清空。模板文件中有普通的HTML以與模板腳本,普通的HTML將直接輸出到緩沖區(qū),腳本將被解釋執(zhí)行

15、,腳本中也可以通過調(diào)用Output將文本輸出到緩沖區(qū)。當(dāng)模板文件結(jié)束時,緩沖區(qū)中的容就被輸出到HTML文件中去了。注意Clear方法除了將清除所有用Output輸出的容外,還將清除所有的已經(jīng)在緩沖中的普通HTML容。3、封面頁模板的制作頻道的封面頁制作中的主要任務(wù)在于列出頻道所有文章的標(biāo)題和連接。這個列表支持分頁顯示,可以定義每頁僅顯示多少條。TDL解釋器將只把當(dāng)前頁的文章返回。封面頁制作需要訪問的對象為Channel,它也是一個置對象。另外,還可能涉與到類TOC和Link,這兩個類是不能直接訪問的,一定是通過對象Channel的屬性返回的。Channel對象的屬性和方法:Top(x)方法,返

16、回當(dāng)前頻道的最新文章,是Document對象的集合,例:!-%/頭條新聞Response.Output(n);java.util.Vector vt=ThisChannel.Top(5);for(int i=0;ivt.size();i+)Document aDoc = (Document)vt.get(i);Response.Output( + aDoc.Item(TITLE) + n);Response.Output(n);%-TopEx(x)方法,同上,但包含子頻道中的文章Name屬性,頻道名Path屬性,頻道的全名。因頻道可為樹形結(jié)構(gòu),Path屬性返回從頂級頻道開始的路徑,形式為:/r

17、oot/parent/name,例:/教程和文檔/web3dSubChannels方法,返回一個Channel對象的集合,但是這些Channel對象的TOC屬性均是空的。例:java.util.Vector vt=ThisChannel.SubChannels();for(int i=0;ivt.size();i+)Channel pChannel = (Channel)vt.get(i);Response.Output(pChannel.Name);SubNavigateChannels方法,返回一個Channel對象的集合,不包含已關(guān)閉的頻道TOC屬性,是一個comTOC對象,保存了有關(guān)目

18、錄的屬性。CoverPage屬性,返回當(dāng)前頻道的封面頁的地址。TOC對象的屬性有:AllLinks屬性,返回一個Link對象的集合,表示了當(dāng)前頻道的所有文章(實際上只包含當(dāng)前頁的容)NextPage,一個串,目錄頁可分頁,如果有下一頁,則NextPage是下一頁文件的URL。系統(tǒng)自動為每一頁生成文件名,規(guī)則是在設(shè)定的目錄頁文件名后加上數(shù)字表示頁號,第一頁不帶頁號。如 toc.htm,toc_2.htm,toc_3.htm。PrevPage,上一頁。如果沒有上一頁,則返回空串。AllPages,返回一個Link對象的集合,表示所有的頁。Pages,整數(shù),一共有多少頁Link對象的屬性:Title

19、,連接的標(biāo)題Url,連接的地址。Author,作者SubmitDate,提交日期在封面頁模板中,首先輸出當(dāng)前頁文章標(biāo)題與連接的TDL代碼例:!-%/文章列表Response.Output(n);java.util.Vector vc = ThisChannel.TOC.AllLinks;for(int i=0;ivc.size();i+)Link aLink = (Link)vc.get(i);Response.Output();Response.Output( + aLink.Title + );Response.Output(n);Response.Output(n);%-輸出上一頁下一頁

20、連接的TDL代碼例:!-%/列表頁分頁 前一頁 后一頁String pPage, nPage;pPage = ThisChannel.TOC.PrevPage;nPage = ThisChannel.TOC.NextPage;if(!pPage.equals()Response.Output(前一頁);if(!nPage.equals()Response.Output(后一頁);%-4、附帶發(fā)布的模板制作附帶發(fā)布最主要的目的是取出頻道的最新幾條信息,然后用模板生成一個inc文件。因此,在附帶發(fā)布頁模板制作中,最主要的訪問的對象是 Channel,訪問它的Top和TopEx方法。但是,Chann

21、el對象表示的是當(dāng)前頻道,如果要訪問其他頻道里的文章信息,就必須使用另一個System對象,下面對System對象做一個介紹。System對象System對象提供一些與系統(tǒng)有關(guān)的輔助功能。它有以下方法:Execute(templateUri),加載一個模板文件,返回執(zhí)行的結(jié)果。注意參數(shù)是絕對路徑。用這個方法,可以實現(xiàn)一個模板中加載一個子模板的功能。GetChannel(ChannelUri)返回一個特定的頻道對象,參數(shù)ChannelUri是系統(tǒng)的URI格式的串,因為TurboCMS的頻道是層次形結(jié)構(gòu),在父頻道與子頻道間用“/”隔開。例:“/測試項目/新聞”表示“測試項目”頻道下的“新聞”子頻道

22、。GetChannel方法返回的對象跟缺省的Channel對象是一樣的,有Name、Path屬性和Top(x)以與TopEx(x)與SubChannels等方法,但TOC屬性不能訪問。GetChannelByID(pid)返回指定頻道ID的頻道對象,參數(shù)pid為TurboCMS系統(tǒng)中維護的頻道ID。GetChannelByID方法返回的對象跟缺省的Channel對象是一樣的,有Name、Path屬性和Top(x)以與TopEx(x)與SubChannels等方法,但TOC屬性不能訪問。GetDocumentInChannel(x, ids,orderfield)返回指定頻道集中前x篇文章,并按

23、指定的orderfield排序參數(shù)使用請參考TurboCMS.Java模版中的對象參考建議在所有的TOPX或TOPEx包含文件的模板中均使用GetChannelByID方法返回Channel對象,而不是使用缺省的Channel對象(Channel只是返回當(dāng)前頻道對象)。一段腳本例子:!-%Channel objChannel = System.GetChannel(/教程和文檔/web3d);/或者用下一條語句/Channel pChannel = System.GetChannelByID(3);java.util.Vector vt = pChannel.Top(5);for(int i=

24、0;ivt.size();i+)Document aDoc = (Document)vt.get(i); Response.Output( + aDoc.Item(title) + );%-5、文章中使用來源的模板制作涉與到TDLSource類,ThisDocument.DocumentSource方法取出來的是ArrayList,訪問示例如下:a href= title= 6、文章正文顯示編輯真實的模板制作7、文章中使用Tag的模板制作文章Tag涉與到TDLTag類,ThisDocument.DocumentTag方法取出來的是Vector,訪問示例如下:文章的Tag:!-%java.uti

25、l.Vector vc = ThisDocument.DocumentTag();TDLTag objTag =null;for(int i=0;ia href= target=_blank title= 一樣Tag的文章列表:!-%java.util.Vector vc = ThisDocument.TopDocSameTag(6,”);for(int i=0;i8、Web2.0中Tag的模板制作Tag制作設(shè)計到ThisWeb2的使用1)輸出Tag:2)一樣Tag的文章列表:!-%/文章列表,簡單列表Vector vc = ThisWeb2.TOC.AllLinks;for(int i=0;

26、ivc.size();i+)Link aLink = (Link)vc.get(i);Response.Output( + aLink.Title + n);%-3)分頁代碼:!-%/Tag列表分頁 共 n 頁 第 n 頁String pPage, nPage;int cmsPageA = ThisWeb2.TOC.Pages;int cmsTotal = ThisWeb2.TOC.TotalLinks;Vector vlink = ThisWeb2.TOC.AllLinks;Response.Output(總 + cmsTotal + 篇);Response.Output(共 + cmsPa

27、geA + 頁);Vector vl =ThisWeb2.TOC.AllPages;for(int i=0;ivl.size();i+)Link Page = (Link)vl.get(i);if(ThisWeb2.TOC.PageNum=(i+1)Response.Output(第 + (i+1) + 頁);elseResponse.Output(第 + (i+1) + 頁);%-9、日列表模板制作頻道的日列表,由發(fā)布服務(wù)每天定時生成。!-%/頻道日列表 開始/Response.Output(ThisTodayList.TodayDate); /當(dāng)前日期Response.Output(n);

28、java.util.Vector vc = ThisTodayList.AllLinks;if(vc!=null)for(int i=0;ivc.size();i+)Link aLink = (Link)vc.get(i);Response.Output();Response.Output( + aLink.Title + );Response.Output(+MyUtil.formatDate(java.util.Date)aLink.PublishDate,yyyy-MM-dd HH:mm:ss)+);Response.Output(n);Response.Output(n);/頻道日列表

29、 結(jié)束%-10、圖片集模板制作!-%/圖片集Image objImage =(Image)ThisDocument.Item(image);Response.Output( +objImage.Title + );/圖片集的標(biāo)題/縮略圖:objImage.ThumbFile;原圖:objImage.BigFile Response.Output();String pPage, nPage;pPage =(String)ThisDocument.Item(PrevPage);/前一圖片nPage =(String)ThisDocument.Item(NextPage);/后一圖片if(!pPag

30、e.trim().equals()Response.Output(上一);if(!nPage.trim().equals()Response.Output(下一);%-配合相應(yīng)的js,制作出精美的圖片集。TurboCMS2009的模板制作(專題部分)一、概述在TurboCMS中,專題是指由編輯創(chuàng)建的,按照專題模板生成的一個頁面,與該頁面下欄目和文章的總稱。專題在TurboCMS中,具有多重特征。一方面,專題類似于普通的文章,總是歸屬于某個頻道,具有“標(biāo)題”、“作者”等基本字段,以與可以經(jīng)過表單定義增加擴展字段。這些類似于文章的字段,其值在編輯新建專題時直接輸入到系統(tǒng)中。另一方面,專題又類似于一

31、個頻道,可以有子欄目,子欄目里可以有文章。編輯新建專題時,需要先選擇“專題模板”?!皩n}模板”于我們在頻道中講到的“模板”的概念有所不同。頻道中的模板,包括容頁模板,列表頁模板,附帶發(fā)布模板,都只是一個文件,而“專題模板”則是由專題首頁模板、子欄目定義、子欄目所使用的容頁模板與列表頁模板的一個總和。專題模板必須由管理員首先在管理后臺創(chuàng)建。管理員創(chuàng)建專題模板時,需要制作和指定專題首頁的模板文件,以與定義專題下的子欄目,以與為每一個子欄目制作容頁模板和列表頁模板。一個站點中可以有多個專題模板,比如新聞專題模板,娛樂專題模板。不同的專題模板除了專題首頁的模板文件不同以外,其所定義的子欄目也不同。編輯

32、在創(chuàng)建一個具體的專題時,根據(jù)需要,選擇一個專題模板。一旦選擇了專題模板,那么相應(yīng)的需要錄入什么字段,以與有什么子欄目,就固定下來了。二、TDL編程根據(jù)上面的介紹,制作專題模板是一系列工作的總和,包括定義專題的表單,制作專題首頁的模板,定義子欄目,制作子欄目的模板等。定義專題表單與定義頻道的表單類似,根據(jù)需要,給專題增加一些字段。專題首頁的模板制作包括兩方面。一般來說,一個專題首頁由兩部分構(gòu)成。一部分是輸出專題的一些信息,比如專題的名稱,專題的介紹等;第二部分是將專題中每個子欄目里的文章提取若干條來在專題首頁上顯示。對于第一部分,輸出專題的信息,與頻道里的容頁輸出文章的字段類似。所使用的代碼如:

33、其中的ThisSubject 代表當(dāng)前專題,與文章中的ThisDocument代表當(dāng)前文章類似。對于第二部分,子欄目中文章的列表,首先,我們的模板是將用在某一個特定的“專題模板”里的,因此我們知道該“專題模板”下包括什么子欄目。在代碼中我們通過 ThisSubject的GetSubjectColumn方法來獲得特定的欄目對象。代碼例:!-%TDLSubjectColumn acolumn = ThisSubject. GetSubjectColumn(“最新報道”);Response.Output(n);java.util.Vector vc = acolumn.TOC.AllLinks;fo

34、r(int i=0;ivc.size()&i10;i+)Link aLink = (Link)vc.get(i);Response.Output();Response.Output( + aLink.Title + );Response.Output(n);Response.Output(n);%-輸出子欄目里的文章與頻道列表頁里輸出文章列表的代碼類似。那是因為子欄目對象 SubjectColumn與頻道對象類似,也有TOC屬性。不過因為是在專題首頁,我們不希望輸出欄目里的所有文章,因此我們在循環(huán)條件里加了i10。然后是子欄目里的容頁模板和列表頁模板。對于容頁模板,與頻道的容頁一樣,唯一不同的

35、是,為了在當(dāng)前位置輸出文章屬于某個專題,可以直接使用 ThisSubject對象。子欄目的列表頁模版與專題首頁里一樣,輸出某個專題子欄目下的所有文章就可以了。如:!-%TDLSubjectColumn acolumn = ThisSubject. GetSubjectColumn(“最新報道”);Response.Output(n);java.util.Vector vc = acolumn.TOC.AllLinks;for(int i=0;ivc.size();i+)Link aLink = (Link)vc.get(i);Response.Output();Response.Output(

36、 + aLink.Title + );Response.Output(n);Response.Output(n);%-注意,這時我們不限制輸出的條數(shù),就是輸出整個欄目下的所有文章。專題子欄目與頻道還有一個重要區(qū)別,那就是專題子欄目的文章列表是不可以分頁的,因此需要輸出所有文章。也可以在欄目的列表頁模板中使用ThisSubjectColumn.TOC.AllLinks來獲取該欄目的所有文章。專題對象ThisSubject,以與專題欄目對象 SubjectColumn的具體方法和屬性,請參考TurboCMS.Java模版中的對象參考。TurboCMS2009的模板制作(期刊部分)一、概述期刊封面頁

37、目錄頁,每期個文件xxxxxxxxxxxxxxx內(nèi)容頁內(nèi)容頁內(nèi)容頁內(nèi)容頁每一個期刊有一個唯一的封面頁,是進入期刊容的唯一入口。在這個封面頁中,建議放置最新一期的封面圖片以與該期中的關(guān)鍵文章。然后放置一個連接到該期目錄頁的。目錄頁每期一個,文件名為 目錄頁文件名+IssueNumber.ext,其中后綴名與期刊屬性設(shè)置中“目錄頁文件”的后綴同。期刊的屬性中“目錄頁文件”容為最新一期的目錄頁一樣。即是說,最新一期的目錄頁既可用目錄頁文件名+ IssueNumber.ext的方式訪問,也可以用期刊的目錄頁訪問。目錄頁中建議放置當(dāng)前期的封面圖片以與該期的所有文章按欄目分開的列表。容頁與以前頻道中的容頁

38、是一樣的。在所有以上三類頁面中均可以加上一個過刊查詢,用一個下拉列表的方式連接到所有的過刊。二、TDL編程1、封面頁模板制作我們知道,在模板中可以使用一些系統(tǒng)提供的對象來訪問數(shù)據(jù)。在期刊模板中,系統(tǒng)新增加了幾個對象,他們分別是“Magazine”、“Issue”,以與通過這兩個對象的屬性集合引出來的“Column”對象等。我們將在相關(guān)講述中詳細介紹每個對象可以提供的屬性和方法。在封面頁中主要訪問的對象為“Magazine”,“Magazine”對象的屬性有:Name,期刊的名字Alias,期刊的別名CoverPage,封面頁文件,即當(dāng)前文件的文件名,形為“/Magazines/software

39、/default.htm”IndexPage,目錄頁文件,到最新一期的目錄頁的文件。CoverPicture,封面圖片,等于最新一期的封面圖片。形如“/UploadFiles/Uploadfile11.jpg”。CurrentYear,最新一期的年份。如“2002”CurrentIssue,最新一期的期號,如“23”CurrentIssueID,最新一期的IssueID。Issues,一個集合,對象Issue的集合,期刊的所有的期號。Columns,一個集合,對象Column的集合,期刊的所有欄目。其中,屬性Issues返回的是一個對象集合,對象Issue的集合。對象Issue只有屬性,如下:

40、public String IssueYear,年號public String IssueNumber,期號public String TotalIssueNumber,總期號public String CoverPicture,封面圖片public String IndexPage,目錄頁,該期的目錄頁public String Description,該期的描述,可以將一些針對期的信息放在這個描述中。Columns屬性返回的是一個Column對象的集合,對象Column的屬性有:public String Name,欄目的名稱public String Alias,欄目的別名public

41、comTOC TOC,是一個comTOC對象,目錄public String IndexPage,該欄目的目錄頁。方法:public Vector Top(int x),返回最新的幾條頭條容,是一個Document對象的集合。public Vector ImageNews(int x),返回最新的幾條圖片新聞的容,是一個Document對象的集合。public String GetColumnIssueName(int issueid),返回當(dāng)前欄目指定某一期的列表頁地址。在封面頁模板制作中,最主要的任務(wù)即是輸出當(dāng)前期的封面圖片等,其腳本如下:當(dāng)前期刊的期號ID期刊封面頁模板實例:期刊名稱:i

42、mg src=!-%/期刊容列表java.util.Vector vcol = ThisMagazine.Columns;int i=0,j=0,k=0;java.util.Vector vissue = null;for(i=0;ia href= target=_blankmore.!-%java.util.Vector v2= subColumn.Top(3);for(k=0;kv2.size();k+)Document aDoc=(Document)v2.get(k);Response.Output( + aDoc.Item(Title) + );%- 查看期刊列表 !-%/期刊期列表v

43、issue = ThisMagazine.Issues;for(i=0;ivissue.size();i+)TDLIssue subIssue = (TDLIssue)vissue.get(i);Response.Output( + subIssue.IssueYear + 年第 + subIssue.IssueNumber + 期);%-2、期刊目錄頁模板制作期刊目錄頁的主要任務(wù)是按欄目將當(dāng)前期的所有文章的標(biāo)題列出,并建立相應(yīng)的連接。有可能需要做一個下拉列表以供過刊查詢。期刊目錄頁模板需要訪問的對象包括Magazine以與Issue。Issue也是一個可供直接訪問不需創(chuàng)建的對象,提供了當(dāng)前期

44、的一些數(shù)據(jù)。按欄目列出所有文章的腳本如下:!-%java.util.Vector vcol = ThisMagazine.Columns;for(int i=0;ivcol.size();i+)TDLColumn subColumn = (TDLColumn)vcol.get(i);Response.Output(欄目: +subColumn.Alias + );java.util.Vector v2=subColumn.TOC.AllLinks;for(int j=0;jv2.size();j+)Link aLink = (Link)v2.get(j);Response.Output(+ a

45、Link.Title +);%-如果需要訪問當(dāng)前期的一些其他信息,可以使用Issue對象,如:如果要創(chuàng)建過刊查詢,需要一段JavaScript,當(dāng)用戶從下拉列表里選擇了一項后,就用腳本將用戶帶到相應(yīng)的頁面。下面是一段可供參考的腳本:每期查詢:!-%/期刊期列表java.util.Vector vissue = ThisMagazine.Issues;for(int i=0;ivissue.size();i+)TDLIssue subIssue = (TDLIssue)vissue.get(i);String thisissue=(String)ThisMagazine.CurrentIssue

46、;String aissue=(String)subIssue.IssueNumber; if (thisissue.equals(aissue) Response.Output( + subIssue.IssueYear + 總第 + subIssue.TotalIssueNumber + 期); else Response.Output( + subIssue.IssueYear + 總第 + subIssue.IssueNumber + 期); %-期刊目錄頁列表模板實例:!-%/期刊容列表java.util.Vector vcol = ThisMagazine.Columns;int

47、i=0,j=0,k=0;java.util.Vector vissue = null;for(i=0;ia href= target=_blankmore.!-%java.util.Vector v2= subColumn.Top(3);for(k=0;kv2.size();k+)Document aDoc=(Document)v2.get(k);Response.Output( + aDoc.Item(Title) + );%- 查看該期刊往期 !-%/期刊期列表vissue = ThisMagazine.Issues;for(i=0;ivissue.size();i+)TDLIssue s

48、ubIssue = (TDLIssue)vissue.get(i);Response.Output( + subIssue.IssueYear + 年第 + subIssue.IssueNumber + 期);%-3、欄目列表頁模板制作欄目列表頁和期刊目錄頁有所不同,期刊目錄頁是把同期的所有欄目以列表的形式列出來,而欄目列表頁只是列出某一個欄目的當(dāng)前期文章列表,并提供往期該欄目的列表頁。欄目列表頁模板實例:欄目名稱:!-%java.util.Vector v2= ThisColumn.TOC.AllLinks;for(int j=0;jv2.size();j+)Link aLink = (Li

49、nk)v2.get(j);Response.Output( + aLink.Title + );%-欄目期刊列表 請選擇 !-%/欄目期列表java.util.Vector vissue = ThisMagazine.Issues;for(int i=0;ivissue.size();i+)TDLIssue subIssue = (TDLIssue)vissue.get(i); Response.Output( + subIssue.IssueYear + 年第 + subIssue.IssueNumber + 期);%-4、容頁模板制作請參見容頁模板制作。TurboCMS2009的模板制作(

50、頁面部分)一、概述頁面管理可以看作是專門管理中的一些特殊頁面的。在頁面管理中,我們需要定義頁面,以與頁面上的欄目。我們把首頁定義為一個頁面,然后在首頁上定義幾塊區(qū)域為“欄目”。其實首頁上還有其他更多的信息,但是那些信息都可以通過頻道的附帶發(fā)布來生成。頁面管理中由兩種方式來維護,一種是以欄目的形式,還有一種就是直接維護HTML容塊。在頁面欄目里中的信息主要包括原屬頻道,原屬頻道地址,標(biāo)題,連接地址,摘要,配圖,發(fā)布日期等7個字段,是對其他文章的一個描述信息,也就是維護的一個,頁面管理其實是一個“文章管理”。頁面欄目里的信息除了可以手工來創(chuàng)建外,更主要的方式是通過頻道里的推薦功能來完成。當(dāng)用戶從頻

51、道推薦到頁面欄目后,負責(zé)頁面管理的人員即可對信息進行選擇編輯,根據(jù)需要,補齊摘要或配圖后發(fā)布到頁面上。在頁面管理部分,涉與到模板編寫的,就只有頁面欄目的模板。二、TDL編程頁面欄目模板制作在頁面模板中,系統(tǒng)新增加了幾個對象,他們分別是“HomePage”、“TDLPageColumn”、“TDLPageLine”、“TDLPageLink”,下面這相關(guān)講述中詳細介紹每個對象可以提供的屬性和方法?!癏omePage”對象的屬性有:PageName,頁面的名稱FileName,頁面的地址“TDLPageColumn”對象的屬性有:Name,頁面欄目的名稱MaxLine,頁面欄目中行的行數(shù)Vecto

52、r Lines () 返回TDLPageLine對象的集合。在CMS頁面模型中,一個欄目由多個行組成,每一個行里包含多個?!癟DLPageLine”對象的屬性有:Link1Link5,頁面欄目中的行,如果不存在,返回null,不推薦使用,請使用 Links() 方法返回實際可用的Vector Links () 返回該行里的TDLPageLink對象的集合。只返回編輯實際設(shè)置過的?!癟DLPageLink”對象的屬性有:Channel所屬頻道名稱ChannelURL頻道URL地址Title標(biāo)題TitleColor顏色URL地址Summary摘要PIC配圖Alt配圖提示PublishDate發(fā)布日

53、期SmallImage縮略圖Style樣式isImage是否圖片isVideo是否視頻頁面欄目制作,也就是把頁面欄目中的行提取出來顯示。獲取欄目對象的方法,一種是直接使ThisPageColumn,獲取當(dāng)前頁面欄目,還有一種使用System.GetPageColumnByID(int cid)來獲取指定頁面欄目id的欄目。下面舉一個例子,當(dāng)前頁面欄目的列表!-%java.util.Vector vs = ThisPageColumn.Lines();if(vs!=null) Response.Output(); for(int i=0;ivs.size();i+) TDLPageLine ob

54、jLine = (TDLPageLine)vs.get(i); java.util.Vector vl = objLine.Links(); for(int j=0;jvl.size();j+) TDLPageLink objContent = (TDLPageLink)vl.get(j); Response.Output(·+objContent.Title+!-); Response.Output( + objContent.Summary + ); Response.Output();%-附:Dreamwaver中插件使用制作模板安裝TurboCMS_Java插件正確安裝Tu

55、rboCMS后在安裝目錄找到TurboCMS_Java.mxp文件可下載到本地,首先確保本機安裝好DreamweaverMX以上版本(以下稱DW)。雙擊TurboCMS_Java.mxp,如下圖點擊接受即可安裝。安裝成功在DW中就會出現(xiàn)如下圖的插件說明TurboCMS_Java插件已經(jīng)安裝成功。制作基本操作在做模板之前做好如下準(zhǔn)備工作:/root/設(shè)置為站點跟目錄,所有文件將會生成的這個目錄下面,所有文件將以/root/目錄為根。/images/中放模板中圖片的存放位置。/templates/中放模板文件。/templates/include/中放附帶發(fā)布的模板/include/中放公用的文件

56、例:首尾文件。/root/中所有文件圖片路徑均以/開頭的物理路徑。帶有包含文件的此文件后綴明為.shtml的形式。在DW中定義這個root為某站點。TurboCMS在制作中需要用到3種模板:1、容頁面模板。2、列表頁面模板、3、封面頁附帶發(fā)布模板先介紹一下Dreamwaver中TurboCMS插件的幾個功能按鈕:頻道對象,用來輸出和頻道有關(guān)的屬性,比如頻道的封面頁地址、頻道的名稱等。:容頁文檔對象,用來輸出和容頁文檔有關(guān)的屬性,比如文章的標(biāo)題、發(fā)布時間、其他自定義表單的值等。:頭條新聞,用來列出當(dāng)前頻道中的最新幾條頭條文章。:圖片新聞,用來列出當(dāng)前頻道中的最新圖片新聞,而且這個頻道有兩個自定義

57、字段,一個是PIC(圖片地址),一個是Summary(摘要)。:文章列表,主要用來制作頻道的列表頁的,列表分行方式目前有四種:列表、換行、表格、圖片加摘要??梢栽谀0謇镒孕姓{(diào)整顯示樣式。:頻道日列表,主要用來生成頻道每天的列表頁。日列表的生成是由發(fā)布服務(wù)來完成的。列表的分頁方式目前有四種:列表、換行、表格、圖片加摘要。:當(dāng)前位置,顯示出該頻道的路徑,比如:首頁新聞中心國新聞:容頁或列表頁分頁,這里提供了容頁和列表頁的分頁代碼。制作的時候,可以組合出不同的分頁顯示樣式。輸入框分頁和下拉框分頁可以和其他幾種分頁形式組合。:相關(guān)文章,列出文章的相關(guān)文章:包含文件,可以生成 或:TDL標(biāo)記,生成一個 :Output標(biāo)記,生成Response.Output();:獲取頻道對象,生成 System.GetChannel(/);:調(diào)用數(shù)據(jù)庫接口,主要是提供該高級模板制作人員,對數(shù)據(jù)庫的數(shù)據(jù)進行任意條件的提取提供了一個數(shù)據(jù)庫操作的框架。普通模板人員慎用該功能。容頁面模板制作(以下圖為例)在容頁面模板中,根據(jù)需求可以將容頁面模板的屬性定義為:上標(biāo)題、標(biāo)題、下標(biāo)題、正文、相關(guān)文章等。在DW中打開容頁面模板(content.shtml),應(yīng)用Turb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論