這裡將會說明維基的範本系統(Wiki v2 template system),它讓您能夠依您喜好調整您的 JSPWiki 系統,此外在升級系統時,您也不需要擔心會遺失您的改變。

假如您想要試試其他人已經建立好的範本,請參考 JSPWiki:ContributedTemplates。假如您想要知道一些人對於網站觀感的想法,請參考我們的 JSPWiki:WantedTemplates


簡介#

JSPWiki 系統在二版釋出後,支援了範本(template)和面版(skin)。它們代表的是兩個不一樣的概念:

  • 範本是由網站管理者來設定。它們的核心是一堆 HTMLJSP 檔案,其定義了您網站的外觀。所有的範本都會存放於 $JSPWIKI_INSTALL_HOME$/templates/<template name> 目錄內。
  • 樣式(style)是將基本範本修改過後的版本。每一個範本可能會有一個或多個樣式,這些樣式可以讓使用者選擇套用。樣式基本上是基於樣式表來做開發,然而有些範本可能並不支援任何的樣式。

JSPWiki 目前在發行時,伴隨著一個範本,稱為“default”。當系統管理者沒有定義任何範本時,會自動啟用該範本。但是,很不幸的是,預設的範本只有一種“樣式”。

範本#

一個很簡單的範例#

下面這個例子讓您能建立一個最簡單的範本。

首先,建立您自己的範本目錄

到您安裝 JSPWiki 的目錄內,再進入“templates”目錄後,建立一個新的子目錄,我們這裡把它取名為“example”。

建立您專屬的檢視範本(ViewTemplate)

將下面的範例存放到“example”目錄內,並且取名為“ViewTemplate.jsp”:

<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>

<h1><wiki:PageName/></h1>

<wiki:Content/>

修改 jspwiki.properties

搜尋您系統內的 jspwiki.properties 檔(通常位於您安裝的 JSPWiki 資料夾內的 WEB-INF 子目錄)。將它在編輯器內開啟,並且找到下行:

jspwiki.templateDir=default
將它改為
jspwiki.templateDir=example

重新啟動 JSPWiki

重新啟動 JSPWiki(比如,在 Tomcat 中,您可以使用管理者介面(manager UI)來重新啟動,使得您不需要重新啟動整個 Java Virtual Machine),或是您也可以重新啟動整個容器(container)。

“範本?”它是怎麼運作的?#

主要的 JSP 頁面:Wiki.jsp、Edit.jsp、Preview.jsp、PageInfo.jsp 等#

JSPWiki 有一些主要的 JSP 頁面。這些頁面會作為“控制器(controler)”(基本上,它們會控制處理來自使用者的請求)。它們協助您儲存您的頁面,也保證沒有同時修改頁面的情況發生等等。若是需要,您也可以修改這些檔案;它們都以 JSP 網頁的方式來撰寫,因此您可以很簡單的修改它們。但是,一旦您升級到新的 JSPWiki 版本,您也必需再一次的修改這些頁面。

這些主要的 JSP 頁面會知道要使用那個範本,並且會包含那些合適的範本檔(這些檔案決定了外觀(View)看起來的樣子)。

有兩個基本的範本:ViewTemplate 和 EditTemplate。ViewTemplate 會接收從任何一個頁面傳來的跟頁面改變無關的請求;EditTemplate 則處理需要改變頁面內容的請求。

任何一種範本,都應該至少提供這兩個檔案的其中一個,否則該範本將沒有任何用處。

關於‘預設’範本#

假若 JSPWiki 無法找到任何範本檔,其會使用“預設”範本(位於 default 目錄內)。您可以直接複製預設範本的檔案到您自己專屬的範本中,並修改它。您也可以保留 default 目錄內 ViewTemplate 和 EditTemplate,而去修改其它以 Content 做檔名結尾的檔案。

要注意的是,預設範本並沒有包含 CSS 檔。您必需手動的指定它們的位置。預設範本內的“commonheader.jsp”檔,會包含所有您位於本地端目錄內的任何 CSS 檔。

檢視頁面:ViewTemplate.jsp 和 EditTemplate.jsp#

基本上,您只需要修改下面兩個檔案,就可以改變您的維基頁面的外觀:

ViewTemplate.jsp 接收從 Wiki.jsp、Preview.jsp、PageInfo.jsp 等等來的請求。您可以建立一個原本檔案的副本,然後修改這個副本來改變使用者在瀏覽時您的維基網站時的外觀。

EditTemplate.jsp 接收所有來自 Edit.jsp 的請求。這個檔案的內容,在使用者修改頁面時,將會顯現。

<wiki:Content> 標籤和請求的內容(request context)#

嗯,到目前為止,似乎一切順利。但是我們還有一個問題:顯示頁面資訊(Page Info)跟顯示表現的文字(rendered text)是完全不同的,是嗎?其中顯示頁面資訊的網頁中有大量的列表和項目,而另一個則擁有精美的 HTML 版面。但是事實上,它們都是由 ViewTemplate.jsp 來處理!

而這照成了困擾:預設的範本依據頁面請求內容(Page Request Context)來包含不同的 內容頁面(content page)),來處理前述的顯示。藉由 Page Request Context 基本上能夠告訴您,使用者目前是在要求取得頁面的資訊,或是頁面的比較等等諸如此類的請求。每一種內容都會有相對應的字串表示,比如檢視(view)頁面對應的字串為“view”。您可以使用 CheckRequestContextTag 來檢視使用者的請求內容,藉此依依據使用者的請求來改變 JSPWiki 系統的行為;比如顯示不同的文字。

另外,有一個名為 ContentTag 的 JSP 標籤,它能替您完成大部分您可能不想去做的動作。只要將這個標籤放置在您想要的位置,它將會包含適當的內容頁面。

比如,“view”內容表示名為“PageContent.jsp”會被包含進來。您也可以藉由使用 ContentTag 的“view”參數來改變這個行為。基本上這表示,“假如要求的內容為‘view’,也就是說有某個使用者想要觀看呈現好的 HTML 內容,那麼包含一個名為‘PageContent.jsp’的 JSP 頁面”。基本的 PageContent.jsp 的內容如下:

      <wiki:InsertPage />

      <wiki:NoSuchPage>
           該頁面不存在。您要不要<wiki:EditLink>建立它</wiki:EditLink>呢?
      </wiki:NoSuchPage>

上面的例子:“以 HTML 的方式插入頁面內容。假如不存在該頁面,那麼顯示一段簡短的訊息給使用者,請求他改善之。”

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-3) was last changed on 06-Jun-2007 02:04 by MurrayAltheim