您在這裡

tpl.php 如何控制 body

LeS's 的頭像
LeS 在 2013-01-25 (週五) 16:44 發表

我正在製作一個 Full width 的網站
有幾個不同的 content type. 例如 gallery 會全寬。project 會全長
本來想用不同的 html.tpl.php 來輸出不同的 body class
但是 html.tpl.php 好像只有一個

有什麼作法是可以類似
html--gallery.tpl.php,html--project.tpl.php

或是重寫到node去控制比較完整 :p

這個比較特殊,因為如果是 content type ($node->type) ,原生的 template engine 只能與 node.tpl.php 對應。

有幾個解法,

  1. 直接利用 page.tpl.php 在 page-wrapper 的部分加上class 填入 node type 的變數,
  2. 我找到一篇可以將 page.tpl.php 的檔名,具有判斷 $node->type 的能力, http://highrockmedia.com/blog/creating-custom-content-type-page-template...
    我沒有試過,如果可行,好像還挺方便的。
  3. 我曾經從 template.php 下手寫 [THEME]_preprocess_html ,塞值到 class array 裡頭去,可參考: http://drupal.org/node/1072806#comment-5679628
    這是我將 term id 實作到 body class 的參考,你可以直接塞 $node->type 進去也行。
  4. 如果不寫 tpl,我會利用 context 模組,判斷 content type ,設定 Theme HTML 的內容,可以加上一組 body class
    這個是最為無痛的解法,而且 context 是個應用性很高的模組。

給你參考看看