Drupal區塊路徑設置的BUG

Drupal區塊路徑設置,目的就要在不同的頁面節點上顯示不同的區塊(block),在控制面板的區塊設置裏有一列名爲PATH,就是它了。詳見:Putting blocks with content in the sidebars

以前就研究過,未果,最近zephyr在drupal的官方論壇裏問了這個問題,然後又去搜了一下,找到了這個:Block Paths and Path Aliases,證明了4.4.0版本在不使用clean url時,block path有BUG,[email protected]給出了這個patch:

Category: feature requests ? bug reports
Assigned to: Anonymous ? [email protected]
Status: active ? patch
Attachment: block.patch (922 bytes)

其實就是在block.module裏找到並

刪:      if ((($block['status'] && (!$user->uid || !$block['custom'])) || ($block['custom'] && $user->block[$block['module']][$block['delta']])) && (!$block['path'] || preg_match($block['path'], "/" . $_GET["q"]))) {

添:      if ((($block['status'] && (!$user->uid || !$block['custom'])) || ($block['custom'] && $user->block[$block['module']][$block['delta']])) && (!$block['path'] || preg_match($block['path'], "/" . $_GET["q"]) || preg_match($block['path'], str_replace('?q=', '/', request_uri())))) {

具體的表達式範例:

只在首頁顯示
<(/|index/.php)$>

只在?q=blog下的節點顯示
<^//blog>

只在首頁和?q=blog節點顯示
<^//blog|(/|index/.php)$>

只在詳細節點顯示
<^//node/view>

其餘同理,把節點名換下就可以了。

上面所述的表達式只針對drupal4.4版本,以前的版本略有不同,見Putting blocks with content in the sidebars ,have fun!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章