20110512

[ Drupal 7 不一樣 ] Taxonomy 建立與套用到 content

[ Drupal 7 不一樣 ] 系列,專門解釋 Drupal 7 和 Drupal 6x 的版本差異及用法,以減少大家使用新版時的摩擦。

本篇將介紹 TaxonomyTaxonomy 是 Drupal 內容管理很重要的一環,新版在用法上與舊版有很大的差異,以下將詳細說明如何將 Taxonomy 和 content 連結。


你可能已經很熟 Taxonomy ,又或者不太確定,這個看起來很難的單字,簡單來說,就是 "分類" 。而被 Taxonomy 分類的對象,就是 Drupal 網站中的內容(node)。

要如何使用 Taxonomy 來將我們網站上的內容分類呢?首先,我們要了解 Taxonomy 的結構: vocabulary 和 term。 Vocabulary 是 Taxonomy 的分類名稱; term 是 vocabulary 的項目。舉例來說,我們想為網站上介紹電影的文章依電影類型分類,類型分為愛情、動作、恐怖,那麼"電影類型"可以作為 vocabulary,並包含三個 items 分別為愛情、動作、恐怖。

實際操作使用 Taxonomy 為 blog entry (來自內建 core blog module) 建立分類:

Drupal 6 Taxonomy 用法

  • 進到 Taxonomy 管理頁面:Administer→
    Content management→Taxonomy (admin/content/taxonomy)
  • 建立一個 vocabulary 來分類 blog 文章:按 "Add vocabulary" (admin/content/taxonomy/add/vocabulary),輸入以下設定(練習用)。

    項目
    Identification
    Vocabulary nameMovie
    Description(blank; default)
    Help text(blank; default)
    Content types
    Content typesBlog entry
    Settings
    TagsUnchecked (default)
    Multiple selectUnchecked (default)
    RequiredChecked

  • 儲存 vocabulary 後,回到 Taxonomy 管理頁面(admin/content/taxonomy),按 Movie 旁的"add terms", 建立兩個 terms:"Romance", "Action"
  • Taxonomy 已經建立完成,接下來建立 blog entry 並套用 Taxonomy:進到 Create content→Blog entry (node/add/blog) ,可以看到多了一個項目 "Movie" 裡面有 Romance 和 Action 可以選擇

Drupal 7 Taxonomy 用法

  • 進到 Taxonomy 管理頁面:Administer→Structure→Taxonomy (admin/structure/taxonomy)


  • 建立一個 vocabulary 來分類 blog 文章:按 "Add vocabulary" (admin/structure/taxonomy/add),輸入以下設定(練習用)。

    項目
    NameMovie
    Description(blank; default)


  • 儲存 vocabulary 後,回到 Taxonomy 管理頁面(admin/structure/taxonomy),按 Movie 旁的"add terms", 建立兩個 terms:Name 欄位分別為 "Romance" 和 "Action",其他欄位保持預設值即可。

  • 接著把我們剛剛設定的 Taxonomy 跟 blog entry 連結起來。進到 admin/structure/types ,點選 blog entry 項目旁的 "manage fields"。


  • 進到 admin/structure/types/manage/page/fields 之後,輸入以下資訊設定 blog entry 的 field 名稱和格式:

    項目
    LabelMovie
    Namefield_movie
    FieldTerm reference
    WidgetSelect list


  • 輸入完成之後記得按下儲存按鈕,會進到以下頁面,選擇剛剛新增的 field 中的資料來源,也就是我們所建立的 vocabulary:

  • 再按下儲存按鈕,會進到輸入這個 field 的其他資訊,保持預設設定即可,儲存:

  • 現在 Taxonomy 和 blog entry 的連結已建立完成,接下來到新建立一篇 blog試試(node/add/blog)。若找不到 blog entry 這個 content type,注意是否已啟用 blog module。在建立 blog 的頁面可以看到多了一個 "Movie" 欄位,並有"Romance"和"Action" 兩個選項,之後每篇blog 都可以選擇 movie 分類了。



結論

Drupal 6 在建立 Taxonomy vocabulary 的同時,就指定了 content type (以剛才的範例來說就是 blog entry),因此不需要像 Drupal 7 另外設定 content type 和 vocabulary 的連結;然而 Drupal 7 這樣的作法其實更具彈性,我們只需要設定一組 vocabulary 就可以同時套用到多種 content types ,例如 blog entry 和 basic page 皆可以使用 "Movie" 分類,如此一來,不但管理人員方便(只要建立一組 vocabulary),使用者更可以利用 term 找到不同 content type 的資訊。

2 則留言:

匿名 提到...

因為您的這篇文章,我終於成功設定好分類在drupal7了,多謝。

李可暘 提到...

@匿名
謝謝你特地留言告訴我這篇文章有幫到你:)
有時候寫文章都不知道有沒有人看,
看到你的回應很開心。

張貼留言