Translate


訂閱服務...

線上使用者

目前共有 0 位註冊使用者2 位訪客 在線上。

新會員

  • Mfeeluse
  • chris
  • kendrickpittmaneq
  • pigpighhkk
  • lissa

書籍推薦

在版型中加入自定區域 ( Region )

Arthur Yu 的照片
No votes yet

並不是每個版型都會上、下、左、右及頭和尾等區域 ( Region ) 可以拿來放區塊 ( Block ) 的,像阿舍現在用的這個版型,就沒有 "Content Top" 這個區域,這個區域就是在內容 ( Content ) 這一塊的上面那裡,所以,阿舍就自己去把它加上去,呵呵,還好不會太複雜,不過要對 page.tpl.php 這個檔有點概念就是了.....。



新增自定的區域主要是分成下列兩個大步驟:

1.定義新的區域

要新增新的區域,首先就是要先定義它,不然 Drupal 桑怎麼會知道有多了一個區域呢 ? 是啊 ! 所以就要先定義出來才行,要怎麼定義呢 ? 很不幸的, Drupal 5 和 Druapl 6 的作法不同,阿舍就得多打不少字哩 ....=____=!!,不過,應該說是變簡單,可是,阿舍是覺得變奇怪了哩.....。

先來講 Drupal 5 的作法,不過要先說,這個是只適用 PHPtemplate 引擎的作法的,其它引擎可不一定適用, 但是,怎麼知道是不是用 PHPtemplate 引擎的哩 ? 這個不難,請各位大德看一下所有使用的版型資料夾下,有沒有 page.tpl.php 這個檔,如果有的話,那就是了,大概不會錯的。

在 PHPtemplate 引擎的架構裡,有個檔案叫做 "templae.php",這個,是用來撰寫覆蓋 Drupal 版型相關函數( Function ) 的檔案,也就是在 includes/theme.inc 及 includes/menu.inc 裡的函數可以經由 template.php 來撰寫取代的相關函數,這樣可以讓各位大德進一步的控制 Drupal 丟出來的東西,然後可控制版型的形成..。

不過,今天沒有要詳細的介紹 template.php 這個檔,只是借用一下而已....呵呵,請各位大德到使用中的版型的資料夾裡,用文字編輯器去打開 templat.php 這個檔,如果沒有,就自己建一個,沒關係的。

打開之後,請各位大德先找找看有沒有 xxxxx__regions() 這個 function,前面的 xxxxx 是指各位大所使用的版型名稱,以阿舍的版型為例,就是叫做 copyblogger_regions(),如果也是沒有,那就請大德們參考下面的程式碼,自己建一個,OK 的啦...呵呵。

function xxxxx_regions() {
return array(
'right_bar' => t('right sidebar'),
'left_bar' => t('left sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer')
);
}

這個就是用來重新定義版型所有的區域的函數,在 return array 的下面, 每一行定義一個區域,=> 的右邊,在 t() 裡是定義區域的顯示名稱,就是在 「管理」>「網站建置」>「區塊」( /admin/build/block ) 裡,用來標示區域所在位置的文字。

而在 => 左邊的,就是這個區域的變數名稱,是用在 page.tpl.php 裡的,一般在沒有使用這個函數下,就會使用預設的名稱,例如 $sidebar_right、$sidebar_left ( 以 Drupal 5 為例 ) 等,而當使用了這個 xxxxx_regions() 定義過之後,那就會變成在 page.tpl.php 裡,要用 $right_bar 和 $left_bar 來取代。

這樣講,不知各位大德是不是已經能夠有所理解哩 !? 呵呵,沒錯,要新增新的區域就是在這裡加上去的,以阿舍要新增的 content_top 區為例,就會是下面的樣子

