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,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!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值