版型所需的基本元素:
- 定義一個資料夾 (例如:mytheme)
-
內裏包含與資料夾相同名稱的 .info (例如:mytheme.info)
關於 .info 如何定義,不在此談,你可以打開任一 Drupal 版型看看或官方簡介
(做的時候,打開核心版型複製 & 貼上,沒有人會刻意去記吧 ?)
Drupal 有子版型概念,主要繼承主版型的元素。
template.php 是什麼?
在 Drupal 初始化很早期就會載入,你能透過此檔案來修改由 Drupal 模組輸出的數據。
開發 Drupal,必需要知道它有 Hook 這個基本機制。簡單來說,當你看到任何 hook_ 開始的 function,都能另行透過模組來進行修改,如:
hook_menu
Drupal 核心在 BLOG 模組中可以自定一個,Drupal 載入時會載行此 function,並返回一個頁面標題是 blogs 的頁面。
function blog_menu() {
$items['blog'] = array(
'title' => 'blogs',
'page callback' => 'blog_page',
);
return $items;
}
今天,你不喜歡這個標題,你第一時間想改 Blog 模組程式嗎? 這是大多現今編程都不鼓勵做的,會破壞結構,不便於日後管理,我們應該重新自定一個新的 Function 來修改:
function mymodule_menu() {
$items['blog'] = array(
'title' => 'new title',
);
return $items;
}
在 teamplate.php 中也是一樣,但沒有 Modules 自由度這樣大,只有部分 FUNCTION 能覆寫,是那一些?現在告訴你 :)
能用的 FUNCTION:
-
所有 Proprocess & Process (
template_***) - 所有 theme_ 開頭的 functions
- 所有 alter function (Menu Alter 除外)
- 別忘掉 hook_theme (但因為有了 Alter,這個幾乎可以忘掉)
改寫版型
大多預設版型中,你都看見 page.tpl.php, node.tpl.php。還有一堆 TPL 檔案!能在哪找到?
答案是: modules/system 資料夾中
輕鬆複製到版型下及清除 CACHES 便能正常使用。
也能為特定頁面進行不同的設計,比如:主頁 (新增一個 page--front.tpl.php 檔案,及緊記:清除 CACHES)
哪知道是 page--front.tpl.php 還是 page--back.tpl.php 呢?
這裏能找到一點參考:http://drupal.org/node/1089656
當然,硬記不是方法。打開任一版型,貼上這句看看便知:debug($theme_hook_suggestions);
也可以使用 Devel Themer 來協助開發
從哪一版型開始學起....?
很多人推介 Zen 版型,而我例外。Zen 是一個很完整的版型,整個架構過於複雜或離開了 CORE 原始的一些元素了,並不合適初始上手的人去看。一開始,還是先從 CORE 中的 Bartik 或 Garland 出發較好。
上手後,你除了可以看 Zen 外,Tao 版型也是很好的 (個人推薦)。
子版型要用還是不用?
從理想化的程序角度,子版型能方便管理,但實際應用中,如果你的版型都是作大幅度修改,能享受到的好處很少。以我個人經驗談,修改核心版型很少用到子版型,但 D7 Seven 版型,就會了,因為大多只為局部小改動。
日後時間及能力許可,會深入每一點分享 :)

寫下您的回覆