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,killes@www.drop.org给出了这个patch:
Category: | feature requests | ? bug reports |
Assigned to: | Anonymous | ? killes@www.drop.org |
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!