
開始想要自定版型的時候,只要是看到一些介紹或教學的文章,總是會從版型引擎開始講起,然後阿舍看著看著就走進五里迷霧去了,感覺好像怎麼看都不會懂似的,不過,在阿舍鍥而不捨的努力之後,終於有所瞭解,原來只要搞定 page.tpl.php,就可快速的排出自已的版型哩 ! ....呵....呵。
雖然在製作版型時,可以用與不用引擎,而引擎也有分為好幾種,但是,依目前的情勢看來,在 Druapl 裡,PHPtemplate 已經是內建支援的引擎了,所以,其實也不用想太多,就學 PHPtemplate 就單純多了,而 PHPtemplate 就是由一系列的 tpl.plp 範本檔所組成的,只要好好的調整這些 tpl.php 檔及 CSS 檔,就可以設計出客製的版型,當然啦 ! PHPtemplate 也有程式設計的部分可以做更進階的設計,但是在不自行撰寫程式的前提,還是可以容易達到客製的目的。
在眾多的 tpl.php 檔中,最主要而且重要的,就是 page.tpl.php,這個檔不是用來編排 Page 這種內容類型的版面的 ( 阿舍一開始一直是這樣以為的...=*=!! ),而是用來編排 Druapl 網站的頁面的,什麼是 Druapl 網站的頁面呢 ? 以阿舍的站來說好了,各位大德是不是有看到上面有網站名稱和主要選單,左、右有側欄,下面則是頁尾資訊,然後各位大德在切換頁面時,剛剛提到的東西通通不會動,就定在那邊了,是啊 ! page.tpl.php 就是在安排這些東西位置的範本,在 page.tpl.php 安排好了,Drupal 就會依據這個範本來產生網頁。
那 page.tpl.php 只管剛剛提到的東西,那中間的那一塊誰管 ? 這個就要看是顯示什麼樣的內容囉 ! 如果是顯示節點 ( Node ) 內容,那麼就會用 node.tpl.php 來當範本,如果是回應內容,那就會是用 comment.tpl.php 來當範本,這些範本檔種類繁多,想知道有那些,請各位大德到下面的網址去看看囉....
Drupal 5
http://drupal.org/phptemplate
Drupal 6
http://drupal.org/node/190815#template-suggestions
剛剛前面有提到,用 page.tpl.php 可以安排網頁的版面,可是要怎麼安排呢 ? 其實,所有的 tpl.php 檔都是在編排 Drupal 所產生的字串變數,例如,右欄的變數是 $sidebar_right,而網頁中間的內容是 $content,所以,只要在 page.tpl.php 裡編排這些字串變數的位置,再加上 CSS 的配合,就可以簡單的編出各位大德想要的版型哩 ! 不過 Druapl 5 和 Drupal 6 的串變數會略有不同,所以各位大德要注意比較一下,詳細的可用變數,請參考下列網址..
Drupal 5 的 page.tpl.php 可用變數列表
http://drupal.org/node/11812
Drupal 6 的 page.tpl.php 可用變數列表
http://api.drupal.org/api/file/modules/system/page.tpl.php/6
再來說一下 page.tpl.php 的內容,雖然說這個檔的附檔名是 .php ,但是其實內容是 HTML 碼比較多,就跟在編 HTML 的網頁差不多,所以只要將 Drupal 產生的字串變數,放到適當的位置,在產生網頁時,Drupal 產生的資料就會放到適當的位置去。
另外,各位大德會發現,整個 page.tpl.php 的內容有一大半的 DIV 標籤,沒錯,透過 DIV 標籤的運用,就可以用 CSS 來控制這些被 DIV 標籤所包圍的項目,因此,各位大德需要將所需的 CSS 放到 style.css 檔,這樣就能組合出很多效果哩 !!
以上是大概說明一下 page.tpl.php 的架構與組成,希望讓各位大德對版型的修改能比較快的有概念。
- 增加新的回應
- 瀏覽次數: 18893
Hello zzxworld 兄,
阿舍認為,用 page.tpl.php 可以建立出 Druapl 頁面的框架,但是 page.tpl.php 本身可能不太適合稱為是一個框架,好像和阿舍所知的定義1不一樣。
一點想法,供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
现在我遇到一个问题,就是我不用内置的regions 比如你上面提到的$sidebar_right 我需要custom regions 但是我用的是drupal 6暂时还不知如何添加。
我目前的做法是在mytheme.info中添加了相关的regions 然后在page.tpl.php中相应的修改为<?php print $custom-regions; ?> 但是最后在管理block的时候发现会用黄色标记所添加的区域 但却不能进行任何操作。。。(内置的$content之类我并没有添加)
Hello dovis 兄,
阿舍去查了一下,在 Drupal 6 的自定 region 中,有很多都是因為 Cache 的問題所引起的,dovis 兄可以參考下面這篇文章的說明試試。
Clearing cache does not immediately reload theme's .info file
http://drupal.org/node/239958
也有些大德說可到 adminsiter -> performace > 按 clear cache data 的按鈕來清除,不過,好像不一定有效,但是值得一試哩....
另外,再來的可能,就是用來修改的那個版型的問題,可以考慮換個版型來試試看囉 !!
以上供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
Hello dovis 兄,
阿舍剛剛試了一下,好像跟 dovis 兄有相同的問題,阿舍新增一個 region 叫 contemt top ,在 .info 檔裡是這樣子設的..
regions[content_top] = Content top
( 其它 regions 略...)
結果有在區塊的管理畫面上看到,但是怎麼選,那個 content top 區塊就是空的,選不進去...
後來阿舍改成這樣,結果就正常了,所以名稱中就不要用 "-" 或 "_" 會比較安全吧 ...( 這時的阿舍突然的恍然大悟,瞭了,為何 $sidebar_left 到了 Drupal 6 就變成 $left ,原來是這醬子啊....)
regions[contenttop] = Content top
供參囉 !! ^^=。
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
非常感谢阿舍兄的详细解答,其实我是想重新制作个theme,因为默认的theme的版型都太单调了(都是左中右结构)。所以我想重新custom regions 但是发现难度挺大的,因为我还没找到在drupal 6版本下的方法 好像在5版本中需要在phptemplate.php中修改。。。
不知道 阿舍兄能否给几个关于首页复杂排版的解决方案?最好是drupal 6的 在此先谢谢了~
Hello dovis 兄,
阿舍先寫了一篇自定 Region 的說明,請 dovis 兄參考一下,Drupal 版型的關鍵在 page.tpl.php 和 style.css 檔,阿舍已經有打算寫一篇 page.tpl.php 的編修說明,不過.....這個東西有點多.....所以要多一點時間....呵呵...!!
阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw
阿舍,不知道是否有認識的人可以介紹接美化drupal網站的工作呢?
Hello Wilson兄,
阿舍有個朋友是做網站美工的,不過,不熟 Drupal 哩 ! 有需要再跟阿舍說一下囉 ! ^^=。

如此说来,page.tpl.php就像是一个大框架