[DCTPE2011] Drupal 6 的 CCK/Views運用--黎偉志
Upcoming SlideShare
Loading in...5
×
 

[DCTPE2011] Drupal 6 的 CCK/Views運用--黎偉志

on

  • 1,312 views

 

Statistics

Views

Total Views
1,312
Views on SlideShare
1,312
Embed Views
0

Actions

Likes
1
Downloads
6
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

[DCTPE2011] Drupal 6 的 CCK/Views運用--黎偉志 [DCTPE2011] Drupal 6 的 CCK/Views運用--黎偉志 Presentation Transcript

  • Drupal 6 的 CCK / Views運用 獨立工作者 黎韋志
  • 大綱 - CCK● CCK 的實務應用 - 從檔案管理說起● 跟檔案有關的模組● 檔案上傳● 影音檔案播放● 整合應用
  • 大綱 -Views● Views 樣板中的樣板● Views 裏面你該知道的三個函數● 取得某個 Views 執行結果的(總)列數● 兩個常用的 Views 模組● Attachment Display 的限制● 複雜的 Views 欄位排版技巧
  • CCK 的實務應用 - 從檔案管理說起● 一個節點 (Node) 就是一個原子 (Atom)● 禁用 Upload,只用 FileField● 硬碟很便宜,檔案重複上傳沒關係● 資訊只要最新的是對的就行了● 發現舊的資訊有錯再改就好,不需要求完美● 人會來來去去,可以維護的系統才是好系統
  • 跟檔案有關的模組 ● FileField ● Embedded Media Field   ● Transliteration ● FileField Paths  ● FileField Sources ● SWF Tools  ● Insert ● Pathologic
  • 檔案上傳 ● Transliteration ○ 將上傳(中文)檔案的檔名依照音譯來更名 ○ Windows 執行 Drupal 配合 FileField 時必裝  ● FileField Paths ○ 配合 Token 將上傳的檔案放到不同的目錄下 ■ 例如:node/[type] ○ 配合 Token 將上傳的檔案更名 ■ 例如:[filefield-fid].[filefield-extension]  
  • 影音檔案播放 ● FileField Sources ○ 若檔案太大,可利用 FTP 上傳檔案到某個目錄下,再利用 FileField Sources 模組將檔案移動到指定的目錄中  ●  影音檔案播放:SWF Tools + JW Player ○ 可以同時支援 FileField 與 Embedded Media Field ○ 在內容類型裡面的顯示設定指定 FileField 與 Embedded Media Field 欄位的顯示方式
  • 整合應用 ● 在內文中插入檔案:Insert ○ 將 FileFiled 欄位的檔案插入 Body 裡面 ○ 可配合 ImageCache 插入不同形式的圖片  ● 路徑修正:Pathologic ○ Insert 產生的路徑是絕對路徑 ○ 搬移網站時可利用 Pathologic 調整路徑 ○ 要打開 Clean URL
  • Views 樣板中的樣板 ● 每個 Views 中的 Default Display 可說是該 Views 的樣板 ○ 簡單的繼承觀念  ● 不過每次新建一個 Views 都要設定類似的 Default Display 實 在是太麻煩了 ○ 懶人的想法  ● 借用 Drupal 7 的 Entity 的觀念,可以建立 Node、User、Term 的樣板 Views ○ 用 Clone 代替 Add
  • 各種不同的樣板簡介 ● 常用的大致分成兩類: ○ list 型:撈出一群 Entity ○ id 型:撈出特定 id / name 的 Entity(常配合 Panels 做該 Entity View 的預設顯示方式的改寫)  ● 命名方式:_Entity Type(_list) ○ 以 Node 來說,就有 _node_list 跟 _node 兩種  ● 在管理上,若需要的 Views 不多,也可以只做 list 型的樣板  
  • Node List 樣板(_node_list) ● Filters ○ Node: Published = Yes ○ Node: Type = Unknown ○ Node transaltion: Content negotiation(多語系專用)  ● Sort criteria ○ Node: post date = desc  ● Fields ○ Node: nid(隱藏、非連結、不要有千分位的逗號) ○ Node: Title(做成連結)
  • Node 樣板(_node) ● 除了跟 Node List 樣板一樣的設定外,再加上底下的設定  ●  Argument ○ Node: Nid   ● Use Pager: 1 item
  • Term List 樣板(_term_list) ● Filters ○ Taxonomy: Vocabulary = Unknown  ● Sort criteria ○ Taxonomy: Weight = asc  ● Fields ○ Taxonomy: Term ID(隱藏、非連結、不要有千分位的逗 號) ○ Taxonomy: Term(做成連結)
  • Term 樣板(_term) ● 除了跟 Term List 樣板一樣的設定外,再加上底下的設定  ●  Argument ○ Taxonomy: Term ID  ● Use Pager: 1 item
  • User List 樣板(_user_list) ● Filters ○ User: Active = Yes ○ User: Roles = Unknown  ● Sort criteria ○ User: Created date = desc  ● Fields ○ User: Uid(隱藏、非連結、不要有千分位的逗號) ○ User: Name(做成連結)
  • User 樣板(_user) ● 除了跟 User List 樣板一樣的設定外,再加上底下的設定  ●  Argument ○ User: Uid  ● Use Pager: 1 item
  • Views 裏面你該知道的三個函數 ● views_embed_view($name, $display_id = default) ○ 取得某個 Views 的執行結果(輸出)  ● views_get_view_result($name, $display_id = NULL) ○ 取得某個 Views 的執行結果(陣列)   ● 參數說明 ○ $name: Views 的名稱 ○ $display_id: Display 的名稱 ○ 第三個參數以後是要傳進該 Views 的參數
  • Views 裏面你該知道的三個函數● views_get_view($name, $reset = FALSE) ○ $name: Views 的名稱 ○ $reset: 重新從資料庫中載入 Views 的設定
  • 取得某個 Views 執行結果的(總)列數 ● 取得執行結果的列數Count(views_get_view_result($name, $display_id));  ● 取得執行結果的總列數    $view = views_get_view($name);    $view->get_total_rows = true;    $view->execute($display_id);    $count = $view->total_rows;
  • 兩個常用的 Views 模組 ● Embed Views Display ○ 非特定用途的 Views Display ○ 常配合 Panels 和 Customfield: PHP code 來組合資訊  ●  Views Custom Field ○ Customfield: Markup 類似 Global: Custom text ○ Customfield: PHP code 可在欄位中插入 PHP 程式碼 ○ Customfield: Rownumber 提供欄位項次資訊
  • Attachment Display v.s. Customfield:PHP code ● Attachment Display 的限制 ○ 需在同一個 Views 裡面 ○ 傳入的參數要一致 ○ 無法在欄位層次混排資訊  ● 替代方案:Customfield: PHP code + views_embed_view ○ 可以取用不同 Views 的 Display ○ 傳入的參數可以不同(只要傳的是正確的就行) ○ 可配合 Global: Custom text 達成欄位層次的混排 ○ 可以有複雜的顯示條件
  • 複雜的 Views 欄位排版技巧1. 把需要的欄位加入欄位設定中2. 設定好這些欄位的顯示樣式3. 將這些欄位排除在顯示之外4. 最後加入 Global: Custom text ,寫出合適的 HTML 結構5. 配合 CCS 把版面做出來