引用功能

### Movable Type 使用手冊：引用功能

« 目錄

- 引用功能

- 設定引用功能
- 使用引用功能
- 引用通告格式
- 參考文件

# 引用功能

Movable Type 的引用功能讓不同的網誌間得以施用點對點的溝通模式。想像一下妳在某個用 Movable Type 所建立的網誌上，寫了一則關於妳剛看過的電影的文章；然後另外有一個 MT 網誌客讀了妳的文章，然後想要參考妳發表的文章，也來寫一則文章。雖然她可以直接對妳的文章發表評論，但是這麼一來，她所發表的東西就沒辦法保存在她自己的資料庫或網站上了。

藉由引用功能，其他的網誌客就可以自動發送一份通告到妳的網誌，指出她剛寫了一則參考了妳原始文章的新文章。這個機制能夠實現兩件事：

1. 在妳自己的站台上，可以自動列出所有從妳這邊參考特定文章的其他站台；因此妳的讀者們就可以繼續去閱讀別的網誌上的回應。

2. 此外這也能在雙方的文章內容中，提供一個確實而清楚的鏈結；而不僅是某種像是參考日誌的不明確鏈結，得依照其他動作（像是有人按下連往妳的文章項目的鏈結）而定。

引用功能並不僅是針對文章項目而已，還可以拿來跟網誌裡的特定類別建立起鏈結；每當妳在該類別中發表了新文章的時候，這個網址就會接到文章發表的通告。藉由這樣的功能，遠端的站台就可以隨時盯緊其他的參考站台。

舉例來說，如果妳有個關於 Perl 的網站，妳也許會想要陳列一份其他網誌上關於 Perl 的文章的清單；這個時候如果有了引用功能，就可以讓其他站台把通告送給妳的網誌上某個特定的類別。於是不論那個時候有新的文章被發表了，妳都能夠得知。

這僅僅是其中一種引用功能的用法而已；引用功能本身其實是網誌間的點對點通訊架構，可以拿來追蹤跨網誌間的討論，也能用來陳列遠端的內文，或者是模擬出賓客授權等。實際上引用功能的技術層面相當地簡單：當妳想要告訴某個遠端站台甚麼事的時候，就送出一個通告給對方。這個通告的格式（其實是簡單的 HTTP GET 需求）將在後面的段落討論到。在 Movable Type 所採用的引用功能中，我們在類別通告裡加入了密碼保護，還有禁用 IP 、自動化 RSS 輸出以及電子郵件通知書等功能。

就另一方面來說，我們不僅要讓引用功能好用，更要讓其他不是 Movable Type 的使用者也可以用。我們企圖讓其他的網誌工具也把這樣的功能整合進去，這也就是我們為什麼要在後面的段落中記載著通告格式，以及為什麼我們要讓基本的架構盡可能的簡單。如果妳有任何的問題，也歡迎隨時寄信給我們 (trackback@movabletype.org) 。

## 設定引用功能

如果妳是 Movable Type 的新使用者，那麼引用功能的標籤應該都已經在預設的模版裡了，所以妳一安裝完 Movable Type 就應該可以開始使用這項功能了；因此妳可以直接跳過下面幾個步驟，直接到步驟 5 。

如果妳已經是 MT 的使用者，妳可能要先設定妳的模版，以處理引用通告；請從步驟 1 開始讀。

1. 建立一個引用清單模版。
   在列出模版中編輯引用清單模版，並且從預設的模版裡開始這個模版的本體。妳可以在這裡找到：

       http://www.movabletype.org/default_templates.shtml#trackback

2. 更新妳的樣式。
   文章項目的引用通告會在某個彈出式視窗中被顯示出來，就跟顯示文章項目的評論清單很像。妳在步驟 1 所加入的預設模版中，會用到一些 2.2 版纔開始有的 CSS 樣式。如果妳本來用的樣式是某個從 Movable Type 抓來的預設樣式的話，妳可以從下列這個地方找到新版的樣式；請複製並貼上：

       http://www.movabletype.org/default_styles.shtml

   如果妳用了自己修改過的樣式，那麼妳可以修改引用清單模版來搭配妳自己的樣式，或者是在妳的樣式裡新增 .trackback-url 、 .trackback-body 和 .trackback-post 這三個 CSS class 。

