這一章的份量相當之多,前半段是比較抽象的論述以及注意事項,著重在觀念的釐清,接著是把這一章範圍內的使用者介面快速描述一遍;由於本章涉及大量的 HTML 碼,所以將不會以逐步驟抓圖的方式解說,否則將把篇幅拖得過於冗長。而後半段則主要是摘錄改寫自官方文件裡的資料。雖然本章對於初學乍練的讀者來說會比較難以吸收,但是對於稍微有些基礎的讀者來說,卻應該是相當豐富而實用的資料。
Movable Type 的模版能力恐怕正是其強大之處了。這套系統使得網誌的「內容」可以跟「形式」抽離;當妳在修改版面安排(形式)的時候,完全不會影響到內容;反之亦然。然而在 Movable Type 的預設模版裡,又更進一步地使用了 CSS ,把這個「形式」又拆解成「順序結構」跟「效果」;前者是 HTML 或 XHTML 的部分,後者則是 CSS 的部分。藉由這樣的拆解,妳可以重新安置頁面中的各個元件,而不改變每個元件的呈現效果;也可以重新設計每個元件的呈現效果,而不會改變頁面元件的安置。
像是這樣的設計理念,有一個說法稱做「模組化」,強調各自獨立的合作關係,不會一個地方爛掉就全部爛光光。而這也是妳在規劃模版的時候所該記在心裡面的。
以下我們要討論的事情大概都發生在模版編輯畫面
裡,任何時候妳都可以如圖一按下左方工具列上的「模版」按鈕,就可以開始把玩模版了。
接下來讓我們一一仔細察看:
在列出模版
畫面的第一區裡,列出的是索引模版。妳可以點擊模版名稱
欄位裡的任何一個,就能夠加以編輯該模版,或者調整跟該模版有關的設定;另外在這個畫面裡還會標示出各個模版所會輸出的檔案名稱,也註明它們會不會在重建索引模版的時候一併被自動重建。當然妳還可以利用刪除
核選框以及刪除
按鈕來刪除不再使用的模版,或者是點擊「建立新的索引模版
」鏈結來新增新的索引模版。
當妳新增或編輯索引模版的時候,妳首先就能夠修改這個模版的模版名稱
,這個名稱就祇是用來顯示用的,所以妳甚至可以把好幾個模版都取做相同的名字 ─ 祇要妳自己不會弄混就好。
除此之外妳也可以修改輸出檔案
的檔名,這個設定就很重要了;由索引模版所產生出來的檔案會被放在本機站台路徑
底下,檔案名稱就是妳在此所設定的名稱,其他讀者則可以由站台網址
來讀取這個檔案。一旦妳修改了這一欄的設定值,原先的檔案並不會消失,但是更新過後的檔案卻會使用妳新設定的名稱;這意味著妳得記得一併修改相關的其他檔案或模版,讀者們(或搜尋引擎)纔不會祇看到老舊不更新的檔案。
接下來還有一個「重建索引模版時自動重建此模版
」的核選框,預設是核選著的,表示每當妳的索引模版需要更新(像是新增了文章、或儲存了文章修改)時,這個模版也會被一併重建成檔案。如果妳的模版並不會跟文章扯上關係,例如祇是單純的樣式表,那麼妳大可取消核選這個核選框,如此一來就可以減少系統每次需要重建的檔案數量,而降低系統負擔。
「將此模版連結到檔案
」是一個進階的功能,讓妳把這個模版內容實際存放到伺服器上的某個檔案;藉由這個功能,妳就能夠讓好幾份網誌使用完全相同的模版,而且它們也都會同步更新。不過這個功能也很有可能相當具有危險性 ─ 因為妳可以以此開啟系統裡的某個特定檔案,並且加以修改覆寫。如果妳沒有這麼複雜的需求,也不懂系統上各個目錄裡的東西的話,建議妳還是空著別動。
最大的那一個欄位就是實際的模版內容了。妳可以在此任意地編輯修改模版內容。一旦妳修改了模版內容或者是上述的其他欄位後,別忘了還要按下「儲存
」按鈕,纔會把妳所做的變更儲存回資料庫;接著妳還得按下「重建
」按鈕,纔能以更新過的模版內容,製作新的靜態頁面檔案。
Movable Type 預設的主索引模版裡,除了提供幾個不同版本及功能的 RSS 模版之外,還有兩個可以用 CSS 調整版面的 HTML/XHTML 模版,分別是主索引
模版以及總彙整索引
模版。當然還少不了那個用來調整版面的 CSS 模版:樣式表
模版。
首先我們要來講講這個 HTML/XHTML 的部分。雖然說,有了 CSS 之力,妳可以隨意地安置各個元件,幾乎可以不要考慮他們的先後關聯,都有辦法做出整齊漂亮的版面;但是在這裡仍舊要強調,邏輯清晰的 HTML/XHTML 纔是建構優良頁面的基礎。
為什麼呢?有幾個主要原因:
切記,編撰 HTML/XHTML 模版的時候,妳應當揚棄以往使用表格來排版的方式,而把排版的工作留給 CSS 來處理。表格應剛祇在真的是「表格」的情況下纔使用。
撰寫 HTML/XHTML 模版的時候,妳可能會需要具備基本的 HTML/XHTML 能力,另外可以參考 Movable Type 使用手冊:模版標籤來插入其他 MT 標籤;如果妳之前也有使用過其他的網誌系統或者出版管理系統,而且也用那些系統製作過模版的話,妳也許會想參考一下 Movable Type 模版;這份文件裡有對於不同系統間模版差異的解釋,也有著簡單的模版作用機制說明,對於編撰模版來說,一定有所幫助。
如果想要做出比好還要好的 HTML/XHTML 模版,也應該留意 Accessibility(親和力/無障礙) 的議題。妳可以看一下 W3C Web Accessibility Initiative 的內容(有人正在把它翻譯成中文版);另外也有幾份不錯而簡短的文件該讀一讀,像是我跟 hlb 翻譯完的 Dive Into Accessibility (深入親和力)就是一本分量輕薄的小書,可以幫助妳在三十天內讓 Movalbe Type 做出來的網頁更棒。
當妳寫出 HTML/XHTML 模版後,也可以用 W3C MarkUp Validation Service 來驗證看看是不是有語法上的瑕疵;通常要修改這些瑕疵都會耗上大量的時間精力,但是卻可以幫助妳把 HTML/XHTML 寫得更合邏輯;事實上,這也可以鍛鍊妳的 HTML/XHTML 功力。
CSS 是另外一門大學問;舉凡字形變化、邊框留白、顏色圖片乃至於游標音效,都幾乎可以透過 CSS 來達成。除此之外,可重複利用也是另一個 CSS 的特色;祇要妳規劃得當,就可以讓同一類的 HTML/XHTML 元件去取用相同的屬性變化,毫不囉唆。
網路上可以找到的中文 CSS 相關文鍵不特別多,不過妳可以從 hlb 翻譯的CSS實務排版技巧、秘訣與技術開始著手。大致上當妳一開始祇能夠修改既有的 CSS 檔案時,妳可以這麼做:
另外一個 CSS 的重點是在於欄框的階層。 CSS 中任何元件預設都是「佔滿可用空間」的,如果妳要更動佔用空間的尺寸、位置的話,就得留意這個「頁(page) ─ 格(box) ─ 欄(margin) ─ 框(border) ─ 留白(padding) ─ 內容物」的先後關係:
通常當妳很高興地安排完一整套的 CSS 欄框排版之後,很有可能出乎意料(或意料之中?)地發現,瀏覽器所畫出來的樣子跟妳原先所設想的完全不同!所以在嘗試及除錯的階段,妳可以先暫時地使用粗而明顯的邊框,來觀察看看到底瀏覽器把妳的欄框放到哪裡去了。以下是一個除錯用邊框的範例:
border: red solid 10px;
妳可以等位置擺對了之後,再把這個邊框改回妳想要的樣子(或者把它去掉,如果妳不想要有邊框的話)。
大致說來,妳可以任意地把玩 CSS 的各種屬性,無須擔心會損毀妳的內容跟架構。所以,盡情享樂吧!
當妳寫出 CSS 模版後,也可以用 W3C CSS Validation Service 來驗證看看是不是有語法上的瑕疵。好消息是,這應該會比 HTML/XHTML 的驗證容易通過得多了。
另外還有一個壞消息:目前號稱市場佔有率最高的 IE 實際上對於 W3C CSS 的實做程度卻最低;所以妳可能祇需要花 20% 的時間就可以做出漂亮的版面,卻要再花上 80% 的時間來處理 IE 的相容性。事情當然還可以更糟,幾個月前微軟的 IE 團隊表示,三年內將不會有任何 IE 的更新檔出現,因此這些問題在接下來的幾年內也都不會被解決掉。
額外給華文世界使用者的資訊: KKMan 的結果會更糟。
至於 RDF 的用途是用來描述妳所能夠提供給其他人的資訊有哪些用的。透過 RDF 的架構,妳纔可以使用 RSS 來跟其他站台串聯彙整。
如果妳對此毫無理解,那倒也沒有關係;因為 MT 內附的 RDF 模版其實已足堪用了。妳唯一應當注意的事情是,確定裡面關於內容語言的描述是否正確。如果妳的網誌內容是繁體中文,請確定妳用了 <dc:language>zh-tw</dc:language>(RSS 1.0) 或 <language>zh-tw</language>(RSS 0.91)。
至於更深入的細節,則建議可以參考一下 Resource Description Framework (RDF) / W3C Semantic Web Activity 以及 RDF Site Summary (RSS) 1.0
實際上 RDF 的門派版本相當分歧雜亂,真的打算開始摸索的朋友恐怕得先有點心理準備纔行。
在列出模版
畫面的第二區裡,列出的是彙整相關模版。妳可以點擊模版名稱
欄位裡的任何一個,就能夠加以編輯該模版;妳也可以利用刪除
核選框以及刪除
按鈕來刪除不再使用的模版,或者是點擊「建立新的彙整模版
」鏈結來新增新的彙整相關模版。
當妳新增或編輯彙整相關模版的時候,妳首先就能夠修改這個模版的模版名稱
,這個名稱就祇是用來顯示用的,所以妳大可把好幾個模版都取做相同的名字 ─ 祇要妳自己不會弄混就好。
跟索引模版不同的地方在於妳並不能修改輸出檔案
的檔名,各種彙整檔案的檔名是在網誌組態
的畫面裡設定的,請參考第八章的介紹。
「將此模版連結到檔案
」是一個進階的功能,讓妳把這個模版內容實際存放到伺服器上的某個檔案;藉由這個功能,妳就能夠讓好幾份網誌使用完全相同的模版,而且它們也都會同步更新。不過這個功能也很有可能相當具有危險性 ─ 因為妳可以以此開啟系統裡的某個特定檔案,並且加以修改覆寫。如果妳沒有這麼複雜的需求,也不懂系統上各個目錄裡的東西的話,建議妳還是空著別動。
最大的那一個欄位就是實際的模版內容了。妳可以在此任意地編輯修改模版內容。一旦妳修改了模版內容或者是上述的其他欄位後,別忘了還要按下「儲存
」按鈕,纔會把妳所做的變更儲存回資料庫。
Movable Type 一開始就提供的三個彙整相關模版分別是分類彙整
模版、單篇彙整
模版和按時彙整
模版。顧名思義,前兩個模版分別是拿來給分類彙整以及單篇彙整用的,而第三個模版則可以適用於逐月彙整、逐週彙整以及逐日彙整。
在列出模版
畫面的第三區裡,列出的是其他模版。妳可以按下各個模版前面的編輯
按鈕,來加以編輯該模版;這一區的模版都有特定的功能,因此妳既不能刪除任何一個,也無法新增這類的模版。
這一類的模版都是固定的,因此妳也不能夠更改各個模版的名稱 ─ 它們從存在之時就被賦予特殊的用途了,因此妳不能隨意地修改。
「將此模版連結到檔案
」是一個進階的功能,讓妳把這個模版內容實際存放到伺服器上的某個檔案;藉由這個功能,妳就能夠讓好幾份網誌使用完全相同的模版,而且它們也都會同步更新。不過這個功能也很有可能相當具有危險性 ─ 因為妳可以以此開啟系統裡的某個特定檔案,並且加以修改覆寫。如果妳沒有這麼複雜的需求,也不懂系統上各個目錄裡的東西的話,建議妳還是空著別動。
最大的那一個欄位就是實際的模版內容了。妳可以在此任意地編輯修改模版內容。一旦妳修改了模版內容或者是上述的其他欄位後,別忘了還要按下「儲存
」按鈕,纔會把妳所做的變更儲存回資料庫。
這裡總共有五個模版。迴響清單模版
是用來製作動態迴響清單的模版;迴響預覽模版
所製作的動態頁面,也就是讀者預覽她們即將發表的迴響時,所看到的頁面;迴響出錯模版
則會決定當讀者發表評論出錯的時候,要看到的錯誤訊息頁面的樣子;引用清單模版
則是用來製作列出某篇文章的引用清單的動態頁面的模版;至於彈出已上傳圖片模版則是搭配上傳圖片並做成彈出式圖片的功能的模版。
在列出模版
畫面的最後一區裡,列出的是模版模組。妳可以點擊模版名稱
欄位裡的任何一個,就能夠加以編輯該模版;妳也可以利用刪除
核選框以及刪除
按鈕來刪除不再使用的模版,或者是點擊「建立新的模版模組
」鏈結來新增新的模版模組。
當妳新增或編輯模版模組的時候,妳也能夠修改這個模版的模版名稱
,這個名稱卻不祇是用來顯示用而已,它們都會被拿來用於 <MTInclude>
標籤的 module
屬性,所以妳最好乖乖祇使用英文字母跟數字來當作模版名稱,而且連特殊符號也避免使用會比較好。當然名稱也就不能重複使用了。
「將此模版連結到檔案
」是一個進階的功能,讓妳把這個模版內容實際存放到伺服器上的某個檔案;藉由這個功能,妳就能夠讓好幾份網誌使用完全相同的模版,而且它們也都會同步更新。不過這個功能也很有可能相當具有危險性 ─ 因為妳可以以此開啟系統裡的某個特定檔案,並且加以修改覆寫。如果妳沒有這麼複雜的需求,也不懂系統上各個目錄裡的東西的話,建議妳還是空著別動。
最大的那一個欄位就是實際的模版內容了。妳可以在此任意地編輯修改模版內容。一旦妳修改了模版內容或者是上述的其他欄位後,別忘了還要按下「儲存
」按鈕,纔會把妳所做的變更儲存回資料庫。
一開始 Movable Type 並沒有提供任何預先建立好的模版模組的,這是因為 Movable Type 希望一開始不要把事情弄得太複雜 ─ 可不是每個人都能夠無痛接受「模版」的觀念的。但是隨著妳的模版越寫越複雜,妳會開始發現有一些重複的片段反覆出現在多個模版裡,這時候就是「模版模組」派上用場的時候了。
妳可以把這些完全相同的片段抽出來,放到模版模組裡,再把 <MTInclude>
標籤放進原來這些片段會出現的地方。從此之後妳祇要修改這個模版模組,再重建所有的檔案,就可以一次更新眾多模版以及跟它們有關的靜態頁面檔案。
這麼一來,無論是要維護更新模版或是挪動各個組件在某個模版裡的順序,都將無比容易。
搜尋模版跟 Movable Type 裡的其他模版管理起來並不同,因為他們並非依網誌為準的,所以放在編輯選單的『模版』區段中反而沒有意義。搜尋模版實際上是一些放在妳的 search_templates/ 目錄中的檔案;這個目錄應該會跟 mt.cgi 位於同一個位置。
對於 Windows 的使用者來說,這些搜尋模版
應該位於像是 C:\Program Files\OurInternet\Movable Type\mt\search_templates\
的資料夾裡面;對於 UN*X 的使用者來說,則可能位於像是 /usr/local/www/cgi-bin/mt/search_templates/
的路徑裡。
在妳的搜尋模版中,妳可以用一些特殊的模版標籤集合來顯示搜尋結果。不過妳幾乎也可以用其他的 Movable Type 標籤;不過當然妳還是得要尊重整體的脈絡。除此之外,因為妳的搜尋結果頁面是動態隨著每一次有人搜尋妳的站台時所產生的,所以妳應該要避免使用那些會消耗伺服器大量資源來重建的標籤(像是 <MTArchiveList>
或 <MTCalendar>
)。
妳也可以在妳的搜尋模版中使用 <MTInclude>
標籤,來包含某個搜尋模組或外部檔案。妳甚至可以把某個網誌當作是前後文(因為模版模組會依各個網誌而存),然後在 <MTSearchResults>
容器之外這麼用這個標籤。不過我們仍然要警告妳不要輕易使用這種方法,尤其是妳有多重網誌的時候更是如此。例如說,如果妳在某個模版中用了
<$MTInclude module="Header"$>
那麼系統就會知道它所要找的模組名為 Header
。如果搜尋結果是找到了,會很簡單地把網誌按照字母順序列出;反之要是沒有找到, Movable Type 就會試著從妳的資料庫裡載入某個網誌(被選擇的網誌則沒有定義)。
在 Movable Type 的預設模版中包含有一個簡單的搜尋表單來搜尋妳的站台,它看起來像這樣:
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>"> <label for="search" accesskey="4">搜尋本站:</label><br /> <input id="search" name="search" size="20" /><br /> <input type="submit" value="搜尋" /> </form>
至於顯示所有選項的搜尋表單,看起來可能會像這個樣子:
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>"> <input size="30" name="search" value="<$MTSearchString$>" /> <input type="submit" value="Search" /><br /> <input type="checkbox" name="CaseSearch" /> 大小寫吻合 <input type="checkbox" name="RegexSearch" /> 使用正規表示式<br /> <b>搜尋範圍:</b> <input type="radio" name="SearchElement" value="entries" /> 祇有文章項目 <input type="radio" name="SearchElement" value="comments" /> 祇有評論 <input type="radio" name="SearchElement" value="both" /> 文章項目和評論 <br /> <b>排序欄位:</b> <select name="SearchSortBy"> <option value="created_on">發表日期</option> <option value="title">標題</option> </select><br /> <b>拍序方式:</b> <select name="ResultDisplay"> <option value="ascend">遞增</option> <option value="descend">遞減</option> </select><br /> <b>排除下列網誌:</b> <MTBlogs> <input type="checkbox" name="ExcludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br /> <b>從下列時間範圍內搜尋文章項目:</b> <select name="SearchCutoff"> <option value="9999999">從頭開始</option> <option value="7">從一週前開始</option> <option value="14">從兩週前開始</option> <option value="30">從一個月前開始</option> <option value="60">從兩個月前開始</option> <option value="90">從三個月前開始</option> <option value="365">從一年前開始</option> </select><br /> <b>每份網誌的搜尋結果上限:</b> <select name="MaxResults"> <option value="5">5</option> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> <option value="9999999">無上限</option> </select> </form>
這個搜尋表單就可以提供使用者更多改變搜尋參數的控制變項,讓她們得以指定像是大小寫吻合的屬性,或者是以正規表示式來進行搜尋,而非僅祇用布林字串查詢。搜尋也可以被限定在僅祇有項目或評論內(也可以兩者均是),請注意,評論搜尋會比文章項目搜尋花去更多的時間和資源。
上面的表單同時也讓使用者在搜尋時可以排除特定的網誌,對於那些祇想要搜尋某幾個網誌的讀者來說會很好用。另一個替換排除網誌的作法像這樣:
<b>包含下列網誌:</b> <MTBlogs> <input type="checkbox" name="IncludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br />
基本上這就是跟排除網誌完全相反的作法,不過妳當然有可能因為任何理由而改採這一種作法。例如說,這樣的作法就可以讓妳祇搜尋特定的網誌,而不需要列出一堆要排除掉的網誌。妳祇需要把這一段加進表單裡:
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
<$MTBlogID$>
總是對應到現用的網誌,所以這個搜尋祇會被限制在目前被瀏覽的網誌裡。
上面的範例是一個直接搜尋的例子,完整的新評論搜尋表單看起來應該像這樣:
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>"> <input type="hidden" name="Type" value="newcomments" /> <b>排除下列網誌:</b> <MTBlogs> <input type="checkbox" name="ExcludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br /> <b>從下列時間範圍內搜尋文章項目:</b> <select name="CommentSearchCutoff"> <option value="9999999">從頭開始</option> <option value="7">從一週前開始</option> <option value="14">從兩週前開始</option> <option value="30">從一個月前開始</option> <option value="60">從兩個月前開始</option> <option value="90">從三個月前開始</option> <option value="365">從一年前開始</option> </select><br /> <b>文章項目搜尋結果上限:</b> <select name="MaxResults"> <option value="5">5</option> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> <option value="9999999">無上限</option> </select><br /> <input type="submit" value="尋找新迴響" /> </form>
如果妳準備了多個不同的搜尋模版,那麼首先妳得用任何文字編輯器開啟妳的 mt.cfg 檔案,然後用 AltTemplate 指令來組態替換模版。例如說,如果妳有兩份網誌( Work
和 Play
),而且妳想要讓妳的網誌有自己的模版,妳可能會加上這些東西:
AltTemplate work work.tmpl AltTemplate play play.tmpl
接下來妳還得修改既有網誌的模版,讓它們在建造搜尋頁面的時候也使用特定模版;妳可以用一個隱藏的表單輸入。例如說妳就可以把下列的搜尋表單加入妳的 Work
網誌:
<input type="hidden" name="Template" value="work" />
注意:如果妳祇想要把搜尋範圍限定在祇有一個網誌內,妳也許也會想要在表單裡加上:
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
同樣地,別忘了在妳的搜尋模版
裡也應該做類似的調整,否則當使用著接下去搜尋的時候,就會發現搜尋結果頁面的樣子又變了!
以下我們將先為各位概略描述用於 Movable Type 的模版標籤。
在 Movable Type 的模版標籤背後,有兩個主要的概念:
祇要妳掌握住這兩個概念,所有的標籤對妳來說就都不是難題了。
Movable Type 的模版標籤可以分為兩類 ─ 容器和變數:
有些 MT 標籤是『容器』標籤,裡面可能裝有被稱為子模版的東西;其實就是一些文字片段和 MT 標籤,然後被包在另外兩個 MT 標籤:容器的開頭和容器的結尾之間。舉例來說,如果有個叫做 <MTFoo>
的標籤,那麼妳也許會在妳的模版裡看到下列的組成元件:
<MTFoo> Foo bar </MTFoo>
這個容器的開頭標籤和結尾標籤看起來都很像標準的 HTML 標籤。
容器標籤可能代表著一份清單或者是一種條件。
如果容器代表著一份清單 ─ 例如像是 <MTEntries>
標籤 ─ 那麼容器內的子模版將會套用於清單上的每一項。舉例來說,如果妳用了一個 <MTEntries>
標籤,那麼在 <MTEntries> 標籤和 </MTEntries> 標籤間的組成元件就會套用在清單上的每一則文章項目。
如果容器代表著一種條件 ─ 例如像是 <MTEntryIfExtended>
標籤 ─ 那麼開頭標籤和結尾標籤間的組成元件就祇有當條件吻合時纔會顯示。舉例來說,在 <MTEntryIfExtended>
的情況下,條件考驗著是否文章項目有延伸的部分(『更多文字』)。
所有的非容器標籤通通都是單純的變數替換標籤。它們其實是資訊動態片段的位置保留器。舉例來說, <$MTEntryTitle$>
標籤就會被文章項目的標題代換掉。
所有的 Movable Type 標籤都被包在小於和大於符號之間,就跟 HTML 標籤一樣。妳可以選擇在這些標誌裡插入 $
,就像這樣:
<$MTEntryBody$>
透過這個技巧,妳就能夠迅速地判斷某個標籤到底是 HTML 標籤還是 Movable Type 標籤。
這個 $
是選用性的;慣例上所有的預設模版和文件裡都會把變數標籤加上 $
,但是並不會加進容器標籤裡。一部份的原因是因為妳不該在容器標籤的結尾標籤裡用這個 $
,否則系統就會找不到結尾標籤。
有些 Movable Type 標籤會透過屬性來修改他們的預設作用。標籤屬性的作用就跟 HTML 標籤的屬性很像:他們是一連串的 name="value"
配對,以空白隔開。舉例來說:
<MTEntries author="Foo" category="Bar">
屬性的值必須被包在引號中;否則就無法被正確地解讀。當妳在標籤中加入 $
時,必須把這個字符放在標籤的開始之後、結束之前;然後當妳要在這樣的標籤中加入標籤屬性時,妳得把這些屬性放在標籤結尾的 $
字符之前。像是:
<$MTEntryDate format="%B %e, %Y"$>
大部分的 Movable Type 標籤都是仰賴情境的,這表示這些標籤祇應該在適當的情境中被使用。
情境通常都是由附近的模版或者是附近的容器標籤所決定的:舉例來說,模版組成元件若被放在 <MTEntries>
標籤裡、在單篇
彙整頁面裡、在迴響清單
模版裡或者在迴響預覽
模版裡的時候,就是在文章項目情境裡。因為這樣,所以在這些情境中使用 <$MTEntryTitle$>
標籤或 <MTComments>
容器時纔有意義。
以下我們將分類列出所有能用於 Movable Type 模版裡的標籤:
<$MTBlog*$>
標籤。彙整網址
,也就是會顯示在網誌組態畫面上的那一個。站台網址
(在網誌組態畫面裡的那一個)是 http://www.your-site.com/blog/ ,那麼主機名稱部分就會是 www.your-site.com
。+|-hh:mm
的格式。例如說,領先 UTC 4
小時的時區,就會被顯示成 +04:00
。N
天的文章項目,這裡的 N
就是妳在這個網誌的組態中所設定的天數。當妳要改變這個作用的時候,妳可以加上下列的屬性:N
篇文章項目;這裡的 N
是某個大於 0 的數字。lastn
(如前述)一起用的時候,就先從頭數最新的 M
篇文章項目,然後纔顯示接在之後的 N
篇文章。舉個例子來說,如果妳用了下列的標籤:<MTEntries lastn="5" offset="5"> ... </MTEntries>那麼就會顯示第 6 到第 10 篇文章項目。
lastn
一起用的時候纔有效。類別名稱
這個類別中的所有文章。請注意這很有可能會是一長串文章,所以妳應該會想要再加上 lastn
來限定顯示文章的篇數。類別名稱
也可以包含 AND
和 OR
這兩個布林邏輯算符。但是請注意,妳祇能用其中的一個;也就是說,妳沒辦法用 Foo AND Bar OR Baz
─ 這是行不通的!妳祇能用 Foo AND Bar AND ...
或者 Foo OR Bar OR ...
。Foo
和 Bar
這兩個類別的文章項目,妳可以用:<MTEntries category="Foo AND Bar"> ... </MTEntries>
作者姓名
顯示所有的文章。請注意這很有可能會是一長串文章,所以妳應該會想要再加上 lastn
來限定顯示文章的篇數。N
天之內的文章。N
篇有人發表評論的文章項目。每一則文章項目都祇會出現一次而已。所以如果文章甲有一篇評論,然後文章乙有一篇評論,接著又有人對文章甲發表評論,結果最後祇會顯示兩則文章項目:文章甲,然後顯示的是文章乙。<MTEntries>
標籤所要採用的排序方法。這裡的設定將會覆寫掉妳在網誌組態的文章項目排序的全域設定。有效的值分別是 ascend
和 descend
。ascend
和 descend
並不祇是依時間先後排序;事實上這個屬性還可以跟稍後會提到的 sort_by
一起用來排序。舉例來說,妳可以把文章項目標題排成從 A 到 Z (ascend
) 或者是從 Z 到 A (descend
) 。descend
。欄位名稱
值包含有 title
、 status
、 modified_on
、 author_id
或 excerpt
。<MTCategories> <$MTCategoryLabel$><br /> <MTEntries sort_by="title" sort_order="descend"> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br /> </MTEntries><br /> </MTCategories>
lastn
、 category
和 author
一起混用來篩選文章項目列示(其實還有 days
這個被此標籤自己用掉的屬性;然而祇要妳用了其他屬性,那麼這個屬性就會被覆寫掉)。舉例來說,妳可以把 lastn
和 category
一起用在 MTEntries
裡,其結果就如妳所預期的一般:顯示該類別理最新得 N 則文章項目。如果妳想要再用作者姓名加以篩選,妳也可以把 lastn
、 category
和 author
三個都用上:<MTEntries category="Fun" author="Me" lastn="10"> ... </MTEntries>
Fun
這個分類中,作者是 Me
的最新 10 則文章項目。
草稿
或者是定稿
)。在大多數的情況下,這個標籤其實沒有甚麼用。因為在妳的網誌上,祇有狀態為定稿
的文章纔會被顯示出來。不過在匯出機制裡,或許妳會用到這個標籤。...
)來當作文摘。convert_breaks
屬性:有斷行的文摘: <$MTEntryExcerpt convert_breaks="1"$>
轉換換列
而自動轉換換列和換段,那麼段落 ─ 用兩個換列所分隔出來的文字區塊 ─ 就會被包在 <p> 和 </p> 標籤裡,而所有單一的換列都會維持著,並且插入一個 <br /> 標籤。convert_breaks
屬性,就會覆寫掉針對該文章項目的文字格式
設定。所以假設妳在文章項目中開啟了這項設定,卻想在特殊的情況下把它關閉,妳可以這樣做:<$MTEntryBody convert_breaks="0"$>同時也請注意,如果妳祇想顯示文章本體的前 N 個字,那麼就可以用 words 屬性。再舉例來說,下列的例子就祇會顯示文章本體的前 5 個字。
<$MTEntryBody words="5"$>當尋找前 N 個字的時候,首先會從文章本體移去 HTML ,然後就祇會剩下字及字間空白了。
轉換換列
而自動轉換換列和換段,那麼段落 ─ 用兩個換列所分隔出來的文字區塊 ─ 就會被包在 <p> 和 </p> 標籤裡,而所有單一的換列都會維持著,並且插入一個 <br /> 標籤。convert_breaks
屬性,就會覆寫掉針對該文章項目的文字格式
設定。所以假設妳在文章項目中開啟了這項設定,卻想在特殊的情況下把它關閉,妳可以這樣做:<$MTEntryMore convert_breaks="0"$>
偏好彙整類別
而定。這也是預設的動作,妳可以用 archive_type
屬性來加以覆寫成妳想要連結的彙整類別。單篇
彙整來當作偏好彙整類別
,那麼接下來這個標籤:<$MTEntryLink$>就會產生一個通往該文章項目所屬的單篇彙整頁面網址,文章的檔名將會是該則文章項目的 ID ,不滿六位數字的部分則補上零,最後再接上妳的網誌的
彙整檔案副檔名
(像是 html
)。分類
彙整,那麼妳也許會想改連到該則文章項目所屬的分類彙整頁面;這個時候妳就可以用這個標籤:<$MTEntryLink archive_type="Category"$>這個標籤會被取代成一個到該文章項目的類別彙整頁面的鏈結。
<$MTEntryPermalink$>
標籤。#
) 來(藉由 ID )指向該則文章項目。這跟 <$MTEntryLink$>
很像,但聰明得多,因為他在單篇彙整以外的彙整中都會包含這個錨(在單篇彙整中如果還加上這個定位錨,就會顯得相當累贅)。<$MTEntryLink$>
一樣,這個標籤也有選用的 archive_type
屬性來指定所要連結的彙整類別。spam_protect
屬性,那麼 E-mail 地址就會被加以修改,以免某些垃圾信機器人蒐集到妳的 E-mail 地址;然而在這種情況下,網頁瀏覽器卻仍舊能夠顯示出正確的 E-mail 地址。舉例來說,如果有個 E-mail 地址是 foo@bar.com
,然後妳用了<$MTEntryAuthorEmail spam_protect="1"$>那麼這個 E-mail 地址就會被顯示成
foo@bar.com
。<$MTEntryAuthorLink show_email="0"$>那麼作者的 E-mail 地址就永遠不會被顯示出來;於是整個規則就會變成:如果作者有輸入網頁網址,那麼作者名字就會連到那個網址;如果作者沒有填寫網址,那麼這裡就祇會顯示出作者名字,而不提供任何鏈結。
spam_protect
屬性,而又顯示了電子郵件鏈結的話,這裡的 E-mail 地址也同樣地會被加以修改,以免被某些垃圾信機器人蒐集到。然後在這種狀況下,網頁瀏覽器卻還是可以顯示出正確的 E-mail 地址。舉例來說,如果有個 E-mail 地址是 foo@bar.com
,然後妳用了<$MTEntryAuthorLink spam_protect="1"$>那麼這個 E-mail 地址就會被顯示成
foo@bar.com
。format
屬性和 language
屬性。關於這些屬性的詳細資訊,請見日期標籤格式小節。<MTEntryIfExtended> <a href="<$MTEntryLink$>#<$MTEntryID$>">尚有內容...</a> </MTEntryIfExtended>
編輯文章項目
畫面裡的允許評論
被設定成開啟
或關閉
)的時候,纔會被顯示出來。妳可以用這個標籤來讓某個連到這則文章項目評論的鏈結,(當然)祇有在允許發表評論的時候纔顯示出來。開啟
時纔會被顯示出來。舉例來說,妳就可以用這個標籤來適時地顯示出『發表迴響』表單。編輯文章項目
畫面裡的允許通告
設定被開啟)的時候,纔會被顯示出來。8
的文章項目來說,這個標籤祇會產生 8
這個值。有的時候妳會比較希望妳的 ID 被補滿零;在這種情況下,妳可以在 MTEntryID
標籤裡使用 pad屬性:<$MTEntryID pad="1"$>這會用零把文章項目 ID 補滿成六 (6) 位數字,像是
000008
。<$MTCategory*$>
標籤(說明文件)來顯示關於每一個類別的資訊。這篇文章被歸類到下列的類別中: <MTEntryCategories glue=", "> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a> </MTEntryCategories>
convert_breaks
和 allow_comments
。如果旗標的值為真,那麼就會顯示 1
這個值;否則就會顯示 0
這個值。至於旗標的名稱則是以 flag
屬性來遞送。例如:<$MTEntryFlag flag="allow_comments"$>這個標籤用於以匯出機制來匯出文章項目資料的情況裡。妳應該不需要在妳自己的模版裡用到。
MTEntryPrevious
情境中,某個 <$MTEntryTitle$> 標籤就會變成前一則文章項目的標題。在妳(用一個 </MTEntryPrevious> 標籤)結束這個情境後,所有的標籤又會恢復成參照當前的文章項目。MTEntryNext
段落。MTEntryNext
情境中,某個 <$MTEntryTitle$> 標籤就會變成下一則文章項目的標題。在妳(用一個 </MTEntryNext> 標籤)結束這個情境後,所有的標籤又會恢復成參照當前的文章項目。
接下來這個範例是個導覽列,讓妳連結到前一則和下一則文章項目,還有一個鏈結連回妳的網誌主索引。
<MTEntryPrevious> <a href="<$MTEntryLink$>"><< <$MTEntryTitle$></a> | </MTEntryPrevious> <a href="<$MTBlogURL$>">Main</a> <MTEntryNext> | <a href="<$MTEntryLink$>"><$MTEntryTitle$> >></a> </MTEntryNext>
MTEntries
容器裡的時候纔會變得非常有用。舉例來說:<MTEntries> <MTDateHeader> <$MTEntryDate format="%B %e, %Y"$> </MTDateHeader> Title: <$MTEntryTitle$> </MTEntries>
MTDateHeader
標籤來把妳特定日期裡的所有文章排進某種結構(例如說 div
)裡。這個標籤就跟 MTDateHeader
一樣,祇有在 MTEntries
容器裡的時候纔會非常有用。舉例來說:<MTEntries> <MTDateHeader> <div class="day"> <$MTEntryDate format="%B %e, %Y"$> </MTDateHeader> Title: <$MTEntryTitle$> <MTDateFooter> </div> </MTDateFooter> </MTEntries>
<MTEntries>
容器裡的第一篇的時候纔會顯示出來。<MTEntries>
容器裡的最後一篇的時候纔會顯示出來。舉例來說,這可以用在妳的索引頁面上,連結到前一則文章項目的彙整頁面。例如當妳在使用逐日彙整時:<MTEntries days="1"> ... <MTEntriesFooter> <MTEntryPrevious> <a href="<$MTEntryLink archive_type="Daily"$>">昨日彙整: <$MTEntryDate format="%A, %B %d, %Y"$></a> </MTEntryPrevious> </MTEntriesFooter> </MTEntries>
lastn
屬性使用的情境而定,詳見後述)所有迴響清單的容器標籤。lastn="N"
屬性,這裡的 N
是妳想要顯示的迴響數量,那麼就會顯示當前文章項目 ─ 如果用在文章項目情境中 ─ 或網誌 ─ 如果用在其他地方 ─ 裡最新的 N
篇迴響。<MTComments>
就會列出所有當前文章項目的迴響。這表示當妳使用這個標籤而不加上任何屬性的時候,一定是用於文章項目情境:在單篇彙整模版
、迴響預覽模版
、迴響清單模版
或迴響出錯模版
裡,放進 <MTEntries>
中。sort_order
屬性來覆寫這個設定;這個屬性的值可以是 ascend 或是 descend 。<MTComments lastn="6" sort_order="descend"> <p><$MTCommentAuthor$> 說道:<br /> <$MTCommentBody$></p> </MTComments>對於迴響清單裡的每一篇來說,在容器內的文字及標籤都會被顯示出來。下列每一個標籤都用於顯示某篇迴響的特定變數區塊。
8
的文章項目來說,這個標籤祇會產生 8
這個值。有的時候妳會比較希望妳的 ID 被補滿零;在這種情況下,妳可以在這個標籤裡使用 pad 屬性:<$MTCommentID pad="1"$>這會用零把迴響 ID 補滿成六 (6) 位數字,像是
000008
。<MTComments lastn="N">
的時候會相當有用,因為它會讓妳連到跟這篇迴響所對應到的特定文章項目。pad
屬性,其功能就跟前述的 <$MTCommentID$>
標籤中的 pad
屬性一模一樣。<$MTCommentAuthorLink show_email="0"$>那麼作者的 E-mail 地址就永遠不會被顯示出來;於是整個規則就會變成:如果作者有輸入網頁網址,那麼作者名字就會連到那個網址;如果作者沒有填寫網址,那麼這裡就祇會顯示出作者名字,而不提供任何鏈結。
spam_protect
屬性,而又顯示了電子郵件鏈結的話,這裡的 E-mail 地址也同樣地會被加以修改,以免被某些垃圾信機器人蒐集到。然後在這種狀況下,網頁瀏覽器卻還是可以顯示出正確的 E-mail 地址。舉例來說,如果有個 E-mail 地址是 foo@bar.com
,然後妳用了<$MTCommentAuthorLink spam_protect="1"$>那麼這個 E-mail 地址就會被顯示成
foo@bar.com
。spam_protect
屬性,那麼 E-mail 地址就會被加以修改,以免某些垃圾信機器人蒐集到妳的 E-mail 地址;然而在這種情況下,網頁瀏覽器卻仍舊能夠顯示出正確的 E-mail 地址。舉例來說,如果有個 E-mail 地址是 foo@bar.com
,然後妳用了<$MTCommentEmail spam_protect="1"$>那麼這個 E-mail 地址就會被顯示成
foo@bar.com
。轉換換列和換段
,那麼段落 ─ 用兩個換列所分隔出來的文字區塊 ─ 就會被包在 <p> 和 </p> 標籤裡,而所有單一的換列都會維持著,並且插入一個 <br /> 標籤。convert_breaks
屬性,就會覆寫掉針對全域的轉換換列和換段
設定。所以假設妳在全域設定中開啟了這項設定,卻想在特殊的情況下把它關閉,妳可以這樣做:<$MTCommentBody convert_breaks="0"$>
format
屬性和 language
屬性。關於這些屬性的詳細資訊,請見日期標籤格式段落。1
開始。請注意這裡的順序是按照排序(遞增或遞減)而定的。<$MTEntry*$>
標籤來參照該則文章項目。舉例來說,妳就可以這麼用:<MTComments lastn="5" sort_order="descend"> <MTCommentEntry> 這篇迴響是針對 <$MTEntryTitle$> 這篇文章所發表的。 </MTCommentEntry> </MTComments>
當妳做出迴響預覽模版
的時候,妳應該要採用下列這些標籤。這些標籤全部都跟前述的迴響
小節裡名稱相近的標籤作用相仿;唯一的不同是這些標籤祇能用於預覽之用,而不是用在 <MTComments>
區塊中。
這些標籤全部都跟前述的迴響
小節裡名稱相近的標籤意思相同。
迴響出錯
模版裡,好讓系統得知發表完迴響後要把讀者轉送到哪裡。使用這個標籤時,把下面這個隱藏輸入欄位貼進妳的迴響預覽
模版和迴響
出錯模版裡:<input type="hidden" name="static" value="<$MTCommentPreviewIsStatic$>">
<$MTCommentPreviewState$>
標籤。迴響預覽模版
)裡使用的神奇標籤。這個標籤會被取代成一切要發表迴響所需的迴響資料,以及迴響是從嵌入式迴響或彈出式迴響所發表的消息。下列的模版標籤和變數適用於妳的彙整頁面及彙整總索引。
MTEntries
標籤來顯示該頁面上每一則文章項目的資訊。舉例來說:<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveDate$></a><br /> <MTEntries> [<$MTEntryTitle$>] </MTEntries> <br /><br /> </MTArchiveList>這會顯示一個連往彙整頁面的鏈結,後面再跟著那一個頁面上每一則文章項目的標題清單。
archive_type
會指定彙整清單的類別,而 lastn
則會限制列出的彙整數量。archive_type
單篇
彙整和逐日
彙整,而妳的偏好彙整類別是單篇
彙整時,妳可以用這個標籤來列出妳的逐日
彙整:<MTArchiveList archive_type="Daily"> ... </MTArchiveList>
lastn
<MTArchiveList archive_type="Monthly" lastn="5"> ... </MTArchiveList>
逐月
彙整時, <$MTArchiveLink>
會產生連到特定的逐月
彙整的鏈結。妳可以指定 archive_type
屬性來覆寫這個作用;這個屬性可以設成下列幾個值之一: Individual
、 Daily
、 Weekly
、 Monthly
或 Category
。Month Day, YYYY
格式表示的日期。Month Day, YYYY - Month Day, YYYY
格式表示的該週日期範圍。Month YYYY
格式表示的月份。MTArchiveTitle
跟 MTArchiveLink
放在一起用可以說是建立彙整總索引最簡單的方法了。因為 MTArchiveTitle
的值會隨著任何妳選擇的類別而改寫。舉例來說:<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a><br /> </MTArchiveList>不論妳選擇了哪一種彙整類別,都能夠顯示出有用的彙整頁面清單。
<MTArchiveList>
容器時會很有用,就像這樣:<MTArchiveList> <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> (<$MTArchiveCount$>)</a><br /> </MTArchiveList>
逐日
彙整、逐週
彙整或者是逐月
彙整時纔有意義。這也是標準的日期標籤,所以請參照後面會提到的日期標籤格式來自訂日期格式。MTArchiveList
容器裡使用這個標籤,也可以用於某個和按時彙整類別相關聯的彙整模版裡、在 MTEntries
標籤以外的地方。妳可以用來顯示特定彙整頁面的日期檔頭 ─ 例如月份和年份:<$MTBlogName$> Archives: <$MTArchiveDate format="%B %Y"$> <MTEntries> ... </MTEntries>
逐日
彙整、逐週
彙整或者是逐月
彙整時纔有意義;除此以外的情況都會失效。請參照後面會提到的日期標籤格式來自訂日期格式。<$MTArchiveDate>
標籤所適用的相同情境中使用這個標籤。分類
彙整的時候纔有意義。MTArchiveList
容器中使用這個標籤,也可以用於某個和妳的分類
彙整相關聯的彙整模版裡、在 MTEntries
標籤以外的地方。妳可以用來顯示特定彙整頁面的類別檔頭,像是:<$MTBlogName$> Archives: <$MTArchiveCategory$> <MTEntries> ... </MTEntries>
MTArchivePrevious
情境中, <$MTArchiveTitle$> 標籤就會去參照前一個彙整的標題。當妳(用 </MTArchivePrevious> 標籤)結束這個情境後,所有的標籤又會回來參照現用的彙整。逐日
、逐週
或逐月
彙整相關聯的彙整模版中;如果妳想要在單篇文章彙整中也有相似的功能,請參考 <MTEntryPrevious>
標籤。逐日
彙整裡,『前一份』彙整指的是前一天的文章彙整。如果妳想要覆寫這樣的作用 ─ 像是妳更想要連結到前一個月份的彙整 ─ 時妳就可以用 archive_type
屬性(範例見後)。<MTArchiveNext>
文件。MTArchiveNext
情境中, <$MTArchiveTitle$> 標籤就會去參照下一個彙整的標題。當妳(用 </MTArchiveNext> 標籤)結束這個情境後,所有的標籤又會回來參照現用的彙整。逐日
、逐週
或逐月
彙整相關聯的彙整模版中;如果妳想要在單篇文章彙整中也有相似的功能,請參考 <MTEntryNext>
標籤。逐日
彙整裡,『下一份』彙整指的是前一天的文章彙整。如果妳想要覆寫這樣的作用 ─ 像是妳更想要連結到前一個月份的彙整 ─ 時妳就可以用 archive_type
屬性。<MTArchivePrevious> <a href="<$MTArchiveLink$>"><< <$MTArchiveTitle$></a> | </MTArchivePrevious> <a href="<$MTBlogURL$>">Main</a> <MTArchiveNext> | <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> >></a> </MTArchiveNext>接下來這個導覽列的範例可以被用在
逐日
彙整裡,用來連到前一個月份的彙整以及下一個月份的彙整。如果妳在妳所有的逐日
彙整裡都加上了月曆,然後想要連到前一個月份和下一個月份的月曆時,就會很有用。<MTArchivePrevious archive_type="Monthly"> <a href="<$MTArchiveLink archive_type="Monthly"$>"><$MTArchiveDate format="%b"$></a> </MTArchivePrevious> <MTArchiveNext archive_type="Monthly"> <a href="<$MTArchiveLink archive_type="Monthly"$>"><$MTArchiveDate format="%b"$></a> </MTArchiveNext>
接下來這些標籤可以用來顯示網誌上的類別清單,以及每一個類別的資訊( ID 、標籤等)。
<MTEntries>
標籤來顯示這個類別中每一個文章項目的資訊。例如:<MTCategories> <a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a><br /> <MTEntries> <$MTEntryTitle$> </MTEntries> <br /><br /> </MTCategories>這會顯示連往每一個類別的鏈結,然後後面再個別跟著該類別的文章標題清單。
<MTArchiveList>
的預設作用所複製而來的。請注意如果妳包括了連到分類彙整頁面的話,這樣也是建議的作法;因為空的類別不會產生彙整頁面。換而言之,連往空的類別的彙整鏈結會是一個壞掉的鏈結。show_empty
屬性。例如這些標籤:<MTCategories show_empty="1"> <$MTCategoryLabel$> </MTCategories>就會顯示所有的類別清單,即使是空的類別也會。
分類
彙整時纔有效;否則妳就會在重建頁面的時候得到一個錯誤訊息。<MTCategories>
裡面)中,不然妳也可以用 category 屬性來指明引用通告網址所要對應到的類別。舉例來說:<$MTCategoryTrackbackLink category="Foo Bar"$>祇要妳指定了這個屬性,就可以在任何妳想要的地方使用這個標籤。
下列的標籤可以用來在妳的文章項目裡畫出月曆。事實上並沒有任何限制說妳一定得要用 HTML 的表格來畫出月曆;這些標籤完全是泛用型的,因此妳可以利用她們來做出各種迥然不同樣子的月曆。
<MTCalendar>
標籤和 </MTCalendar>
標籤之間的組成元件都代表著月曆裡的一個『格子』(有可能是一個月裡的某一天,或者是屬於別的月份的空白格子)。month
屬性,用來指定要顯示哪一個月份和年份的月曆。如果這個屬性的值是 this
這個字串,就會建立起近期情境;這表示說,妳可以在彙整模版裡用<MTCalendar month="this"> ... </MTCalendar>來表示正被檢視的彙整那個月份的月曆。這個標籤在
單篇
彙整、逐日
彙整、逐週
彙整和逐月
彙整裡都可以用,但是妳不能拿進分類
彙整用。month
屬性的值被設定成 last
的話,就會建立出相對目前日期的前一個月份的月曆。month
屬性中用 YYYYMM
格式(例如: 200112
)來指定確切的月份和年份。month
屬性的話,就會顯示當月的月曆。category
屬性,並且指明該類別的名稱。舉例來說,下面這個標籤:<MTCalendar month="200201" category="Foo"> ... </MTCalendar>就祇會顯示 2002 年一月份所有
Foo
這個類別裡的文章項目。1
)。妳可以在 <MTCalendarIfEntries>
容器和 <MTCalendarIfNoEntries>
容器裡用這個標籤。1
,然後依序增加,往水平方向在月曆上橫跨。<$MTCalendarDay$>
不同,因為後者僅套用於非『空白』的格子(也就是代表著特定月份裡某個日子的項目)。format
屬性。如果妳祇想要顯示數字型的日期,那麼就祇需要用 <$MTCalendarDay$>
就可以了;祇有在妳想要顯示更多日期/時間資訊的時候,纔有必要使用這個標籤。<MTCalendarWeekHeader>
標籤和 </MTCalendarWeekHeader>
標籤間的組成元素都祇會在每一週的開始時被顯示出來。<MTCalendarWeekFooter>
標籤和 </MTCalendarWeekFooter>
標籤間的組成元素都祇會在每一週的結束時被顯示出來。<MTCalendarIfBlank>
標籤和 </MTCalendarIfBlank>
標籤間的組成元素都祇會在該格子是一個『空』格子 ─ 也就是不代表該月份任何一天的格子 ─ 時被顯示出來。<MTCalendarIfEntries>
標籤和 </MTCalendarIfEntries>
標籤間的組成元素都祇會在該格子裡的日期有任何文章項目時纔顯示出來。妳還可以用 <MTEntries>
標籤來顯示那一天裡所有的文章項目。<MTCalendarIfEntries> 這一天裡的文章: <MTEntries> <a href="<$MTEntryLink$>"><$MTEntryTitle$></a><br /> </MTEntries> </MTCalendarIfEntries>
<MTCalendarIfNoEntries>
標籤和 </MTCalendarIfNoEntries>
標籤間的組成元素祇有在該格子裡的日期沒有任何文章項目的時候纔顯示出來。<MTCalendarIfToday>
標籤和 </MTCalendarIfToday>
標籤間的組成元素祇有在該格子裡的日期就是目前的日期時纔顯示出來。以下是一個標準的月曆顯示組成,會顯示出目前的月份。
<table border="0" cellspacing="4" cellpadding="0" summary="Monthly calendar"> <caption><$MTDate format="%B %Y"$></caption> <tr> <th abbr="星期日" align="center">Sun</th> <th abbr="星期一" align="center">Mon</th> <th abbr="星期二" align="center">Tue</th> <th abbr="星期三" align="center">Wed</th> <th abbr="星期四" align="center">Thu</th> <th abbr="星期五" align="center">Fri</th> <th abbr="星期六" align="center">Sat</th> </tr> <MTCalendar> <MTCalendarWeekHeader><tr></MTCalendarWeekHeader> <td <MTCalendarIfToday>bgcolor="#EEEEEE"</MTCalendarIfToday> align="center"> <MTCalendarIfEntries><MTEntries lastn="1"><a href="<$MTEntryLink$>"><$MTCalendarDay$> </a></MTEntries></MTCalendarIfEntries> <MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries> <MTCalendarIfBlank> </MTCalendarIfBlank></td> <MTCalendarWeekFooter></tr></MTCalendarWeekFooter> </MTCalendar> </table>
請注意:計算出月曆顯示的代價相當高昂,所以如果妳想要在網站上的每一頁都擺上同樣的月曆,比較好的作法是在索引模版裡建立一個月力,然後用伺服器端的囊括功能或者是 PHP (或者是任何動態的網頁伺服器工具)來把這個檔案囊括到妳的每一頁裡。
有一些標籤是和引用功能系統有關的。
<MTPings category="Foo"> ... </MTPings>同時妳也可以在這個標籤裡面使用 sort_order 屬性和 lastn 屬性,他們作用的情況會跟在其他 Movable Type 標籤裡的一樣。 sort_order 屬性的值可以是
ascend
或者是 descend
;而 lastn 屬性的職責應該是正整數,表示要列出最近 N 個引用通告。Foo Bar
這個類別中最新的 15 個通告的話,妳可以把下列這段加入妳的主索引模版之中:<MTPings category="Foo Bar" lastn="15"> <a href="<$MTPingURL$>"><$MTPingTitle$></a><br /> </MTPings>
format
屬性和 language
屬性。更多資訊請見日期標籤格式小節。<MTPingsSent> 網址: <$MTPingsSentURL$><br /> </MTPingsSent>
<MTPingsSent>
標籤裡面使用。下列這些標籤祇能用於妳的搜尋模版裡。
<$MTEntry*$>
標籤,因為搜尋結果所代表的項目會進入情境之中。妳也可以用任何的 <$MTBlog*$>
標籤來存取特定文章項目結果被找到的網誌資料。<MTSearchResults> <MTBlogResultHeader> <h2><$MTBlogName$>內的結果</h2> </MTBlogResultHeader> <h3><a href="<$MTEntryLink$>#<$MTEntryID pad="1"$>"><$MTEntryTitle$></a></h3> <$MTEntryExcerpt$> <$MTEntryEditLink$><br /> <div class="posted"><$MTEntryDate$> 時,被發表在 <$MTBlogName$></div> </div> </MTSearchResults>
<MTNoSearchResults> <h2>已搜尋 "<$MTSearchString$>"</h2> <p>沒有找到任何包含有 "<$MTSearchString$>" 的頁面。</p> </MTNoSearchResults>
http://YOURDOMAIN.COM/PATH-TO/mt-search.cgi或者是在新迴響搜尋的情況下,有讀者直接到
http://YOURDOMAIN.COM/PATH-TO/mt-search.cgi?Type=newcomments&help=1正確使用這個標籤的方法可能是顯示搜尋指引,或者是提供更進階的搜尋表單。
<MTNoSearch> <h2>指引</h2> <p>... 這裡是一些搜尋指引 ...</p> </MTNoSearch>
這些標籤並不適合放在上述任何一類裡。
<MTElse>
標籤來讓任何條件標籤支援『否則』條件。也就是說,通常適用於任何名稱裡含有 If
的標籤(例如像 <MTEntryIfExtended>
)。 <MTElse>
這個容器標籤裡面的內容祇有當條件不被符合時纔顯示。這個 <MTElse>
容器應該被放進能夠提供『否則』條件的條件標籤容器裡。<MTEntryIfExtended> 這個文章項目具有延伸的內容。 <MTElse> 這個文章項目沒有延伸的內容。 </MTElse> </MTEntryIfExtended>
MTInclude
標籤來把一個模版模組(請見前面提過的模版模組區段,這個區段位於模版小節裡)或外部檔案囊括進另一個模版裡。 <MTInclude>
會取用下列的屬性:Header
的模版模組,再用 <MTInclude>
來囊括之:<$MTInclude module="Header"$>
本機站台路徑
目錄下或本機彙整路徑
目錄下的單純檔名。舉例來說,如果妳的本機站台路徑目錄裡,有個叫 foo.html 的檔案,那麼妳可以像這樣將其囊括進某個模版裡:<$MTInclude file="foo.html"$>這個檔案將在頁面被重建的時候被囊括進妳的模版;請注意這個作用不該和伺服器端囊括弄混,因為後者會在每次網頁伺服器收到該頁的需求時就把外部檔案囊括進去。所以每當妳變更了透過
<MTInclude>
標籤被囊括的外部檔案後,請別忘記得要重建這些頁面纔有辦法囊括這些被修訂過的部分。<MTLink>
標籤來自動產生索引模版或系統中某篇文章的網址。 <MTLink>
可以使用下列的屬性:About Page
的模版所產生的頁面的話,妳可以用:<a href="<$MTLink template="About Page"$>">My About Page</a>
<a href="<$MTLink entry_id="562"$>">Link to a certain entry</a>
最近更新於
的地方,例如:本頁面最後更新時間: <$MTDate format="%B %d, %Y %I:%M %p"$>.
這個標籤可以加上下列的屬性:
1
,在這個情況下傳回的頁面會跟妳的頁面(假設妳在站台網址設定了妳的主頁網址)很像。範例請見後。10
。movable type
的最前 5 筆搜尋結果:<MTGoogleSearch query="movable type" results="5"> <a href="<$MTGoogleSearchResult property="URL"$>"><$MTGoogleSearchResult property="title"$></a><br /> </MTGoogleSearch>或者是列出跟妳的頁面相似的其他頁面清單:
<MTGoogleSearch related="1"> <a href="<$MTGoogleSearchResult property="URL"$>"><$MTGoogleSearchResult property="title"$></a><br /> </MTGoogleSearch>請注意 query 、 related 、 title 以及 excerpt 這些屬性通通具有完全的排他性。
<MTGoogleSearch>
標籤)。title
。summary
、 URL
、 snippet
和 title
。name
屬性來設定變數名稱,然後用 value
屬性來設定變數值。然後妳就可以用 <MTGetVar>
標籤(如後述)來取得這個變數的值。name
屬性來指定。舉例來說,妳可以在外部模版中設定變數 foo
的值:<MTSetVar name="foo" value="bar">然後在某個被囊括的模版模組裡,取得這個變數的值:
<MTGetVar name="foo">
CGIPath
列的值(在安裝過程中所設定的;詳見安裝指引)代換掉。 MTCGIPath
可以讓連往 Movable Type CGI 腳本 ─ 像是 mt-comments.cgi 和 mt-add-notify.cgi ─ 這件事變得相當簡單;妳不再需要老是在妳的模版裡使用這些 CGI 腳本的網址,而祇需要用這個標籤就可以了。舉例來說,當妳要建立發表迴響的表單時:<form method="post" action="<$MTCGIPath$><$MTCommentScript$>">
跳出已上傳影像模版
。跳出已上傳影像模版
。跳出已上傳影像模版
。迴響出錯模版
裡,它會被取代成送出迴響過程中所發生的錯誤訊息(例如像是無效或缺少了的E-mail 地址)。2.64
。iso-8859-1
,而這將導致中文顯示的不正確。所以請務必在 mt.cfg 裡將 PublishCharset 設成 UTF-8
。全域標籤屬性可以被用於任何變數代換標籤(會被代換成某個值的標籤 ─ 這種標籤的對比就是會『容納』其他組成元素和標籤的容器標籤)。然而這並不意味著當他們被使用於任何標籤裡,都一定要有意義;實際上使用者得自己判斷特定的標籤屬性是否在實做上有意義。
全域屬性的用法就跟標籤專一屬性的用法一樣:在標籤裡使用 name="value"
配對。例如:
<$MTEntryExcerpt encode_html="1"$>這個標籤會被取代成以 HTML 編碼過的文摘。
以下是全域標籤屬性的清單:
,
) 來分隔過濾器名稱。如果妳指定了多重過濾器的話,它們將會按照妳所列出的順序先後被執行。舉例來說,如果妳定義了一個短名稱叫 wiki 、會執行 Text::WikiFormat 這個 CPAN 模組的過濾器的話,妳就可以這麼做:<$MTEntryTitle filters="wiki"$>來把
''這是一個標題''
這樣的標題轉換成 <em>這是一個標題</em>
。1
的時候,標籤的值就會編碼成 HTML 。舉例來說,如果沒有這個屬性的時候標籤的值為 Foo & Bar -> Baz
,那麼編碼成 HTML 的版本就會變成 Foo & Bar -> Baz
。<$MTEntryExcerpt encode_html="1"$>
1
的時候,就把該項目中任何 XML 裡需要加以編碼的字符予以編碼。這些字符包括有: &
、
、 <
和 >
。Foo & Bar -> Baz
,那麼編碼成 XML 的版本就會變成 Foo & Bar -> Baz
。<item> <title><$MTEntryTitle encode_xml="1"$></title>注意:這個屬性跟 encode_html 間的差異在於後者會把更多特殊字符編碼成 HTML 項目;如果妳安裝了 HTML::Entities 模組,那麼妳就不需要在 mt.cfg 裡開啟 NoHTMLEntities 選項。
1
的時候,就把標籤的值按照 Javascript 字串值的用法編碼成合適的格式。舉例來說,如果沒有這個屬性的時候標籤的值為 Foo "Bar" Baz's 1/2 Quux
,那麼編碼後的版本就會變成 Foo \"Bar\" Baz\'s 1\/2 Quux
。<script type="text/javascript"> var str = '<$MTEntryTitle encode_js="1"$>'; </script>
q
(single-quote) 、 qq
(double-quote) 或 heredoc
(here document ─ 請注意此處的 here
對於一個 here document 來說仍然具有功效)。q
的使用範例:<?php $str = '<$MTEntryTitle encode_php="q"$>' ?>
heredoc
的使用範例:<?php $str = <<<HERE <$MTEntryBody encode_php="heredoc"$> HERE; ?>
foo bar
這個字串就會被轉換成 foo%20bar
。<a href="/search?q=<$MTEntryTitle encode_url="1"$>">搜尋</a>
1
的時候,把所有在這個標籤值裡的 HTML 項目加以解碼。舉例來說,如果沒有這個屬性的時候標籤的值為 foo<br>
,那麼 HTML 項目被解碼後的版本就會變成 foo<br>
。<$MTEntryTitle decode_html="1"$>
1
的時候,把所有在這個標籤值裡的 XML 項目加以解碼。舉例來說,如果沒有這個屬性的時候標籤的值為 foo<br>
,那麼 XML 項目被解碼後的版本就會變成 foo<br />
。<$MTEntryTitle decode_xml="1"$>
1
的時候,就從標籤值裡刪掉所有的 HTML 標籤。舉例來說,如果沒有這個屬性的時候標籤的值為 Foo<br /> Bar
,那麼沒有 HTML 標籤的版本就會變成 Foo Bar
。<$MTEntryTitle remove_html="1"$>
1
的時候,就把這個標籤值給『變成目錄』。這表示這個標籤的值會按照檔案或目錄名稱的用法,轉換成適當的樣子:首先這個值會全部被轉換成小寫,接著刪去所有的 HTML 標籤及項目,奇怪的字符接著也被刪去(所謂奇怪的字符指的就是那些不包含在:字母數字字符、底線 (_
) 和空白),然後再把空白轉換成底線 (_
) 。crudité
這樣的東西將會被轉換成 crudite
。Foo "Baz" is<br /> Bar!
,那麼變成目錄後的版本就會是 foo_baz_is_bar
。<$MTArchiveCategory dirify="1"$>
<$MTEntryTitle upper_case="1"$>
<$MTArchiveDate format="%B" lower_case="1"$>
<$MTEntryTitle trim_to="15"$>上面這個標籤將祇會顯示出文章項目標題的前
15
個字符。<$MTCalendarDay space_pad="3"$>上面這個標籤會在
3
這個值前面插入空白,使其變成『 3
』。<$MTCalendarDay zero_pad="5"$>上面這個標籤會在
8
這個值前面插入零,使其變成 00008
。<$MTCalendarDay sprintf="%05s"$>
1
的話,預設的消毒規格 ─ 不論是該網誌獨有的或是整體設定裡的 ─ 就會被採行。如果這個屬性的值被設定成 0
的話,這個標籤的消毒功能就會被關閉。如果這個屬性的值是任何其他的東西的話,也會被當成是要採行消毒規格。<$MTEntryBody sanitize="a href"$>這樣將會把文章中所有的 HTML 標籤清乾淨,祇留下
<a>
(而且祇會留著帶有 href
屬性的)。Movable Type 用了標準的 strftime
格式字串來描述日期和時間。(然而,請注意 strftime
本身並不真的是拿來施用格式的。)在任何的日期標籤裡,妳都應該可以用 format
屬性來指定格式字串,就像這樣:
<$MTDate format="%B %e, %Y %I:%M %p"$>上面這個格式正是英文日期的預設格式,會做出像是這樣子的日期:
September 20, 2001 11:44 PM妳可以在網誌組態的
顯示日期的語言
裡面選取不同的語言,這個語言會被套用在週裡的名稱、月份的名稱和上午/下午的說明。預設被使用的語言是英文
。
妳也可以用 language
屬性來指定語言,覆寫掉預設的設定;這祇會套用在妳正在制訂格式的那個日期字串上。以下是可用的語言標籤清單: cz
、 dk
、 nl
、 en
、 fr
、 de
、 is
、 jp
、 it
、 no
、 pl
、 pt
、 si
、 es
、 fi
、 se
。
以下則是格式說明清單。
%a
Thu
。%A
Thursday
。%b
Sep
。%B
September
。%d
0
。例如: 09
。%e
9
。%H
0
。例如: 16
。%I
0
。例如: 04
。%j
0
。例如: 056
。%k
9
。%l
4
。%m
0
。例如: 09
。%M
0
。例如: 02
。%p
AM
或 PM
。%S
0
,例如: 04
。%x
September 6, 2002
。%X
4:31 PM
。%y
0
,例如: 01
。%Y
2001
。版權所有 © 2003 Jedi. 保留部分權利。