深造篇（修改模版）

### Movable Type 新手手冊：深造篇（修改模版）

« 目錄

- 深造篇（修改模版）

- 基本精神：體用哲學
- 體：呈現的內容與排放的順序
- 用：樣式與視覺效果
- 百尺竿頭：RDF
- 其他事項

# 深造篇（修改模版）

這一章會比較深奧，因為不但會談到更多更抽象的實做注意事項，而會是一些概念上的注意事項。但是無論如何，仍然希望大家花一點時間讀一讀，纔能夠在之後實做的章節裡，迅速掌握到處理的原則，而舉一反三，加以靈活運用。

- ## 基本精神：體用哲學

MT 的模版系統使得網誌的「內容」可以跟「形式」抽離；當妳在修改版面安排（形式）的時候，完全不會影響到內容；反之亦然。然而在 MT 的預設模版裡，又更進一步地使用了 CSS ，把這個「形式」又拆解成「順序結構」跟「效果」；前者是 HTML 或 XHTML 的部分，後者則是 CSS 的部分。藉由這樣的拆解，妳可以重新安置頁面中的各個元件，而不改變每個元件的呈現效果；也可以重新設計每個元件的呈現效果，而不會改變頁面元件的安置。

像是這樣的設計理念，有一個說法稱做「模組化」，強調各自獨立的合作關係，不會一個地方爛掉就全部爛光光。而這也是妳在規劃模版的時候所該記在心裡面的。

- ## 體：呈現的內容與排放的順序

首先我們要來講講這個 HTML/XHTML 的部分。雖然說，有了 CSS 之力，妳可以隨意地安置各個元件，幾乎可以不要考慮他們的先後關聯，都有辦法做出整齊漂亮的版面；但是在這裡仍舊要強調，邏輯清晰的 HTML/XHTML 纔是建構優良頁面的基礎。

為什麼呢？有幾個主要原因：

- 對於其他祇讀取 HTML/XHTML 的瀏覽器來說，妳所安排的元件順序幾乎就等同於他們所能取得資訊的順序。

對於那些因故無法使用妳我所熟知的瀏覽器的讀者來說，他們可能得仰賴其他科技的幫助，或者把網頁內容逐一轉換成點字、或者改以語音的方式逐一朗誦出來。在這種情況下，如果妳的 HTML/XHTML 撰寫得調理分明、層次清晰的話，也將能提供他們更多的語境線索。

- 群組管理，維護方便。

把相關的元件放在一起，就可以很方便地套上相同的樣式；同時在 HTML/XHTML 源碼及網頁實際輸出上取得相似性的話，也比較能方便妳日後加以維護修改的工作。

切記，編撰 HTML/XHTML 模版的時候，妳應當揚棄以往使用表格來排版的方式，而把排版的工作留給 CSS 來處理。表格應剛祇在真的是「表格」的情況下纔使用。

撰寫 HTMLXHTML 模版的時候，妳可能會需要具備基本的 HTML/XHTML 能力，另外可以參考 Movable Type 使用手冊：模版標籤來插入其他 MT 標籤；如果妳之前也有使用過其他的網誌系統或者出版管理系統，而且也用那些系統製作過模版的話，妳也許會想參考一下 Movable Type 模版；這份文件裡有對於不同系統間模版差異的解釋，也有著簡單的模版作用機制說明，對於編撰模版來說，一定有所幫助。

如果想要做出比好還要好的 HTML/XHTML 模版，也應該留意 Accessibility(親和力/無障礙) 的議題。妳可以看一下 W3C Web Accessibility Initiative 的內容（有人正在把它翻譯成中文版）；另外也有幾份不錯而簡短的文件該讀一讀，像是我跟 hlb 翻譯完的 Dive Into Accessibility （深入親和力）就是一本分量輕薄的小書，可以幫助妳在三十天內讓網頁更棒。

此外，妳也可以看一看我寫的這一篇「我的網頁哲學」，裡面闡述著我自己的編撰理念。

當妳寫出 HTML/XHTML 模版後，也可以用 W3C MarkUp Validation Service 來驗證看看是不是有語法上的瑕疵；通常要修改這些瑕疵都會耗上大量的時間精力，但是卻可以幫助妳把 HTML/XHTML 寫得更合邏輯；事實上，這也可以鍛鍊妳的 HTML/XHTML 功力。

- ## 用：樣式與視覺效果

