1. Drupal cck contemplate theming 技巧, 教學

隨著持續的對views, cck, contemplate, template, css 等等的theming 方面的研究
發覺drupal 的theming 的確很自由
起碼比一般的CMS 強得多(無謂點名)
上面寫出的模組或技術都可以幫你定義表示方式
但它們職權分散, 部份功能有重疊
而且同一種表示方式可以有多種code+css 組合來實現
稍為不留神便連自己都忘記了是從那裡修改
令開發人員左改一點右改一點
令維護工作百上加斤

但其實只要分清模組之間的職權, 工作
理清theming 的思路都不算太難
加上Drupal6 之後cck 會內嵌到Druapl core
會令當中的關係更加清晰

註1: 以下假設你已經對cck, template和views 有基本使用的認識
註2: 以下的template 指 node-contenttype.tpl.php (或名為content type template),
可以對特定的content type 作版面修改, 非指template.php
註3: 我不敢說我介紹的這個分類方式是最正宗, 但已經是我多年的html css 經驗綜合的

先針對cck theming,
cck 自己只應該當作一種資料集合的儲存
各種field 模組(imagefield, link, email...) 都只為了豐富資料集合的種類
cck 的工作是集合需要的fields 之後, 集中到作為一個node 處理

而contemplate, template, css 就會負責顯示node部分
至於contemplate 和 template 之間,
contemplate 和template 都只對某一個指定的content type 起作用
他們的分別, 在於被修改的對象

contemplate 只可修改 cck 新增的fields
例如imagefield, textarea, user_ref, node_ref......
改動什麼都可以, 加減tags, class, id, fields 之間的排位
分成多少行, 兩排, 三排等等(圖一)
但不可以改動原有的 node title, author, submit time,
body , comment 的出現位置之類的部分
這些都留了給template 負責
node.tpl.php 中應該就 submitted time, content, node title 等排版(圖二)
設定相關的class, id, tags.

又, 要留意,
以上的這些改變都對用views 做的table, list view 的情況完全沒有影響
full node, teaser view 等便有影響

明日再談views 的theming

AttachmentSize
Image icon cck1.jpg28.02 KB
Image icon cck2.jpg29.88 KB
Google