用 views 建立 「按日期排序的文章清單」


新增 view 如果你對內建的 「最新內容」 區塊不滿意, 希望可以微調 「按日期排序的文章清單」, 那麼就需要安裝 views 模組。 (另外也需要安裝 ctools 模組, 因為 views 需要用到它。) 下載模組 drush dl views ctools 並且在 「模組」 底下, 把 「Views」 跟 「Views UI」 勾選起來。 記得按下 「儲存設定」, 才會真的啟用。

首先進入 「架構」 => 「views」 => 「新增 view」。

  1. 我替新增的 view 取名為 「文章清單 (按時間排序)」, 填在 「檢視名稱」 欄位。
  2. 「機器可讀名稱」 建議取一個有意義的代碼, 例如我取的是 chrono_posts 表示按照時間排序的文章 (將來可能有 chrono_comments 表示按照時間排序的留言)
  3. 「of type」 可能要選一下。 一般正常運行的網站可能是選 article 也就是具有時間性的文章; 不過我還在實驗階段, 想要讓一起架站的隊友注意到任何一篇新增的文章/基本頁面/相片/... 所以選 「all」。
  4. 建議 「create a page」 要打勾。 這樣當訪客按下 「更多文章...」 的時候, 才可以把他帶到文章清單的頁面; 而這個頁面的名稱, 就填在 「路徑」 欄裡。
  5. 「Create a block」 也要打勾, 這樣才可以把 「最新文章」 清單鑲嵌進其他頁面去。

填好之後, 你可以直接按下 「儲存及新增欄位」; 也可以按下 「儲存內容類型」, 再從 「架構」 => 「views」 => 進去編輯剛剛新增的內容類型 「文章清單 (按時間排序)」。

如同上面看到的, 新增一個 view (如果你照我的建議勾選的話) 其實是同時新增了一個頁面 (page)、 一個區塊 (block)、 一個 rss feed。 這三項 (稱為三個 displays) 可以分別獨立設定; 不過對我來說, 暫時先都用相同的設定就好了。 我選擇在 「Block」 這個 diaplay/分頁工作; 但是以下大多數的設定, 會自動在其他的 display 生效。

勾選要顯示的欄位 我在 「欄位」 右邊點選了 「新增」, drupal 又多跳出一層表格讓我填寫。 我勾選了四個欄位:

  1. 內容: Has new content
  2. 內容: 標籤 (Tags)
  3. 內容: 發表日期
  4. 內容: 類型

設定 「發表日期」 用自訂的簡短格式來顯示 然後按下 「套用 (所有顯示)」。 接下來 drupal 會逐頁詢問你要如何設定每個欄位。 (每頁針對一個欄位) 我把每頁的 「建立標籤」 都取消掉 (這裡的 「標籤」 是指該欄位要不要有 label 而不是指 tags)。 其中在設定 「標籤 (Tags)」 欄位的頁面上, 我在 「樣式設定」 底下勾選了 「Customize field HTML」 並選擇 「EM」, 意思是: 要用斜體字顯示文章標籤; 在設定 「發表日期」 欄位的頁面上, 我把 「日期格式」 選為 「自訂」, 並且填入 「m/d」, 意思是: 日期欄位只顯示 「月/日」。

新增 view 按一下 「update preview」 會發現上述欄位都出現在預覽當中。 不過每一筆 (每篇文章) 都佔掉好多畫面 -- 因為每個欄位各佔一列。 找到 「格式」 粗體字底下的 「顯示」, 點下 「設定」, 在 「Inline fields」 底下, 勾選所有欄位, 並且填入 「|」 作為 「分隔符號」。 按下 「套用」 之後, 看到預覽畫面變得比較清爽了 -- 每一筆 (每篇文章) 只佔一列。 記得要按 「儲存」 才會生效。

另外, 在編輯 view 的頁面下, 我自己還多做了一些微調, 請斟酌採用:

  1. 「欄位」 粗體字旁邊的 「新增」 旁邊的下箭頭點一下, 可以選取 「重新排列」, 調整欄位順序。
  2. 「更多連結」 打開。 當頁面或區塊無法一次顯示所有文章的時候, 訪客才可以看到更久以前的文章。
  3. 「使用分頁」 我將 「Expose items per page」 及底下的許多選項打開, 允許訪客自己設定每頁要顯示幾筆資料。

要注意的是: 大部分的設定, 對頁面 (page)、 rss feed、 區塊 (block) 同時都會生效。 如果只想對其中一項設定, 就要點一下各個編輯頁面最上方的 「for all displays」 改選其中一項。 例如我的 「使用分頁」 選項, 在 page 底下顯示 20 筆; 在 block 底下則只顯示 5 筆。