November 18, 2003

傳送至 Kindle
互動式隨選列印/另存成 PDF

[活字印刷]自訂 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 的話,就會明白這不過是一個雜湊參照組成的陣列參照罷了。不過我猜妳很有可能跟我一樣,並不懂這些外星術語(所以我也有可能說錯);不打緊,讓我們直觀地觀察一下這其中的規則:

  1. 這個檔案以「 [ 」開始,以「 ] 」結束,裡面陳列著所有要建立出來的模版;
  2. 每一個實際會被做出來的模版,都以「 { 」開始,以「 } 」結束,彼此間以「 , 」間隔開來;
  3. 每一個模版的內容都按照「 'A' => 'B' 」的格式,來表示「 A 」欄位裡要填寫的內容是「 B 」。

現在好像清晰多了。如果妳再多花點心思,大概就可以更進一步地歸納出有這些欄位可以用:

可用的欄位設定
名稱意義附註
text模版本體妳可以把整個檔案貼進來,包括換列
outfile輸出檔案請輸入完整的檔名
rebuild_me重建索引模版時自動重建此模版1 表示要, 0 表示不要
type模版的類別請參考這篇文章後面的解釋
name模版名稱請輸入模版的名稱

事情好像還沒有這麼簡單,妳還得先弄明白有哪些「模版的類別」可以用,然後每一種模版的類別也決定了那個模版裡,還能用哪些欄位。要弄清這一點,可能得要翻開程式源碼,不然就是要有足夠敏銳的觀察力。別緊張,我已經幫妳整理好了:

模版的類別
類別名稱可用欄位
索引模版indexoutfile, rebuild_me, name
按時彙整模版archive
分類彙整模版category
單篇彙整模版individual
迴響清單模版comments
迴響預覽模版comment_preview
迴響出錯模版comment_error
引用清單模版pings
彈出已上傳圖片模版popup_image
模版模組custom

等等,別急,還有最後一件事。就是在「模版本體」裡的東西,如果有遇到「 ' 」的話(通常會是在 JavaScript 的部分),一定要記得加上「 \ 」讓他們都變成「 \' 」喔!不然妳就會看到一個「找不到預設模版清單, default-templates.pl 在哪裡?」的錯誤訊息喔!

嗯,這樣似乎就夠了呢。性急的人不妨備份之後自己先試著玩玩看,這幾天我要是有空就會把這裡的模版包上來給大家抓。

(+) 於 所發表 | Eng. Version (英文版) |
[創用 CC 授權條款]
自訂 Movable Type 的預設模版〉由 Jedi 製作,所有內容如無特別聲明,一律以創用 CC 姓名標示 3.0 台灣版授權條款釋出。
相關文章:
    歷史上的今天:
    西元 2011 年:
    迴響
    [ 1 : 靜態鏈結 ]

    有個問題請教:
    我依這種方法做了, 但做出來的中文部份全部都成了亂碼,
    是不是說在default-templates.pl之中不能有中文?

    由 jeph 發表於 December 19, 2003 06:08 AM
    [ 2 : 靜態鏈結 ]

    啊! 我找到問題所在了. 在default-templates.pl 的中文必須是utf-8, 我原來是big-5, 所以會變成亂碼. 改成utf-8再貼到default-templates.pl 就沒問題了

    由 jeph 發表於 December 19, 2003 09:13 AM
    [ 3 : 靜態鏈結 ]

    大哥我想要个模版背景`
    你可以去看看我的网站我的网站简直太难看了`
    所以就是想 请你帮我弄个模版拉我的网站是www.chenchao.9629.com
    联系方式chenchao_1988@mail.china.com

    陈超 發表於 August 4, 2004 09:20 PM
    [ 4 : 靜態鏈結 ]

    我想知道那里有模版

    孙新亮 發表於 April 29, 2006 11:04 PM
    給我迴響吧!
    個人資訊








    是否記住個人資訊?



    請依上圖輸入檢核碼:
    迴響





    Jedi.org: 部落格 | Weblog | 三太子 | 討論 | 網頁親和力 | 深入親和力 | 簡報原力:AV | 履歷 | + | @ | Flickr | Lytro | tumblr | NSFW