用于网站管理员区块管理的Drupal模块?

时间:2009-09-16 12:00:55

标签: drupal

管理我正在工作的网站的人希望能够决定哪些区块在哪里。在Drupal中有一个很好的界面(从下拉列表中选择区域),但我想隐藏这个用户的某些块。这些是他不应该四处走动的障碍。

Afaik通过权限无法做到这一点。是否有一个模块允许对谁可以管理哪些块进行细粒度控制?我宁愿不写自定义界面......

谢谢, 燕姿

3 个答案:

答案 0 :(得分:3)

好吧,您可以创建一个这样的简单自定义模块(显然,将my_module替换为自定义模块的名称):

    function my_module_perm()
    {
        return array('view special blocks');
    }   



    function my_module_form_alter(&$form, &$form_state, $form_id) {
      if ($form_id == 'block_admin_display_form') {
        if(!user_access('view special blocks')) {
            $special_blocks = array( ); // Specially hidden blocks go here

            foreach($special_blocks as $block) {
                unset($form[$block]);
            }
        }
      }
    }

然后:

  1. 将要隐藏的块添加到$special_blocks数组中(它基本上是块的div减去block_的id)
  2. 为此人创建一个新帐户,可能还有一个新角色
  3. 权限方面,新用户的角色应该开启access administration pagesadminister blocks,但不应拥有view special blocks
  4. 在Drupal 6.6上测试过,应该适用于其他6.x版本(可能还有5.x,只需要一些修改)

答案 1 :(得分:0)

将这些区域移出区域,然后使用module_invoke()手动将它们嵌入到模板中。

$block = module_invoke('module_name', 'block', 'view', 'block name or ID');

print '<h2>' . $block['subject'] . '</h2>';
print $block['content'];

答案 2 :(得分:-1)

也许试试Blockqueue?我从来没有使用它,但它似乎涵盖了你的用例。