2009-09-16 127 views
1

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

Afaik这是不可能通过权限。有没有一个模块允许细粒度控制什么块可以由谁来管理?我宁愿不写一个自定义界面...

感谢, 燕姿

回答

0

采取这些区块分布的地区,并且将它们嵌入到你的模板使用module_invoke()手动。

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

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

这将如何帮助网站管理员管理这些块? – stef

+0

对不起,我明白你的意思了:隐藏模板中的“不允许”块,得到它。 如果有另一个选项ID喜欢听到它,否则这是可以接受的答案 – stef

-1

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

+0

看起来不像允许锁定特定块。 – ceejayoz

+0

你是对的。看看代码,我的印象是有单独的权限来添加和编辑队列是错误的。这可以改变,但主题方法可能更容易。 – Grayside

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_)
  2. 创建一个新帐户,并可能为此人创建一个新角色
  3. 权限明智的,新用户的角色应该access administration pagesadminister blocks,但应该有view special blocks

测试上的Drupal 6.6,应该对其他6.x的版本(也许5工作。 x有一些修改)

+0

在D7中工作也...略有修改,因为hoom_perm已成为hook_permission;)谢谢! – SomethingOn