自訂 Movable Type 的預設模版
當妳拿 Movable Type 作為團體或社群或公司或任何單位的網站出版系統時,往往會需要把幾乎相同的模版套用到眾多不同的網誌裡,以營造出整體的一致性。當然妳可以善用模版編輯畫面裡的「連結模版至檔案
」功能,但是這樣將會使得這些模版無法各自修改,而且妳還是得要一個一個設定、新增;相信我,如果妳跟我一樣大量運用了「模版模組
」來撰寫模版的話,就會讓這樣的惡夢變本加厲成為夢魘。
在這種情況下,相信妳會很希望能夠把辛辛苦苦編撰好的模版變成 Movable Type 的預設模版,如此一來每當妳新增網誌的時候,系統就會幫妳把所有的模版準備好,妳祇需要再逐一按照真實情況加以微調就行了。這並非不可及的夢想,相反地這並不難,連我這種完全不會 Perl 的人都能輕易辦到。妳唯一需要做的事,就是用純文字編輯器來修改這個檔案:
MT安裝路徑/lib/MT/default-templates.pl
當然,這種事有其風險,所以請先做好備份,出了意外我可不做任何擔保。
這個檔案看似複雜,其實相當簡單。他的內容其實是這麼一回事:
[
{
'text' => '主索引模版的內容',
'outfile' => 'index.html',
'rebuild_me' => '1',
'type' => 'index',
'name' => '主索引'
},
{
'text' => 'RSD 模版的內容',
'outfile' => 'rsd.xml',
'rebuild_me' => '1',
'type' => 'index',
'name' => 'RSD'
},
{
'text' => 'RSS 2.0 索引模版的內容',
'outfile' => 'index.xml',
'rebuild_me' => '1',
'type' => 'index',
'name' => 'RSS 2.0 索引'
},
{
'text' => '彙整總索引模版的內容',
'outfile' => 'archives.html',
'rebuild_me' => '1',
'type' => 'index',
'name' => '總彙整索引'
},
{
'text' => '預覽迴響模版的內容',
'type' => 'comment_preview',
'name' => '預覽迴響模版'
},
{
'text' => '迴響出錯模版的內容',
'type' => 'comment_error',
'name' => '迴響出錯模版'
},
{
'text' => '彈出已上傳圖片模版的內容',
'type' => 'popup_image',
'name' => '彈出已上傳圖片模版'
},
{
'text' => '迴響清單模版的內容',
'type' => 'comments',
'name' => '迴響清單模版'
},
{
'text' => 'RSS 1.0 索引模版的內容',
'outfile' => 'index.rdf',
'rebuild_me' => '1',
'type' => 'index',
'name' => 'RSS 1.0 索引'
},
{
'text' => '樣式表模版的內容',
'outfile' => 'styles-site.css',
'rebuild_me' => '1',
'type' => 'index',
'name' => '樣式表'
},
{
'text' => '按時彙整模版的內容',
'type' => 'archive',
'name' => '按時彙整'
},
{
'text' => '分類彙整模版的內容',
'type' => 'category',
'name' => '分類彙整'
},
{
'text' => '單篇彙整模版的內容',
'type' => 'individual',
'name' => '單篇彙整'
},
{
'text' => '引用清單模版的內容',
'rebuild_me' => '0',
'type' => 'pings',
'name' => '引用清單模版'
},
{
'text' => 'paz',
'type' => 'custom',
'name' => 'module'
},
]
如果妳恰巧懂得 Perl 的話,就會明白這不過是一個雜湊參照
組成的陣列參照
罷了。不過我猜妳很有可能跟我一樣,並不懂這些外星術語(所以我也有可能說錯);不打緊,讓我們直觀地觀察一下這其中的規則:
- 這個檔案以「
[
」開始,以「]
」結束,裡面陳列著所有要建立出來的模版; - 每一個實際會被做出來的模版,都以「
{
」開始,以「}
」結束,彼此間以「,
」間隔開來; - 每一個模版的內容都按照「
'A' => 'B'
」的格式,來表示「 A 」欄位裡要填寫的內容是「 B 」。
現在好像清晰多了。如果妳再多花點心思,大概就可以更進一步地歸納出有這些欄位可以用:
名稱 | 意義 | 附註 |
---|---|---|
text | 模版本體 | 妳可以把整個檔案貼進來,包括換列 |
outfile | 輸出檔案 | 請輸入完整的檔名 |
rebuild_me | 重建索引模版時自動重建此模版 | 1 表示要, 0 表示不要 |
type | 模版的類別 | 請參考這篇文章後面的解釋 |
name | 模版名稱 | 請輸入模版的名稱 |
事情好像還沒有這麼簡單,妳還得先弄明白有哪些「模版的類別」可以用,然後每一種模版的類別也決定了那個模版裡,還能用哪些欄位。要弄清這一點,可能得要翻開程式源碼,不然就是要有足夠敏銳的觀察力。別緊張,我已經幫妳整理好了:
類別 | 名稱 | 可用欄位 |
---|---|---|
索引模版 | index | outfile, rebuild_me, name |
按時彙整模版 | archive | 無 |
分類彙整模版 | category | 無 |
單篇彙整模版 | individual | 無 |
迴響清單模版 | comments | 無 |
迴響預覽模版 | comment_preview | 無 |
迴響出錯模版 | comment_error | 無 |
引用清單模版 | pings | 無 |
彈出已上傳圖片模版 | popup_image | 無 |
模版模組 | custom | 無 |
等等,別急,還有最後一件事。就是在「模版本體」裡的東西,如果有遇到「 '
」的話(通常會是在 JavaScript 的部分),一定要記得加上「 \
」讓他們都變成「 \'
」喔!不然妳就會看到一個「找不到預設模版清單, default-templates.pl 在哪裡?
」的錯誤訊息喔!
嗯,這樣似乎就夠了呢。性急的人不妨備份之後自己先試著玩玩看,這幾天我要是有空就會把這裡的模版包上來給大家抓。