Drupal 版型製作需了解的事與掌握的技巧

版型所需的基本元素:

  • 定義一個資料夾 (例如: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:

改寫版型

大多預設版型中,你都看見 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 版型,就會了,因為大多只為局部小改動。

 

日後時間及能力許可,會深入每一點分享 :)

寫下您的回覆

電子郵件不會公開