您在這裡

Region 如何使用?

Hipfox's 的頭像
Hipfox 在 2007-04-02 (週一) 13:45 發表

大部分官網提供的 themes 都是比較標準的版型,特別是 block 擺放的位置,很多都是在側邊欄裡頭,有時要突破這個僵局,想把 block 放在版面中的任意位置,於是有 region 的產生。

例如想在 content 的上方和下方各置一個 block, Drupal theme 該如何寫呢?

Step 1: 在 template.php 中定義各個 block 名稱

在 template 中插入下列的 code


function ThemeName_regions() {
return array(
'header' => t('header'),
'right' => t('right sidebar'),
'left' => t('left sidebar'),
'content' => t('content'),
'footer' => t('footer'),
'inlineTop' => t('inline top'),
'inlineBottom' => t('inline bottom'),
);
}

其中 ThemeName 是你 theme 的名稱,inlineTop, inlineBottom 是我們要在 content 的上、下方定義的區塊。

Step 2: 在 page.tpl.php 中,加入自定的 block 區段

例如在 content 的上、下方加入剛才的定義...

<?php print $inlineTop; ?>
<?php if ($tabs): ?><?php print $tabs ?><?php endif; ?>
<?php print $help ?>
<?php print $messages ?>
<?php print $content ?>
<?php print $inlineBottom; ?>

Step 3: 適需要再潤飾自定 region 的 CSS

基本上這樣已經大功告成,恭喜你~
要特別注意的是,template.php 中的 region 定義,必須不厭其煩把各個 block region 一一寫出,不然在 admin 的區塊控制中,會缺東漏西。

必須不厭其煩把各個 block 一一寫出

上文是指各個預設的 region 是嗎? 我有點搞混中 :p
我目前的認知是,region 一種用來裝 block 的 container。

DrakeGuan 說「region 一種用來裝 block 的 container」,這樣解釋得比較清楚,在 region 裡頭是可以裝很多 blocks。

那我應該把「必須不厭其煩把各個 block 一一寫出」修改成「必須不厭其煩把各個 region 一一寫出」,這樣就澄清了。

使用panels模組和自訂region的差別
1. panels擁有設定介面,region無
2. panels有views bonus pack支援,region需要靠基本的程式,以及views產生block的熟稔程度
3. panels只能定義content這個region裡頭的版面(也就是頁首、頁尾等都不能動到),region本身就可以有各種彈性
4. panels需要安裝額外的模組,管理block時需要熟悉兩種設定環境

以上,是我的認知,不知道有沒有問題

--
from open mind to open source~

panels 裡除了block/views 之外,還可以裝node,直接塞文章(全文或摘要)進去。

我覺得最重要的差別在於:
region 做好,可以適用於使用此版型的所有頁面/全網站,而 panels 就只有那一頁 :)