TurboCMS.Java模板制作指南.doc_第1頁
TurboCMS.Java模板制作指南.doc_第2頁
TurboCMS.Java模板制作指南.doc_第3頁
TurboCMS.Java模板制作指南.doc_第4頁
TurboCMS.Java模板制作指南.doc_第5頁
免費預(yù)覽已結(jié)束,剩余29頁可下載查看

下載本文檔

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

文檔簡介

TurboCMS內(nèi)容管理系統(tǒng)(Java版本)模 板 制 作 指 南北京泰得文通科技有限公司修訂時間:2010年7月34 / 34TurboCMS2009的模板制作(頻道部分)一、概述TurboCMS是一個基于模板的內(nèi)容管理系統(tǒng),整個系統(tǒng)的使用流程如下圖:XxXxXxHTML文件xxxxxxxxxxxx 表單數(shù)據(jù)庫錄入保存生成模板l 用戶通過WEB表單錄入信息l 表單中的信息被保存在數(shù)據(jù)庫中的一條記錄中l(wèi) 某一個頻道的所有信息構(gòu)成了一張表,有多個頻道,則數(shù)據(jù)庫中可能有多個表存在。l 內(nèi)容中的數(shù)據(jù)結(jié)合模板生成HTML文件。從上面的過程可以看出,每個頻道需要定義一個表單,以及一個模板。模板定義了數(shù)據(jù)呈現(xiàn)的形式,模板中定義的字段通常同表單中的字段是一一對應(yīng)的。表單數(shù)據(jù)庫中的表模板三者間的關(guān)系如下圖:xxxxxxxxxxxx XxXxXx表單模板數(shù)據(jù)庫中的表頻道的表單可以使用系統(tǒng)提供的表單定義工具生成,而模板則必須要手工制作,本文主要介紹模板的制作。1、從什么地方定義模板所謂模板,在TurboCMS中其實是一個普通的HTML文件,它定義了所有用這個模板生成的HTML文件的大致表現(xiàn)形式,包括布局、字體、顏色、風(fēng)格等信息。以管理員身份登陸TurboCMS,將會看到一個“模板”視圖,其中保存的就是網(wǎng)站的模板文件?!澳0濉币晥D其實是“文件夾”視圖的一個快截方式,專門管理/templates目錄。我們建議將所有的模板文件都保存在這里,如果一定要放在其他目錄的話,也是允許的。如果要編輯模板文件,請首先選中某個模板文件,然后鼠標(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ù)據(jù)環(huán)境中去,接下來將模板放到數(shù)據(jù)環(huán)境中去,解釋執(zhí)行其中的腳本,最后將所有的輸出寫入到HTML文件。系統(tǒng)依次處理所有的記錄,每處理一條記錄就執(zhí)行一遍上面的這個過程。我們引入一種新的語言(TDL,Template Define Language)來定義模板中的數(shù)據(jù)輸出。它是一種腳本語言,使用Java作為運行腳本,暴露了若干對象供腳本訪問,以實現(xiàn)腳本中的靈活控制。模板中的TDL腳本用兩個特殊符號分隔:。這兩個符號之間的內(nèi)容被當(dāng)成TDL腳本處理,其他的內(nèi)容原樣地輸出到HTML文件中去。請注意這里的分隔符與Java中的分隔符的區(qū)別。一段模板中的TDL腳本例: 也支持表達式直接輸出,等同于。模板中的TDL腳本是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、網(wǎng)站規(guī)劃在講解TDL編程前我們先來介紹一下網(wǎng)站規(guī)劃的步驟,以便理解模板的作用。某欄目的最新幾條(頭條信息)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頁面(文章內(nèi)容頁)2、頻道的封面頁3、上級頻道以及首頁中的top列表(通過inc文件體現(xiàn))因此,有三種模板腳本存在:1、文章內(nèi)容頁模板2、封面頁模板3、附帶發(fā)布的模板也即是說,對每一個頻道,需要制作三個模板文件,其中的附帶發(fā)布模板是可選的。2、文章內(nèi)容頁模板制作前面我們說過,TDL的腳本中可以訪問若干個內(nèi)置對象。所謂內(nèi)置對象,是指不需要申明就可以直接訪問的Class對象。文章內(nèi)容頁的模板制作需要訪問的兩個主要的內(nèi)置對象是 Response和Document。Response對象的目的在于從TDL中輸出,Document對象的主要作用是訪問上下文中當(dāng)前處理的文章的各字段的值。Document對象是最主要的對象,腳本通過它來取得當(dāng)前數(shù)據(jù)環(huán)境中的數(shù)據(jù),它只有三個方法.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”);如果確信調(diào)用會返回的是一個對象,則應(yīng)該申明相應(yīng)的對象來進行調(diào)用,例:java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);參數(shù)fieldName表示字段名,他們同頻道的表單定義中為字段取的名字是一樣的。推薦全部使用英文做字段名。在使用Document的Item 方法返回字段值時應(yīng)當(dāng)確信字段名是在頻道的表單定義中確實定義好了的,并且名稱拼寫沒有錯誤。除了可以訪問表單定義時定義的字段以外,有幾個字段是始終可以訪問的,他們是:l Id,當(dāng)前數(shù)據(jù)環(huán)境中的那條記錄在整個系統(tǒng)中的唯一編號l Title,內(nèi)容的標(biāo)題l Author,提交這條內(nèi)容的用戶的用戶名l SubmitDate,這條內(nèi)容的提交時間l Url,當(dāng)前記錄在生成HTML文件后,這個文件在系統(tǒng)中的URL,是絕對路徑,如/site1/news/news3498.html Content,當(dāng)前記錄的正文字段。Title標(biāo)題和Content正文是不論在表單定義中是否定義,在內(nèi)容提交時系統(tǒng)均會要求輸入的兩個字段,所以可以放心地訪問這兩個字段。l PageNum,如果一條記錄的正文內(nèi)容有多頁,則每一頁都將生成一個獨立的HTML文件,在模板中不用擔(dān)心,Content字段始終返回的是當(dāng)前頁的內(nèi)容,而PageNum則返回當(dāng)前頁的頁號,頁號是從1開始的。l PrevPage,如果正文有多頁,則PrevPage返回前一頁的那個文件的URL,如果當(dāng)前頁是1,則這個字段返回空串。l NextPage,如果正文有多頁,則NextPage返回下一頁的那個文件的URL,如果當(dāng)前頁是最后一頁,則這個字段返回空串。l CMSPIC,文章的圖片字段l CMSWLINK,文章的文件連接字段l CMSSUMMARY,文章的摘要字段l Pages,如果正文有多頁,則Pages字段返回所有頁的集合。特別注意的是,集合在Java中是一個對象,因此需要使用定義一個Vector來取得。集合中保存的是每一頁的URL。輸出所有頁的一個目錄的代碼如下:!-%/內(nèi)容頁分頁 最新 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)Response.Output( 第 + (i+1) + 頁 );elseResponse.Output( 第 + (i+1) + 頁 );%-如果不知道一條內(nèi)容到底有無可能有分頁,則最好在輸出下一頁的連接前先判斷一下,如下:!-%/內(nèi)容頁分頁 前一頁 后一頁String pPage, nPage;pPage = (String)ThisDocument.Item(PrevPage);nPage = (String)ThisDocument.Item(NextPage);if(!pPage.equals()Response.Output(<<前一頁    );if(!nPage.equals()Response.Output(后一頁>>);%-注意,所有對字段的名稱都是大小寫無關(guān)的,即ThisDocument.Item(“Content”)與ThisDocument.Item(“CONTENT”)是等效的。2.2 Document對象的方法public Vector RelativeArticles(int lngCount, String RelDefine)RelativeArticles方法返回當(dāng)前文章的相關(guān)文章。返回的是一個Link對象組成的向量。參數(shù) lngCount為返回的條數(shù)。如果大于實際的條數(shù),則只返回實際的條數(shù)。參數(shù)RelDefine為“相關(guān)文章”的名,請使用空串來表示缺省的相關(guān)文章。public Channel DocumentChannel() 返回當(dāng)前文章所在的頻道對象。public String DocumentSource() 返回當(dāng)前文章的文章來源。Response對象負責(zé)內(nèi)容的輸出,通常用來直接將字段的值輸出到HTML文件。Response對象有兩個方法:l Output(txtText),將txtText輸出到HTML文件中去。l Clear,取消所有已經(jīng)有的輸出,將輸出緩沖清空。模板文件中有普通的HTML以及模板腳本,普通的HTML將直接輸出到緩沖區(qū),腳本將被解釋執(zhí)行,腳本中也可以通過調(diào)用Output將文本輸出到緩沖區(qū)。當(dāng)模板文件結(jié)束時,緩沖區(qū)中的內(nèi)容就被輸出到HTML文件中去了。注意Clear方法除了將清除所有用Output輸出的內(nèi)容外,還將清除所有的已經(jīng)在緩沖中的普通HTML內(nèi)容。3、封面頁模板的制作頻道的封面頁制作中的主要任務(wù)在于列出頻道內(nèi)所有文章的標(biāo)題和連接。這個列表支持分頁顯示,可以定義每頁僅顯示多少條。TDL解釋器將只把當(dāng)前頁的文章返回。封面頁制作需要訪問的對象為Channel,它也是一個內(nèi)置對象。另外,還可能涉及到類TOC和Link,這兩個類是不能直接訪問的,一定是通過對象Channel的屬性返回的。Channel對象的屬性和方法:l Top(x)方法,返回當(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);%-l TopEx(x)方法,同上,但包含子頻道中的文章l Name屬性,頻道名l Path屬性,頻道的全名。因頻道可為樹形結(jié)構(gòu),Path屬性返回從頂級頻道開始的路徑,形式為:/root/parent/name,例:/教程和文檔/web3dl SubChannels方法,返回一個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);l SubNavigateChannels方法,返回一個Channel對象的集合,不包含已關(guān)閉的頻道l TOC屬性,是一個comTOC對象,保存了有關(guān)目錄的屬性。l CoverPage屬性,返回當(dāng)前頻道的封面頁的地址。TOC對象的屬性有:l AllLinks屬性,返回一個Link對象的集合,表示了當(dāng)前頻道的所有文章(實際上只包含當(dāng)前頁的內(nèi)容)l NextPage,一個串,目錄頁可分頁,如果有下一頁,則NextPage是下一頁文件的URL。系統(tǒng)自動為每一頁生成文件名,規(guī)則是在設(shè)定的目錄頁文件名后加上數(shù)字表示頁號,第一頁不帶頁號。如 toc.htm,toc_2.htm,toc_3.htm。l PrevPage,上一頁。如果沒有上一頁,則返回空串。l AllPages,返回一個Link對象的集合,表示所有的頁。l Pages,整數(shù),一共有多少頁Link對象的屬性:l Title,連接的標(biāo)題l Url,連接的地址。l Author,作者l 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);%-輸出上一頁下一頁連接的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方法。但是,Channel對象表示的是當(dāng)前頻道,如果要訪問其他頻道里的文章信息,就必須使用另一個System對象,下面對System對象做一個介紹。System對象System對象提供一些與系統(tǒng)有關(guān)的輔助功能。它有以下方法:l Execute(templateUri),加載一個模板文件,返回執(zhí)行的結(jié)果。注意參數(shù)是絕對路徑。用這個方法,可以實現(xiàn)一個模板中加載一個子模板的功能。l GetChannel(ChannelUri)返回一個特定的頻道對象,參數(shù)ChannelUri是系統(tǒng)的URI格式的串,因為TurboCMS的頻道是層次形結(jié)構(gòu),在父頻道與子頻道間用“/”隔開。例:“/測試項目/新聞”表示“測試項目”頻道下的“新聞”子頻道。GetChannel方法返回的對象跟缺省的Channel對象是一樣的,有Name、Path屬性和Top(x)以及TopEx(x)及SubChannels等方法,但TOC屬性不能訪問。l GetChannelByID(pid) 返回指定頻道ID的頻道對象,參數(shù)pid為TurboCMS系統(tǒng)中維護的頻道ID。GetChannelByID方法返回的對象跟缺省的Channel對象是一樣的,有Name、Path屬性和Top(x)以及TopEx(x)及SubChannels等方法,但TOC屬性不能訪問。l GetDocumentInChannel(x, ids,orderfield)返回指定頻道集中前x篇文章,并按指定的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=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.util.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;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( 共 + cmsPageA + 頁 );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);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);/頻道日列表 結(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(!pPage.trim().equals()Response.Output(<<上一張    );if(!nPage.trim().equals()Response.Output(下一張>>);%-配合相應(yīng)的js,制作出精美的圖片集。TurboCMS2009的模板制作(專題部分)一、概述在TurboCMS中,專題是指由編輯創(chuàng)建的,按照專題模板生成的一個頁面,及該頁面下欄目和文章的總稱。專題在TurboCMS中,具有多重特征。一方面,專題類似于普通的文章,總是歸屬于某個頻道,具有“標(biāo)題”、“作者”等基本字段,以及可以經(jīng)過表單定義增加擴展字段。這些類似于文章的字段,其值在編輯新建專題時直接輸入到系統(tǒng)中。另一方面,專題又類似于一個頻道,可以有子欄目,子欄目里可以有文章。編輯新建專題時,需要先選擇“專題模板”。“專題模板”于我們在頻道中講到的“模板”的概念有所不同。頻道中的模板,包括內(nèi)容頁模板,列表頁模板,附帶發(fā)布模板,都只是一個文件,而“專題模板”則是由專題首頁模板、子欄目定義、子欄目所使用的內(nèi)容頁模板及列表頁模板的一個總和。專題模板必須由管理員首先在管理后臺創(chuàng)建。管理員創(chuàng)建專題模板時,需要制作和指定專題首頁的模板文件,以及定義專題下的子欄目,以及為每一個子欄目制作內(nèi)容頁模板和列表頁模板。一個站點中可以有多個專題模板,比如新聞專題模板,娛樂專題模板。不同的專題模板除了專題首頁的模板文件不同以外,其所定義的子欄目也不同。編輯在創(chuàng)建一個具體的專題時,根據(jù)需要,選擇一個專題模板。一旦選擇了專題模板,那么相應(yīng)的需要錄入什么字段,以及有什么子欄目,就固定下來了。二、TDL編程根據(jù)上面的介紹,制作專題模板是一系列工作的總和,包括定義專題的表單,制作專題首頁的模板,定義子欄目,制作子欄目的模板等。定義專題表單與定義頻道的表單類似,根據(jù)需要,給專題增加一些字段。專題首頁的模板制作包括兩方面。一般來說,一個專題首頁由兩部分構(gòu)成。一部分是輸出專題的一些信息,比如專題的名稱,專題的介紹等;第二部分是將專題中每個子欄目里的文章提取若干條來在專題首頁上顯示。對于第一部分,輸出專題的信息,與頻道里的內(nèi)容頁輸出文章的字段類似。所使用的代碼如:其中的ThisSubject 代表當(dāng)前專題,與文章中的ThisDocument代表當(dāng)前文章類似。對于第二部分,子欄目中文章的列表,首先,我們的模板是將用在某一個特定的“專題模板”里的,因此我們知道該“專題模板”下包括什么子欄目。在代碼中我們通過 ThisSubject的GetSubjectColumn方法來獲得特定的欄目對象。代碼例:!-%TDLSubjectColumn acolumn = ThisSubject. GetSubjectColumn(“最新報道”);Response.Output(n);java.util.Vector vc = acolumn.TOC.AllLinks;for(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。然后是子欄目里的內(nèi)容頁模板和列表頁模板。對于內(nèi)容頁模板,與頻道的內(nèi)容頁一樣,唯一不同的是,為了在當(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( + aLink.Title + );Response.Output(n);Response.Output(n);%-注意,這時我們不限制輸出的條數(shù),就是輸出整個欄目下的所有文章。專題子欄目與頻道還有一個重要區(qū)別,那就是專題子欄目的文章列表是不可以分頁的,因此需要輸出所有文章。也可以在欄目的列表頁模板中使用ThisSubjectColumn.TOC.AllLinks來獲取該欄目的所有文章。專題對象ThisSubject,以及專題欄目對象 SubjectColumn的具體方法和屬性,請參考TurboCMS.Java模版中的對象參考。TurboCMS2009的模板制作(期刊部分)一、概述期刊封面頁目錄頁,每期個文件xxxxxxxxxxxxxxx內(nèi)容頁內(nèi)容頁內(nèi)容頁內(nèi)容頁每一個期刊有一個唯一的封面頁,是進入期刊內(nèi)容的唯一入口。在這個封面頁中,建議放置最新一期的封面圖片以及該期中的關(guān)鍵文章。然后放置一個連接到該期目錄頁的鏈接。目錄頁每期一個,文件名為 目錄頁文件名+IssueNumber.ext,其中后綴名與期刊屬性設(shè)置中“目錄頁文件”的后綴同。期刊的屬性中“目錄頁文件”內(nèi)容為最新一期的目錄頁相同。即是說,最新一期的目錄頁既可用目錄頁文件名+ IssueNumber.ext的方式訪問,也可以用期刊的目錄頁訪問。目錄頁中建議放置當(dāng)前期的封面圖片以及該期的所有文章按欄目分開的列表。內(nèi)容頁與以前頻道中的內(nèi)容頁是一樣的。在所有以上三類頁面中均可以加上一個過刊查詢,用一個下拉列表的方式連接到所有的過刊。二、TDL編程1、封面頁模板制作我們知道,在模板中可以使用一些系統(tǒng)提供的對象來訪問數(shù)據(jù)。在期刊模板中,系統(tǒng)新增加了幾個對象,他們分別是“Magazine”、“Issue”,以及通過這兩個對象的屬性集合引出來的“Column”對象等。我們將在相關(guān)講述中詳細介紹每個對象可以提供的屬性和方法。在封面頁中主要訪問的對象為“Magazine”,“Magazine”對象的屬性有:l Name,期刊的名字l Alias,期刊的別名l CoverPage,封面頁文件,即當(dāng)前文件的文件名,形為“/Magazines/software/default.htm”l IndexPage,目錄頁文件,到最新一期的目錄頁的文件。l CoverPicture,封面圖片,等于最新一期的封面圖片。形如“/UploadFiles/Uploadfile11.jpg”。l CurrentYear,最新一期的年份。如“2002”l CurrentIssue,最新一期的期號,如“23”l CurrentIssueID,最新一期的IssueID。l Issues,一個集合,對象Issue的集合,期刊的所有的期號。l Columns,一個集合,對象Column的集合,期刊的所有欄目。其中,屬性Issues返回的是一個對象集合,對象Issue的集合。對象Issue只有屬性,如下:l public String IssueYear,年號l public String IssueNumber,期號l public String TotalIssueNumber,總期號l public String CoverPicture,封面圖片l public String IndexPage,目錄頁,該期的目錄頁l public String Description,該期的描述,可以將一些針對期的信息放在這個描述中。Columns屬性返回的是一個Column對象的集合,對象Column的屬性有:l public String Name,欄目的名稱l public String Alias,欄目的別名l public comTOC TOC,是一個comTOC對象,目錄l public String IndexPage,該欄目的目錄頁。方法:l public Vector Top(int x),返回最新的幾條頭條內(nèi)容,是一個Document對象的集合。l public Vector ImageNews(int x),返回最新的幾條圖片新聞的內(nèi)容,是一個Document對象的集合。l public String GetColumnIssueName(int issueid),返回當(dāng)前欄目指定某一期的列表頁地址。在封面頁模板制作中,最主要的任務(wù)即是輸出當(dāng)前期的封面圖片等,其腳本如下:當(dāng)前期刊的期號ID期刊封面頁模板實例:期刊名稱:img src=!-%/期刊內(nèi)容列表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) + );%- 查看期刊列表 !-%/期刊期列表vissue = ThisMagazine.Issues;for(i=0;ivissue.size();i+)TDLIssue subIssue = (TDLIssue)vissue.get(i);Response.Output( + subIssue.IssueYear + 年第 + subIssue.IssueNumber + 期);%-2、期刊目錄頁模板制作期刊目錄頁的主要任務(wù)是按欄目將當(dāng)前期內(nèi)的所有文章的標(biāo)題列出,并建立相應(yīng)的連接。有可能需要做一個下拉列表以供過刊查詢。期刊目錄頁模板需要訪問的對象包括M

溫馨提示

  • 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

提交評論