3. 在妳的主索引模版中加入引用功能碼。
   在妳的主索引模版的 <script> 區段中加入下列程式碼：

       function OpenTrackback (c) {
           window.open(c,
                       'trackback',
                       'width=480,height=480,scrollbars=yes,status=yes');
       }

   然後在妳的 <MTEntries> 標籤裡面，加入這些東西來讓每一則文章項目都顯示引用功能清單的鏈結：

       <MTEntryIfAllowPings>
       | <a href="<$MTCGIPath$>mt-tb.cgi?__mode=view&entry_id=<$MTEntryID$>"
       onclick="OpenTrackback(this.href); return false">TrackBack
       (<$MTEntryTrackbackCount$>)</a>
       </MTEntryIfAllowPings>

4. 在索引和彙整模版中加入引用通告資料。
   在妳的主索引模版以及分類彙整模版和時序彙整模版中，直接在主要的 `<MTEntries>` 標籤之後加入下列這些標籤：

       <$MTEntryTrackbackData$>

   然後在妳的單篇彙整模版裡，在任何妳想要的地方也加入一樣的標籤：

       <$MTEntryTrackbackData$>

   當妳重建的時候，這些標籤就會把必要的資訊也放進妳的檔案裡，因此 Movable Type 的小書籤功能就可以加以分析，而得到這些文章項目的引用功能以及通告網址。

5. 建立可用引用功能的小書籤。
   可用引用功能的小書籤其實就是新版本的標準 Movable Type 小書籤，其中多加了一項功能：當妳用了小書籤來發表到妳的網誌時，它會在妳的瀏覽器裡尋找目前這一頁，看看裡面是不是有任何文章項目可以使用引用功能。（事實上它正是在使用我們在步驟 4 所加入的標籤來取得資訊）。如果有的話，小書籤就會讓妳從那一頁中啟用了引用功能的文章清單中選一個，來讓妳發表新文章的時候同時送出通告。這一切會自然地發生，就好像妳手動把通告網址填到通告網址對話盒後所發生的事一模一樣。

   透過這樣的功能，可以讓其他站台在使用引用功能時更簡單順手。

   如果妳已經在使用小書籤了，那麼妳祇需要用跟現在一樣的欄位，再額外加上引用項目欄位來重建它。如果妳還沒有在用小書籤，那麼妳可以現在就做一個出來。

   首先到主選單，然後按下設立小書籤，接著遵照祇引來建立一個新的小書籤，同時確定包含了引用項目欄位。

6. 這樣就好了！
   現在妳可以開始使用這個引用系統了。

   妳可以先用妳的瀏覽器連到下列這個網址，來測試一下妳的小書籤功能：

       http://www.movabletype.org/trackback/

   當妳的瀏覽器載入這個頁面之後，按一下妳的 Movable Type 小書籤。在它所開出的視窗裡，妳應該可以在最上面標示有選擇要通告的引用文章項目：看到一個下拉式選單。這個選單會包含有前述頁面裡每一個可以使用引用功能的文章項目清單。

   如果妳看到這個選單了，那麼妳的小書籤看來就是正常運作的。也就是說，妳已經可以快樂地使用引用功能囉！

   如果妳沒有看到那一列，那麼請執行 mt-check.cgi 來檢查一下妳是不是有安裝過 LWP::UserAgent 模組；這個模組是使用引用功能所必須要有的。

## 使用引用功能

引用功能一般有兩種用法：在不同站台的文章項目間通訊，或者是在不同站台的類別間通訊。除此之外，在這兩種用法裡妳也都可以扮演內容產生者 -- 也就是文章項目是妳所發表的 -- 或扮演內容取用者 -- 也就是妳會得到一分清單，上面記載著前來引用的項目（有可能會是文章項目也有可能會是類別）。

- 文章項目到文章項目通訊
  如果妳是內容取用者：當妳發表新文章的時候妳得允許別人發送通告過來，所以要核選允許通告的核選框。引用網址會列在『引用功能』彈出式視窗中，同時也會用 <link> 標籤顯示在單篇彙整裡，所以可以被 Movable Type 小書籤自動取得。

  如果妳是內容產生者：當妳發表新的文章項目時，如果妳想要發出通告給其他站台上的某則文章項目，妳可以用稍早我們在步驟 5 設立引用功能提到的 Movable Type 小書籤，或者手動把那個站台的引用通告網址填入新增/編輯文章項目畫面中的通告網址對話盒裡。