CSS 是另外一門大學問；舉凡字形變化、邊框留白、顏色圖片乃至於游標音效，都幾乎可以透過 CSS 來達成。除此之外，可重複利用也是另一個 CSS 的特色；祇要妳規劃得當，就可以讓同一類的 HTML/XHTML 元件去取用相同的屬性變化，毫不囉唆。

網路上可以找到的中文 CSS 相關文鍵不特別多，從 hlb 翻譯的CSS實務排版技巧、秘訣與技術開始著手。大致上當妳一開始祇能夠修改既有的 CSS 檔案時，妳可以這麼做：

- 從 HTML 模版裡找出要修改的元件

這個元件通常會被包在 <div> 和 </div> 標籤之間，所以妳可以在 <div> 標籤裡找到像是 class="divclass" 或是 id="divid" 這樣的屬性。有的時候這樣的屬性是放在 <img> 標籤裡或是其他地方，請自行判斷。

- 到 CSS 模版裡找到相對應的 class 或 id

如果是 id ，那麼在 CSS 裡面就會是像 #divid 命名的區塊；如果是 class ，那麼在 CSS 裡面就會是像 .divclass 命名的區塊。如果多個 class 使用相同的屬性，也可以用 .divclass1, .divclass2, .divclass3 這樣子的方法來群組 class 。

- 修改 CSS 屬性

每一個 CSS 區塊都會以 { 開頭、以 } 結束，其中列著許多屬性，每一個屬性後面都會有 : ，然後纔是列著多個不同的參數值，再以 ; 來結束對這一個屬性的設定；參數值之間則是以空白來分隔。

另外一個 CSS 的重點是在於欄框的階層。 CSS 中任何元件預設都是「佔滿可用空間」的，如果妳要更動佔用空間的尺寸、位置的話，就得留意這個「頁(page) ─ 格(box) ─ 欄(margin) ─ 框(border) ─ 留白(padding) ─ 內容物」的先後關係：

- 頁(page)是最大的單位，也是幾乎不能夠調整的。整個瀏覽器的可視範圍就是一個頁；所以妳不可能同時使用多個頁。

- 一頁裡面可以有好幾個格(box)；通常妳可以直接使用像是 top, bottom, left, right 這樣的屬性來指定格的四個邊界；這些數值都會直接參照頁的四個邊界來計算。

- 一格裡面還可以有好幾個欄(margin)；通常妳可以用像是 margin-top, margin-bottom, margin-left, margin-right 這樣的屬性來指定欄的四個邊界；這些數值都會參照這個欄所在的格的四個邊界來計算。

- 每個欄都還可以加框(border)，妳可以用 border 系列的屬性來指定這些框的顏色、樣式等。除了加框之外，框線往內還可以留白(padding)；通常妳可以用像是 padding-top, padding-bottom, padding-left, padding-right 這樣的屬性來指定四邊各要留多少空間，其內剩下來的區域纔是內容物所會佔用的空間。

通常當妳很高興地安排完一整套的 CSS 欄框排版之後，很有可能出乎意料（或意料之中？）地發現，瀏覽器所畫出來的樣子跟妳原先所設想的完全不同！所以在嘗試及除錯的階段，妳可以先暫時地使用粗而明顯的邊框，來觀察看看到底瀏覽器把妳的欄框放到哪裡去了。以下是一個除錯用邊框的範例：

    border: red solid 10px;

妳可以等位置擺對了之後，再把這個邊框改回妳想要的樣子（或者把它去掉，如果妳不想要有邊框的話）。

大致說來，妳可以任意地把玩 CSS 的各種屬性，無須擔心會損毀妳的內容跟架構。所以，盡情享樂吧！

當妳寫出 CSS 模版後，也可以用 W3C CSS Validation Service 來驗證看看是不是有語法上的瑕疵。好消息是，這應該會比 HTML/XHTML 的驗證容易通過得多了。

另外還有一個壞消息：目前號稱市場佔有率最高的 IE 徹底霸道，不遵守 W3C CSS 標準；所以妳可能祇需要花 20% 的時間就可以做出漂亮的版面，卻要再花上 80% 的時間來處理 IE 的相容性。

額外給華文世界使用者的資訊： KKMan 的結果會更糟。

- ## 百尺竿頭：RDF

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

Copyright © 2003, 2004 Jedi. Some Rights Reserved.