function xxxxx_regions() {
return array(
'right_bar' => t('right sidebar'),
'left_bar' => t('left sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'conetnt_top' => t('Content Top') <<< 這裡就是阿舍新增的,要注恴 "," 的位置...
);
}

加上去之後存檔,就算完成第一個步驟了,再來要再說一下 Drupal 6 的作法,Drupal 6 應該是變簡單了,只要在所使用的版型資料夾裡,找到 .info 檔來編輯,然後加入下列宣告就可以了。

regions[left] = Left
regions[right] = Right
regions[content] = Content
regions[header] = Header
regions[footer] = Footer

這個和前面在 Drupal 介紹的方式差不多,等號右邊是顯示名稱,左邊的 [ ] 大括弧裡則是放區域的變數名稱,以阿舍為例,就會變成,

regions[left] = Left
regions[right] = Right
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[contenttop] = Content top <<<

請大德們要全部的區域都要有放進來,不可以只放要新增的部分,不然的話,其它沒放在這的區域,就會在 Drupal 裡消失哩....。

另外,各位大德有沒有注意到,在 Drupal 6 裡的變數名稱怎麼都沒有用底線 "_" 或減號 "-" 呢 ? 這可不是巧合的,這是故意的,阿舍有試過,給它的變數名稱取成 content_top,結果在 Druapl 6 裡,這個區域就會變的怪怪的,看的到,可是卻用不到,這就是阿舍覺得怪的地方哩 !!....=____=!!。

2. 加入新區域到 page.tpl.php

定義完區域之後,再來就是要來喬這個新區域的位置了,首先,要先在所使用的版型的資料夾裡打開 page.tpl.php 檔,然後找到適當的位置把這個 < ?php print $區域變數;?> 放上去,然後存檔,就搞定了。

以阿舍為例,阿舍就把 < ?php print $content_top;?> 放到 <?php print $content; ?> 的上面,這樣這個新增的區域就會出現在「內容 (Contnt )」的上面了。

完成上面二個步驟之後,就可以到 「管理」>「網站建置」>「區塊」( /admin/build/block ) 去看,應該就會有看到新增的區域,接著就可以放個區塊 ( Block) 進去,來試試是不是會在指定的位置顯示出來囉 !!

不過,使用 Druapl 6 的大德們,應該是沒有這麼 Happy 的,因為 Drupal 6 對這是 .info 是會把它暫存到資料庫去的,所以不會即時更新,要到「管理」>「網站設定」>「效能」裡,去按下面的「清除快取資料」 之後,再去區塊的管理畫面,才會看的到新增的區域的哩 !

dovis (未確認)
阿舍兄真是个认真的

阿舍兄真是个认真的人啊。。。非常佩服…… 现在我的问题已经解决了,使用的办法就是自定义regions 然后根据JOC(http://www.joetsuihk.com/node/101)的办法重新布置首页的版面使用了page-front.tpl.php(drupal6)这个作为首页的布局。上次出现的问题是我没有加入$content 这个regions 导致不会出现block放置选项。

然后现在的问题就是对各个regions的css了。。。还得研究下,希望一起讨论。。。

Arthur Yu
Arthur Yu 的照片
User offline. Last seen 1 小時 12 分鐘 ago. Offline
Joined: 12/17/2007
多謝

Hello dovis 兄,

多謝提供解決方法和參考資料 !! ^^=。

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

供參囉 !!

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

梵尚 (未確認)
因為 Drupal 6 對這是

因為 Drupal 6 對這是 .info 是會把它暫存到資料庫去的,所以不會即時更新,要到「管理」>「網站設定」>「效能」裡,去按下面的「清除快取資料」 之後,再去區塊的管理畫面,才會看的到新增的區域的哩 !

------------------

原来是这样,难怪我每次添加了之后管理界面里都不会出现新加的region~~

發表新回應

此欄位內容將保密,不會公開顯示出來。
  • 自動將網址與電子郵件位址轉變為連結。
  • 可使用的 HTML 標籤:<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 自動斷行和分段。

更多關於格式化選項的資訊

Mollom CAPTCHA (play audio CAPTCHA)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated.

Google 廣告 Cookie 和隱私權政策
當您造訪我們的網站時,我們會透過第三方廣告公司來放送廣告。這些公司可能會使用您在本網站和其他網站上的相關瀏覽資訊 (不含姓名、地址、電子郵件地址和電話號碼),以便提供閣下感興趣之產品和服務的廣告。如果您想要瞭解此作法的詳情,以及如何選擇不讓前述公司使用您的資訊,請按這裡

Drupal 7 預計釋出日期

最早為 2010/08/30
最晚為 2010/10/14
目前版本 Drupal 7.0-alpha6
待處理的 "嚴重問題" 還有 41 個...

詳細內容請參考這裡

*註 : 以上日期是依據目前解決被列為 "嚴重問題" 的處理時間所做的線性和對數預測...,至於有那些問題,請參考這裡

BloggerAds

Drupal 新聞

阿舍的 Plurk

誰正在看什麼...