我的問題如下:
我正在做region的theme,要給特定region一個獨立的像是region-right.tpl.php(以名叫right的region為例)的檔案,卻發現它不會去讀取,只會用原本的region.tpl.php。我有在.info裡定義right、有clean cache、也確定region-right.tpl.php的檔案內容正確(完全從原本的region檔案copy過來,只加上「This is RIGHT」作為標記)。
接著,我用剛學到不久的print_r測試:在版型後面加上「print_r($theme_hook_suggestions); 」,於是在region裡面print出「Array ( [0] => region__region-right ) 」,然後我乾脆在template.php裡面把它改成只有region-right,結果再重新載入版面整個變成空白了。它還是不讀取region-right。
以上是我的除錯過程,但仍然找不到問題所在。請問板友還有可能是哪裡的問題?或者我用的Drupal 7.0 alpha3這個功能目前有bug?
Re: 給特定region額外的版型失敗
1. 自已也還在研究,所以還沒解答,真是不好意思。(不過我不是來亂的XD)
2. 想了解一下,請問你是從頭新建一個D7的theme,亦或是由D6一步一步轉?(參照:http://drupal.org/update/theme/6/7)
3. 不曉得能不能分享相關的測試檔,讓大家一起了解問題及研究?
謝謝!
附上一個官網的討論串,看起來好像在Alpha2時還是個bug (http://drupal.org/node/739266),不過我用Alpha3也試不出來XD
Re: 給特定region額外的版型失敗
我是參考zen theme for D7和其他文件從頭建起的(完全從D7才開始碰Drupal);那份convert的文件之前也有幫上點忙。因為我的模板有些地方和資料是嵌在一起寫的(例如直接用tid去抓taxomony目錄等),所以沒有辦法提供測試檔案,我把相關部分的code簡化貼上來:
template.php(這基本上是從zen改過來,我根本不知道hook是幹什麼的):
function themename_preprocess_region(&$vars, $hook) {
';
if (strpos($vars['region'], 'right') === 0) {
// Form the markup.
$summary = '
$summary .= 'Something';
$summary .= '
';
$vars['content'] .= $summary;
}
}
region.tpl.php:
<?php
print render($content);
print_r($theme_hook_suggestions);
?>
This is region.tpl.php
region-right.tpl.php:
<?php
print render($content);
print_r($theme_hook_suggestions);
?>
This is region-right.tpl.php
Render結果
content的region:
內容
Array ( [0] => region__region-content )
This is region.tpl.php
right的region:
Something
Array ( [0] => region__region-right )
This is region.tpl.php
看了你提供的討論串,那個人最後似乎解決了但只說是template.php的問題...我應該把template.php大部分的內容刪掉測試看看
Re: 給特定region額外的版型失敗
自問自答一下。我用作弊的方法做出來了:
at region.tpl.php start with:
if($region == 'right'){
include 'region-right.tpl.php';
return;
}
其實原本的問題沒有被解決;但我的人生沒有更多時間花在這裡了(兩天過去了...)
Re: 給特定region額外的版型失敗
果然是下有對策 :)
其實面對alpha版的問題,很多人都比較不想花心力去解決XD
大部份人都會請你去官網post issue..
希望正式版出來時可以一解疑惑~
--
no pain no gain.