2009-09-16 179 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