- 類別到類別通訊
  如果妳是內容取用者：妳可以指明某個類別『允許通告』。這麼做會為這個類別設立起一個引用項目，因此其他站台就可以把通告送到妳的站台，讓妳知道有個新的文章項目呼應了這個類別。這些通告也可以顯示在妳的站台上，讓妳得以建立出這些相對應物件的集散地。

  如果妳是內容產生者：妳可以把一連串的引用網址連結到某個分類上，每當妳在這個分類中發表新文章的時候，這些網址就都會收到來自這個新文章的引用通告。

當任何一份引用通告被送到妳的站台上時，除了會被儲存在 Movable Type 資料庫外，系統也會更新該引用項目的 RSS 部分，然後把最後產生的 XML 檔案存放在妳的本機彙整路徑，其檔名會是 ID.xml ；這裡的 ID 乃是那個引用物件的數字型 ID 。

## 引用通告格式

引用功能在通告中使用了 REST 模型，所以每一個引用項目都會有唯一的網址（因為他們的數字型 ID 互不相同）。

- 送出通告
  送往通告網址的需求是藉由 HTTP GET 所產生的，看起來通常會像這樣：

      http://foo.com/mt/mt-tb.cgi?tb_id=ID

  這裡的 `ID` 也就是該引用項目的數字型 ID 。然後在這個網址尾端再附加上其他需求參數，就像這樣：

      http://foo.com/mt/mt-tb.cgi?tb_id=ID&title=標題&url=網址

  之類的。可能會用到的查詢參數包括有： title （項目標題）、 excerpt （項目的文摘；如果超過 255 個字的話，就會被刪到祇剩下 255 個字，然後後面再加上 `...` ）、 url （項目的靜態鏈結）還有 blog_name （文章項目發表處的網誌名稱）。

  通告的回應會以簡單的 XML 格式來表示，來啟用應用程式等級的錯誤偵測（例如 HTTP 等級的錯誤就會在此被傳回：如果某個引用網址指向伺服器上不存在的位置，那麼這個通告就會傳回一個 `404` 錯誤）。

  成功的通告會得到像是這樣的回應：

      <?xml version="1.0" encoding="iso-8859-1"?>
      <response>
      <error>0</error>
      </response>

  失敗的通告則會得到這樣的回應：

      <?xml version="1.0" encoding="iso-8859-1"?>
      <response>
      <error>1</error>
      <message>The error message</message>
      </response>

  當然，其他程式可能會逐漸加入其他需要的欄位，但是這個回應的 XML 結構應該都要保持一致。

- 取得通告
  要取得特定引用項目的通告清單，需要用到下列格式的網址：

      http://foo.com/mt/mt-tb.cgi?tb_id=ID&__mode=rss

  這裡所用到的 `ID` 也是引用項目的數字型 ID 。

  這種需求的回應可能是跟前面提到的需求相同格式的錯誤訊息，也有可能是一連串用 RSS 排版過的引用通告清單，並且被包在 `<response>` 標籤裡。

  例如：

      <?xml version="1.0" encoding="iso-8859-1"?>
      <response>
      <error>0</error>
      <rss version="0.91"><channel>
      <title>TrackBack Test</title>
      <link>http://this.is/the/trackback/item/link/</link>
      <description>Description of the TrackBack item</description>
      <language>en-us</language>
      <item>
      <title>TrackBack Demo</title>
      <link>http://this.is/the/permalink/</link>
      <description>Excerpt</description>
      </item>
      </channel>
      </rss></response>

## 參考文件

以下是一些關於引用功能相關元件的文件：

- 引用功能標籤
  - <MTPings> 和相關的標籤
  - <$MTEntryTrackbackCount$>
  - <$MTEntryTrackbackData$>
  - <MTEntryIfAllowPings>
  - <$MTEntryTrackbackLink$>
  - <$MTCategoryTrackbackLink$>
- 新增/編輯文章項目畫面的引用欄位
  - 允許通告
  - 通告網址
  - 先前送出的通告
- 編輯類別畫面的引用功能欄位
  - 要通告的引用網址
  - 接受送進來的引用通告
- 禁用 IP ：禁止使用者發出引用通告到妳的站台
- XML-RPC 介面： mt.getTrackbackPings

Copyright © 2001-2003 Six Apart. All Rights Reserved.