已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
TurboCMS內(nèi)容管理系統(tǒng)(Java版本)模 板 制 作 指 南北京泰得文通科技有限公司修訂時(shí)間:2010年7月34 / 34TurboCMS2009的模板制作(頻道部分)一、概述TurboCMS是一個(gè)基于模板的內(nèi)容管理系統(tǒng),整個(gè)系統(tǒng)的使用流程如下圖:XxXxXxHTML文件xxxxxxxxxxxx 表單數(shù)據(jù)庫(kù)錄入保存生成模板l 用戶(hù)通過(guò)WEB表單錄入信息l 表單中的信息被保存在數(shù)據(jù)庫(kù)中的一條記錄中l(wèi) 某一個(gè)頻道的所有信息構(gòu)成了一張表,有多個(gè)頻道,則數(shù)據(jù)庫(kù)中可能有多個(gè)表存在。l 內(nèi)容中的數(shù)據(jù)結(jié)合模板生成HTML文件。從上面的過(guò)程可以看出,每個(gè)頻道需要定義一個(gè)表單,以及一個(gè)模板。模板定義了數(shù)據(jù)呈現(xiàn)的形式,模板中定義的字段通常同表單中的字段是一一對(duì)應(yīng)的。表單數(shù)據(jù)庫(kù)中的表模板三者間的關(guān)系如下圖:xxxxxxxxxxxx XxXxXx表單模板數(shù)據(jù)庫(kù)中的表頻道的表單可以使用系統(tǒng)提供的表單定義工具生成,而模板則必須要手工制作,本文主要介紹模板的制作。1、從什么地方定義模板所謂模板,在TurboCMS中其實(shí)是一個(gè)普通的HTML文件,它定義了所有用這個(gè)模板生成的HTML文件的大致表現(xiàn)形式,包括布局、字體、顏色、風(fēng)格等信息。以管理員身份登陸TurboCMS,將會(huì)看到一個(gè)“模板”視圖,其中保存的就是網(wǎng)站的模板文件?!澳0濉币晥D其實(shí)是“文件夾”視圖的一個(gè)快截方式,專(zhuān)門(mén)管理/templates目錄。我們建議將所有的模板文件都保存在這里,如果一定要放在其他目錄的話(huà),也是允許的。如果要編輯模板文件,請(qǐng)首先選中某個(gè)模板文件,然后鼠標(biāo)右鍵,選擇“Notepad”,以源代碼的方式編輯模板文件。在這個(gè)非常類(lèi)似于Windows的Notepad的環(huán)境中,可以以源代碼的方式編輯模板文件,并在其中插入定義模板專(zhuān)用的腳本。最后將文件保存下來(lái)便成為模板。2、模板和模板腳本模板一方面定義了最終的HTML文件的形式和風(fēng)格,另一方面還定義了數(shù)據(jù)如何呈現(xiàn)在最終的HTML文件中。模板中的HTML定義的是形式和風(fēng)格,而其中的腳本則定義了數(shù)據(jù)的呈現(xiàn)。當(dāng)站點(diǎn)中的一個(gè)頻道的所有信息被發(fā)布時(shí),系統(tǒng)構(gòu)造了一個(gè)數(shù)據(jù)環(huán)境,然后將頻道中的一條記錄取出來(lái),并放到數(shù)據(jù)環(huán)境中去,接下來(lái)將模板放到數(shù)據(jù)環(huán)境中去,解釋執(zhí)行其中的腳本,最后將所有的輸出寫(xiě)入到HTML文件。系統(tǒng)依次處理所有的記錄,每處理一條記錄就執(zhí)行一遍上面的這個(gè)過(guò)程。我們引入一種新的語(yǔ)言(TDL,Template Define Language)來(lái)定義模板中的數(shù)據(jù)輸出。它是一種腳本語(yǔ)言,使用Java作為運(yùn)行腳本,暴露了若干對(duì)象供腳本訪(fǎng)問(wèn),以實(shí)現(xiàn)腳本中的靈活控制。模板中的TDL腳本用兩個(gè)特殊符號(hào)分隔:。這兩個(gè)符號(hào)之間的內(nèi)容被當(dāng)成TDL腳本處理,其他的內(nèi)容原樣地輸出到HTML文件中去。請(qǐng)注意這里的分隔符與Java中的分隔符的區(qū)別。一段模板中的TDL腳本例: 也支持表達(dá)式直接輸出,等同于。模板中的TDL腳本是Java腳本,任何合法的Java代碼都是被允許的。關(guān)于Java的語(yǔ)法基礎(chǔ),可以參考Java技術(shù)部分。在TDL腳本中,除了可以使用標(biāo)準(zhǔn)的Java代碼之外,還可以訪(fǎng)問(wèn)系統(tǒng)提供的幾個(gè)固有對(duì)象,用其同數(shù)據(jù)環(huán)境打交道,取出需要的數(shù)據(jù)。這幾個(gè)對(duì)象分別是:System,ThisDocument,ThisChannel,ThisSite,ThisPage,ThisPageColumn,ThisColumn,ThisMagazine,ThisIssue,Response。本文中對(duì)這幾個(gè)對(duì)象將進(jìn)行詳細(xì)的說(shuō)明。二、TDL編程1、網(wǎng)站規(guī)劃在講解TDL編程前我們先來(lái)介紹一下網(wǎng)站規(guī)劃的步驟,以便理解模板的作用。某欄目的最新幾條(頭條信息)hotnewshotnewshotnewshotnews導(dǎo)航欄站點(diǎn)首頁(yè)帶摘要的top 10帶摘要的top 10帶摘要的top 10inc文件文章n文章1子欄目導(dǎo)航欄頻道一首頁(yè)頻道二首頁(yè)頻道三首頁(yè)子頻道一首頁(yè)子頻道二首頁(yè)文章標(biāo)題列表.帶摘要的top 10帶摘要的top 10.文章3文章2文章1目錄頁(yè)(可能分頁(yè))當(dāng)前頻道top 5由上圖可以看出,當(dāng)一篇文章提交到某個(gè)頻道后,有三種文件需要生成或修改:1、文章本身的HTML頁(yè)面(文章內(nèi)容頁(yè))2、頻道的封面頁(yè)3、上級(jí)頻道以及首頁(yè)中的top列表(通過(guò)inc文件體現(xiàn))因此,有三種模板腳本存在:1、文章內(nèi)容頁(yè)模板2、封面頁(yè)模板3、附帶發(fā)布的模板也即是說(shuō),對(duì)每一個(gè)頻道,需要制作三個(gè)模板文件,其中的附帶發(fā)布模板是可選的。2、文章內(nèi)容頁(yè)模板制作前面我們說(shuō)過(guò),TDL的腳本中可以訪(fǎng)問(wèn)若干個(gè)內(nèi)置對(duì)象。所謂內(nèi)置對(duì)象,是指不需要申明就可以直接訪(fǎng)問(wèn)的Class對(duì)象。文章內(nèi)容頁(yè)的模板制作需要訪(fǎng)問(wèn)的兩個(gè)主要的內(nèi)置對(duì)象是 Response和Document。Response對(duì)象的目的在于從TDL中輸出,Document對(duì)象的主要作用是訪(fǎng)問(wèn)上下文中當(dāng)前處理的文章的各字段的值。Document對(duì)象是最主要的對(duì)象,腳本通過(guò)它來(lái)取得當(dāng)前數(shù)據(jù)環(huán)境中的數(shù)據(jù),它只有三個(gè)方法.2.1 Document對(duì)象的方法Item(field Name)獲取字段fieldName的值,返回字段值,是一個(gè)對(duì)象例:String Name,Sex,Age;Name = (String)ThisDocument.Item(“Name”);Sex = (String)ThisDocument.Item(“Sex”);Age = (String)ThisDocument.Item(“Age”);如果確信調(diào)用會(huì)返回的是一個(gè)對(duì)象,則應(yīng)該申明相應(yīng)的對(duì)象來(lái)進(jìn)行調(diào)用,例:java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);參數(shù)fieldName表示字段名,他們同頻道的表單定義中為字段取的名字是一樣的。推薦全部使用英文做字段名。在使用Document的Item 方法返回字段值時(shí)應(yīng)當(dāng)確信字段名是在頻道的表單定義中確實(shí)定義好了的,并且名稱(chēng)拼寫(xiě)沒(méi)有錯(cuò)誤。除了可以訪(fǎng)問(wèn)表單定義時(shí)定義的字段以外,有幾個(gè)字段是始終可以訪(fǎng)問(wèn)的,他們是:l Id,當(dāng)前數(shù)據(jù)環(huán)境中的那條記錄在整個(gè)系統(tǒng)中的唯一編號(hào)l Title,內(nèi)容的標(biāo)題l Author,提交這條內(nèi)容的用戶(hù)的用戶(hù)名l SubmitDate,這條內(nèi)容的提交時(shí)間l Url,當(dāng)前記錄在生成HTML文件后,這個(gè)文件在系統(tǒng)中的URL,是絕對(duì)路徑,如/site1/news/news3498.html Content,當(dāng)前記錄的正文字段。Title標(biāo)題和Content正文是不論在表單定義中是否定義,在內(nèi)容提交時(shí)系統(tǒng)均會(huì)要求輸入的兩個(gè)字段,所以可以放心地訪(fǎng)問(wèn)這兩個(gè)字段。l PageNum,如果一條記錄的正文內(nèi)容有多頁(yè),則每一頁(yè)都將生成一個(gè)獨(dú)立的HTML文件,在模板中不用擔(dān)心,Content字段始終返回的是當(dāng)前頁(yè)的內(nèi)容,而PageNum則返回當(dāng)前頁(yè)的頁(yè)號(hào),頁(yè)號(hào)是從1開(kāi)始的。l PrevPage,如果正文有多頁(yè),則PrevPage返回前一頁(yè)的那個(gè)文件的URL,如果當(dāng)前頁(yè)是1,則這個(gè)字段返回空串。l NextPage,如果正文有多頁(yè),則NextPage返回下一頁(yè)的那個(gè)文件的URL,如果當(dāng)前頁(yè)是最后一頁(yè),則這個(gè)字段返回空串。l CMSPIC,文章的圖片字段l CMSWLINK,文章的文件連接字段l CMSSUMMARY,文章的摘要字段l Pages,如果正文有多頁(yè),則Pages字段返回所有頁(yè)的集合。特別注意的是,集合在Java中是一個(gè)對(duì)象,因此需要使用定義一個(gè)Vector來(lái)取得。集合中保存的是每一頁(yè)的URL。輸出所有頁(yè)的一個(gè)目錄的代碼如下:!-%/內(nèi)容頁(yè)分頁(yè) 最新 n 頁(yè) 第 n 頁(yè)String pPage, nPage;java.util.Vector pageall = (java.util.Vector)ThisDocument.Item(pages);Response.Output( 最新 + pageall.size() + 頁(yè) );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) + 頁(yè) );elseResponse.Output( 第 + (i+1) + 頁(yè) );%-如果不知道一條內(nèi)容到底有無(wú)可能有分頁(yè),則最好在輸出下一頁(yè)的連接前先判斷一下,如下:!-%/內(nèi)容頁(yè)分頁(yè) 前一頁(yè) 后一頁(yè)String pPage, nPage;pPage = (String)ThisDocument.Item(PrevPage);nPage = (String)ThisDocument.Item(NextPage);if(!pPage.equals()Response.Output(<<前一頁(yè) );if(!nPage.equals()Response.Output(后一頁(yè)>>);%-注意,所有對(duì)字段的名稱(chēng)都是大小寫(xiě)無(wú)關(guān)的,即ThisDocument.Item(“Content”)與ThisDocument.Item(“CONTENT”)是等效的。2.2 Document對(duì)象的方法public Vector RelativeArticles(int lngCount, String RelDefine)RelativeArticles方法返回當(dāng)前文章的相關(guān)文章。返回的是一個(gè)Link對(duì)象組成的向量。參數(shù) lngCount為返回的條數(shù)。如果大于實(shí)際的條數(shù),則只返回實(shí)際的條數(shù)。參數(shù)RelDefine為“相關(guān)文章”的名,請(qǐng)使用空串來(lái)表示缺省的相關(guān)文章。public Channel DocumentChannel() 返回當(dāng)前文章所在的頻道對(duì)象。public String DocumentSource() 返回當(dāng)前文章的文章來(lái)源。Response對(duì)象負(fù)責(zé)內(nèi)容的輸出,通常用來(lái)直接將字段的值輸出到HTML文件。Response對(duì)象有兩個(gè)方法:l Output(txtText),將txtText輸出到HTML文件中去。l Clear,取消所有已經(jīng)有的輸出,將輸出緩沖清空。模板文件中有普通的HTML以及模板腳本,普通的HTML將直接輸出到緩沖區(qū),腳本將被解釋執(zhí)行,腳本中也可以通過(guò)調(diào)用Output將文本輸出到緩沖區(qū)。當(dāng)模板文件結(jié)束時(shí),緩沖區(qū)中的內(nèi)容就被輸出到HTML文件中去了。注意Clear方法除了將清除所有用Output輸出的內(nèi)容外,還將清除所有的已經(jīng)在緩沖中的普通HTML內(nèi)容。3、封面頁(yè)模板的制作頻道的封面頁(yè)制作中的主要任務(wù)在于列出頻道內(nèi)所有文章的標(biāo)題和連接。這個(gè)列表支持分頁(yè)顯示,可以定義每頁(yè)僅顯示多少條。TDL解釋器將只把當(dāng)前頁(yè)的文章返回。封面頁(yè)制作需要訪(fǎng)問(wèn)的對(duì)象為Channel,它也是一個(gè)內(nèi)置對(duì)象。另外,還可能涉及到類(lèi)TOC和Link,這兩個(gè)類(lèi)是不能直接訪(fǎng)問(wèn)的,一定是通過(guò)對(duì)象Channel的屬性返回的。Channel對(duì)象的屬性和方法:l Top(x)方法,返回當(dāng)前頻道的最新文章,是Document對(duì)象的集合,例:!-%/頭條新聞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屬性,頻道的全名。因頻道可為樹(shù)形結(jié)構(gòu),Path屬性返回從頂級(jí)頻道開(kāi)始的路徑,形式為:/root/parent/name,例:/教程和文檔/web3dl SubChannels方法,返回一個(gè)Channel對(duì)象的集合,但是這些Channel對(duì)象的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方法,返回一個(gè)Channel對(duì)象的集合,不包含已關(guān)閉的頻道l TOC屬性,是一個(gè)comTOC對(duì)象,保存了有關(guān)目錄的屬性。l CoverPage屬性,返回當(dāng)前頻道的封面頁(yè)的地址。TOC對(duì)象的屬性有:l AllLinks屬性,返回一個(gè)Link對(duì)象的集合,表示了當(dāng)前頻道的所有文章(實(shí)際上只包含當(dāng)前頁(yè)的內(nèi)容)l NextPage,一個(gè)串,目錄頁(yè)可分頁(yè),如果有下一頁(yè),則NextPage是下一頁(yè)文件的URL。系統(tǒng)自動(dòng)為每一頁(yè)生成文件名,規(guī)則是在設(shè)定的目錄頁(yè)文件名后加上數(shù)字表示頁(yè)號(hào),第一頁(yè)不帶頁(yè)號(hào)。如 toc.htm,toc_2.htm,toc_3.htm。l PrevPage,上一頁(yè)。如果沒(méi)有上一頁(yè),則返回空串。l AllPages,返回一個(gè)Link對(duì)象的集合,表示所有的頁(yè)。l Pages,整數(shù),一共有多少頁(yè)Link對(duì)象的屬性:l Title,連接的標(biāo)題l Url,連接的地址。l Author,作者l SubmitDate,提交日期在封面頁(yè)模板中,首先輸出當(dāng)前頁(yè)文章標(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);%-輸出上一頁(yè)下一頁(yè)連接的TDL代碼例:!-%/列表頁(yè)分頁(yè) 前一頁(yè) 后一頁(yè)String pPage, nPage;pPage = ThisChannel.TOC.PrevPage;nPage = ThisChannel.TOC.NextPage;if(!pPage.equals()Response.Output(<<前一頁(yè) );if(!nPage.equals()Response.Output(后一頁(yè)>>);%-4、附帶發(fā)布的模板制作附帶發(fā)布最主要的目的是取出頻道的最新幾條信息,然后用模板生成一個(gè)inc文件。因此,在附帶發(fā)布頁(yè)模板制作中,最主要的訪(fǎng)問(wèn)的對(duì)象是 Channel,訪(fǎng)問(wèn)它的Top和TopEx方法。但是,Channel對(duì)象表示的是當(dāng)前頻道,如果要訪(fǎng)問(wèn)其他頻道里的文章信息,就必須使用另一個(gè)System對(duì)象,下面對(duì)System對(duì)象做一個(gè)介紹。System對(duì)象System對(duì)象提供一些與系統(tǒng)有關(guān)的輔助功能。它有以下方法:l Execute(templateUri),加載一個(gè)模板文件,返回執(zhí)行的結(jié)果。注意參數(shù)是絕對(duì)路徑。用這個(gè)方法,可以實(shí)現(xiàn)一個(gè)模板中加載一個(gè)子模板的功能。l GetChannel(ChannelUri)返回一個(gè)特定的頻道對(duì)象,參數(shù)ChannelUri是系統(tǒng)的URI格式的串,因?yàn)門(mén)urboCMS的頻道是層次形結(jié)構(gòu),在父頻道與子頻道間用“/”隔開(kāi)。例:“/測(cè)試項(xiàng)目/新聞”表示“測(cè)試項(xiàng)目”頻道下的“新聞”子頻道。GetChannel方法返回的對(duì)象跟缺省的Channel對(duì)象是一樣的,有Name、Path屬性和Top(x)以及TopEx(x)及SubChannels等方法,但TOC屬性不能訪(fǎng)問(wèn)。l GetChannelByID(pid) 返回指定頻道ID的頻道對(duì)象,參數(shù)pid為T(mén)urboCMS系統(tǒng)中維護(hù)的頻道ID。GetChannelByID方法返回的對(duì)象跟缺省的Channel對(duì)象是一樣的,有Name、Path屬性和Top(x)以及TopEx(x)及SubChannels等方法,但TOC屬性不能訪(fǎng)問(wèn)。l GetDocumentInChannel(x, ids,orderfield)返回指定頻道集中前x篇文章,并按指定的orderfield排序參數(shù)使用請(qǐng)參考TurboCMS.Java模版中的對(duì)象參考建議在所有的TOPX或TOPEx包含文件的模板中均使用GetChannelByID方法返回Channel對(duì)象,而不是使用缺省的Channel對(duì)象(Channel只是返回當(dāng)前頻道對(duì)象)。一段腳本例子:!-%Channel objChannel = System.GetChannel(/教程和文檔/web3d);/或者用下一條語(yǔ)句/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、文章中使用來(lái)源的模板制作文章來(lái)源涉及到TDLSource類(lèi),ThisDocument.DocumentSource方法取出來(lái)的是ArrayList,訪(fǎng)問(wèn)示例如下:文章來(lái)源:a href= title= 6、文章正文顯示編輯真實(shí)姓名的模板制作7、文章中使用Tag的模板制作文章Tag涉及到TDLTag類(lèi),ThisDocument.DocumentTag方法取出來(lái)的是Vector,訪(fǎng)問(wèn)示例如下:文章的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è)計(jì)到ThisWeb2的使用1)輸出Tag:2)相同Tag的文章列表:!-%/文章列表,簡(jiǎn)單列表Vector vc = ThisWeb2.TOC.AllLinks;for(int i=0;ivc.size();i+)Link aLink = (Link)vc.get(i);Response.Output( + aLink.Title + n);%-3)分頁(yè)代碼:!-%/Tag列表分頁(yè) 共 n 頁(yè) 第 n 頁(yè)String pPage, nPage;int cmsPageA = ThisWeb2.TOC.Pages;int cmsTotal = ThisWeb2.TOC.TotalLinks;Vector vlink = ThisWeb2.TOC.AllLinks;Response.Output( 總 + cmsTotal + 篇 );Response.Output( 共 + cmsPageA + 頁(yè) );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) + 頁(yè) );elseResponse.Output( 第 + (i+1) + 頁(yè) );%-9、日列表模板制作頻道的日列表,由發(fā)布服務(wù)每天定時(shí)生成。!-%/頻道日列表 開(kāi)始/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的模板制作(專(zhuān)題部分)一、概述在TurboCMS中,專(zhuān)題是指由編輯創(chuàng)建的,按照專(zhuān)題模板生成的一個(gè)頁(yè)面,及該頁(yè)面下欄目和文章的總稱(chēng)。專(zhuān)題在TurboCMS中,具有多重特征。一方面,專(zhuān)題類(lèi)似于普通的文章,總是歸屬于某個(gè)頻道,具有“標(biāo)題”、“作者”等基本字段,以及可以經(jīng)過(guò)表單定義增加擴(kuò)展字段。這些類(lèi)似于文章的字段,其值在編輯新建專(zhuān)題時(shí)直接輸入到系統(tǒng)中。另一方面,專(zhuān)題又類(lèi)似于一個(gè)頻道,可以有子欄目,子欄目里可以有文章。編輯新建專(zhuān)題時(shí),需要先選擇“專(zhuān)題模板”?!皩?zhuān)題模板”于我們?cè)陬l道中講到的“模板”的概念有所不同。頻道中的模板,包括內(nèi)容頁(yè)模板,列表頁(yè)模板,附帶發(fā)布模板,都只是一個(gè)文件,而“專(zhuān)題模板”則是由專(zhuān)題首頁(yè)模板、子欄目定義、子欄目所使用的內(nèi)容頁(yè)模板及列表頁(yè)模板的一個(gè)總和。專(zhuān)題模板必須由管理員首先在管理后臺(tái)創(chuàng)建。管理員創(chuàng)建專(zhuān)題模板時(shí),需要制作和指定專(zhuān)題首頁(yè)的模板文件,以及定義專(zhuān)題下的子欄目,以及為每一個(gè)子欄目制作內(nèi)容頁(yè)模板和列表頁(yè)模板。一個(gè)站點(diǎn)中可以有多個(gè)專(zhuān)題模板,比如新聞專(zhuān)題模板,娛樂(lè)專(zhuān)題模板。不同的專(zhuān)題模板除了專(zhuān)題首頁(yè)的模板文件不同以外,其所定義的子欄目也不同。編輯在創(chuàng)建一個(gè)具體的專(zhuān)題時(shí),根據(jù)需要,選擇一個(gè)專(zhuān)題模板。一旦選擇了專(zhuān)題模板,那么相應(yīng)的需要錄入什么字段,以及有什么子欄目,就固定下來(lái)了。二、TDL編程根據(jù)上面的介紹,制作專(zhuān)題模板是一系列工作的總和,包括定義專(zhuān)題的表單,制作專(zhuān)題首頁(yè)的模板,定義子欄目,制作子欄目的模板等。定義專(zhuān)題表單與定義頻道的表單類(lèi)似,根據(jù)需要,給專(zhuān)題增加一些字段。專(zhuān)題首頁(yè)的模板制作包括兩方面。一般來(lái)說(shuō),一個(gè)專(zhuān)題首頁(yè)由兩部分構(gòu)成。一部分是輸出專(zhuān)題的一些信息,比如專(zhuān)題的名稱(chēng),專(zhuān)題的介紹等;第二部分是將專(zhuān)題中每個(gè)子欄目里的文章提取若干條來(lái)在專(zhuān)題首頁(yè)上顯示。對(duì)于第一部分,輸出專(zhuān)題的信息,與頻道里的內(nèi)容頁(yè)輸出文章的字段類(lèi)似。所使用的代碼如:其中的ThisSubject 代表當(dāng)前專(zhuān)題,與文章中的ThisDocument代表當(dāng)前文章類(lèi)似。對(duì)于第二部分,子欄目中文章的列表,首先,我們的模板是將用在某一個(gè)特定的“專(zhuān)題模板”里的,因此我們知道該“專(zhuān)題模板”下包括什么子欄目。在代碼中我們通過(guò) ThisSubject的GetSubjectColumn方法來(lái)獲得特定的欄目對(duì)象。代碼例:!-%TDLSubjectColumn acolumn = ThisSubject. GetSubjectColumn(“最新報(bào)道”);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);%-輸出子欄目里的文章與頻道列表頁(yè)里輸出文章列表的代碼類(lèi)似。那是因?yàn)樽訖谀繉?duì)象 SubjectColumn與頻道對(duì)象類(lèi)似,也有TOC屬性。不過(guò)因?yàn)槭窃趯?zhuān)題首頁(yè),我們不希望輸出欄目里的所有文章,因此我們?cè)谘h(huán)條件里加了i10。然后是子欄目里的內(nèi)容頁(yè)模板和列表頁(yè)模板。對(duì)于內(nèi)容頁(yè)模板,與頻道的內(nèi)容頁(yè)一樣,唯一不同的是,為了在當(dāng)前位置輸出文章屬于某個(gè)專(zhuān)題,可以直接使用 ThisSubject對(duì)象。子欄目的列表頁(yè)模版與專(zhuān)題首頁(yè)里一樣,輸出某個(gè)專(zhuān)題子欄目下的所有文章就可以了。如:!-%TDLSubjectColumn acolumn = ThisSubject. GetSubjectColumn(“最新報(bào)道”);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í)我們不限制輸出的條數(shù),就是輸出整個(gè)欄目下的所有文章。專(zhuān)題子欄目與頻道還有一個(gè)重要區(qū)別,那就是專(zhuān)題子欄目的文章列表是不可以分頁(yè)的,因此需要輸出所有文章。也可以在欄目的列表頁(yè)模板中使用ThisSubjectColumn.TOC.AllLinks來(lái)獲取該欄目的所有文章。專(zhuān)題對(duì)象ThisSubject,以及專(zhuān)題欄目對(duì)象 SubjectColumn的具體方法和屬性,請(qǐng)參考TurboCMS.Java模版中的對(duì)象參考。TurboCMS2009的模板制作(期刊部分)一、概述期刊封面頁(yè)目錄頁(yè),每期個(gè)文件xxxxxxxxxxxxxxx內(nèi)容頁(yè)內(nèi)容頁(yè)內(nèi)容頁(yè)內(nèi)容頁(yè)每一個(gè)期刊有一個(gè)唯一的封面頁(yè),是進(jìn)入期刊內(nèi)容的唯一入口。在這個(gè)封面頁(yè)中,建議放置最新一期的封面圖片以及該期中的關(guān)鍵文章。然后放置一個(gè)連接到該期目錄頁(yè)的鏈接。目錄頁(yè)每期一個(gè),文件名為 目錄頁(yè)文件名+IssueNumber.ext,其中后綴名與期刊屬性設(shè)置中“目錄頁(yè)文件”的后綴同。期刊的屬性中“目錄頁(yè)文件”內(nèi)容為最新一期的目錄頁(yè)相同。即是說(shuō),最新一期的目錄頁(yè)既可用目錄頁(yè)文件名+ IssueNumber.ext的方式訪(fǎng)問(wèn),也可以用期刊的目錄頁(yè)訪(fǎng)問(wèn)。目錄頁(yè)中建議放置當(dāng)前期的封面圖片以及該期的所有文章按欄目分開(kāi)的列表。內(nèi)容頁(yè)與以前頻道中的內(nèi)容頁(yè)是一樣的。在所有以上三類(lèi)頁(yè)面中均可以加上一個(gè)過(guò)刊查詢(xún),用一個(gè)下拉列表的方式連接到所有的過(guò)刊。二、TDL編程1、封面頁(yè)模板制作我們知道,在模板中可以使用一些系統(tǒng)提供的對(duì)象來(lái)訪(fǎng)問(wèn)數(shù)據(jù)。在期刊模板中,系統(tǒng)新增加了幾個(gè)對(duì)象,他們分別是“Magazine”、“Issue”,以及通過(guò)這兩個(gè)對(duì)象的屬性集合引出來(lái)的“Column”對(duì)象等。我們將在相關(guān)講述中詳細(xì)介紹每個(gè)對(duì)象可以提供的屬性和方法。在封面頁(yè)中主要訪(fǎng)問(wèn)的對(duì)象為“Magazine”,“Magazine”對(duì)象的屬性有:l Name,期刊的名字l Alias,期刊的別名l CoverPage,封面頁(yè)文件,即當(dāng)前文件的文件名,形為“/Magazines/software/default.htm”l IndexPage,目錄頁(yè)文件,到最新一期的目錄頁(yè)的文件。l CoverPicture,封面圖片,等于最新一期的封面圖片。形如“/UploadFiles/Uploadfile11.jpg”。l CurrentYear,最新一期的年份。如“2002”l CurrentIssue,最新一期的期號(hào),如“23”l CurrentIssueID,最新一期的IssueID。l Issues,一個(gè)集合,對(duì)象Issue的集合,期刊的所有的期號(hào)。l Columns,一個(gè)集合,對(duì)象Column的集合,期刊的所有欄目。其中,屬性Issues返回的是一個(gè)對(duì)象集合,對(duì)象Issue的集合。對(duì)象Issue只有屬性,如下:l public String IssueYear,年號(hào)l public String IssueNumber,期號(hào)l public String TotalIssueNumber,總期號(hào)l public String CoverPicture,封面圖片l public String IndexPage,目錄頁(yè),該期的目錄頁(yè)l public String Description,該期的描述,可以將一些針對(duì)期的信息放在這個(gè)描述中。Columns屬性返回的是一個(gè)Column對(duì)象的集合,對(duì)象Column的屬性有:l public String Name,欄目的名稱(chēng)l public String Alias,欄目的別名l public comTOC TOC,是一個(gè)comTOC對(duì)象,目錄l public String IndexPage,該欄目的目錄頁(yè)。方法:l public Vector Top(int x),返回最新的幾條頭條內(nèi)容,是一個(gè)Document對(duì)象的集合。l public Vector ImageNews(int x),返回最新的幾條圖片新聞的內(nèi)容,是一個(gè)Document對(duì)象的集合。l public String GetColumnIssueName(int issueid),返回當(dāng)前欄目指定某一期的列表頁(yè)地址。在封面頁(yè)模板制作中,最主要的任務(wù)即是輸出當(dāng)前期的封面圖片等,其腳本如下:當(dāng)前期刊的期號(hào)ID期刊封面頁(yè)模板實(shí)例:期刊名稱(chēng):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、期刊目錄頁(yè)模板制作期刊目錄頁(yè)的主要任務(wù)是按欄目將當(dāng)前期內(nèi)的所有文章的標(biāo)題列出,并建立相應(yīng)的連接。有可能需要做一個(gè)下拉列表以供過(guò)刊查詢(xún)。期刊目錄頁(yè)模板需要訪(fǎng)問(wèn)的對(duì)象包括M
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025農(nóng)村征地合同協(xié)議書(shū)
- 2025農(nóng)村土地永久轉(zhuǎn)讓及生態(tài)保護(hù)合同全新制定
- 2025年度公司特色花卉組合采購(gòu)服務(wù)協(xié)議3篇
- 二零二五年度地鐵車(chē)站清潔與安全服務(wù)合同3篇
- 二零二五年度物流運(yùn)輸勞動(dòng)合同勞務(wù)合同3篇
- 二零二五年度私人住宅泳池建造合同3篇
- 2025年度全款購(gòu)車(chē)汽車(chē)用品贈(zèng)送合同范本3篇
- 二零二五年度高校畢業(yè)生就業(yè)見(jiàn)習(xí)計(jì)劃合作協(xié)議3篇
- 2025年度環(huán)保設(shè)備銷(xiāo)售加盟合同協(xié)議
- 二零二五年度電力設(shè)施檢修與維修合同3篇
- 【新課標(biāo)】小學(xué)道德與法治課程標(biāo)準(zhǔn)考試試卷
- 設(shè)備維修轉(zhuǎn)正述職報(bào)告
- 市技能大師工作室建設(shè)方案
- 游戲發(fā)行計(jì)劃書(shū)
- 2023通信中級(jí)傳輸與接入(有線(xiàn))實(shí)務(wù)知識(shí)點(diǎn)大匯總
- 半導(dǎo)體自動(dòng)測(cè)試設(shè)備(ATE)全球市場(chǎng)、份額、市場(chǎng)規(guī)模、趨勢(shì)、行業(yè)分析報(bào)告2024-2030年
- 領(lǐng)導(dǎo)干部必須堅(jiān)守廉潔底線(xiàn)課件
- 礦山三合一報(bào)告
- DRG付費(fèi)常見(jiàn)九大問(wèn)題答疑
- 廣東省汕尾市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測(cè)化學(xué)試卷(含答案解析)
- 信訪(fǎng)業(yè)務(wù)培訓(xùn)班課件
評(píng)論
0/150
提交評(píng)論