Sunday, March 1, 2009

什麼是 views

什麼是 views
-

* Drupal

JOE — Thu, 05/31/2007 - 14:40

Drupal 的另一個殺手級工具: views
相比cck, views 的概念簡單得多
但使用複雜得多

一個Drupal 的site,
由很多很多nodes 組成
但很多時候, 一個頁面總不會只有一個node
例如首頁, 當然要有列表列出最新的nodes
將nodes 用某條件 (如更新順序排列) 組織起來就是views 的工作
但組織nodes 的方法何其多
而且views 又不知何, 放了一隻腳到顯示的控制之內
令views 的介面複雜起來
成為Drupal 之內最複雜的模組

一個view 內分
page, block, fields, arguments, filter, exposed filters, sorting
六個大分類
前三個和顯示相關
後四個是組織nodes 的方式
因為顯示和控制混在一起
設定views 便得小心點

先處理好控制
再處理顯示

arguments, filter, exposed filters, sorting 是一組用邏輯 AND ("和") 串成的選擇
例如有node 1到10
argument 只選1到6
filter 選3到9
exposed filter 選 4到7
最後的結果便只有 4到6 這三個node

arguments 是一個利用url 選擇node 的方式
例如 node/1
這個網址path 有個"1" 指定了只顯示node id 為"1" 的node
這種選擇的方式稱為arguments
(但這個例子是由drupal 內核提供, 非views)
又例如你可以設定 url 為 year/2007
便會選擇更新日期為2007 年的nodes
你可以看成是一個條件, 而這個條件是由url path 提供的

filter, 顧名思義
一個內建的選擇器
一般會有一個filter "己發佈" 的要求
令選出來的都是"己發佈" 的node
或可以限制taxonomy terms 在某一或某幾個terms 之內
做出一個"教學專用頁", "日記專用頁"等等

exposed filter
從filter 的選擇器中
選出一個或多個filter
將選擇用select list 的形式 開放給使用者自行篩選

sorting
怎樣將結果排序
更新時間順序? 逆序?
id?

完成好控制後
決定你的結果怎樣顯示
頁面形式或作一區塊都可以
分別設定page 或(和)block
它們都有一個select list, 有full node, teaser view, list view, table 選擇
就是這部份混合了顯示方式
full node, 使用那node 的content-type template顯示 (如有)
teaser view, 使用views theme wizard 的teaser template (如有)
list view, 一個簡單的列表(unordered list), 使用views theme wizard 的template (如有)
table view, 也很直觀
要留意的是table, list view 是要選擇要顯示的fields
只選了id 就只會有id 欄

有關views 的顯示部分, 特別是templates
因為複雜得多,
不能放到"初始"一類, 所以另文再詳述

No comments: