我正在爲我的客戶端創建一個管理模塊,使他們能夠訪問與其內容有關的某些管理功能。我要從頭開始由我的模塊中加入了一些權限,通過實施hook_perm
:Drupal菜單權限問題
function mymodule_perm()
{
return array(
'manage projects',
);
}
然後我就可以通過向管理部分已經存在的創建我的菜單:
function mymodule_menu()
{
$items['admin/projects'] = array(
'title' => 'Projects',
'description' => 'Manage your projects.',
'page callback' => 'manage_projects_overview',
'access callback' => 'user_access',
'access arguments' => array('manage projects'),
'type' => MENU_NORMAL_ITEM,
'weight' => -100,
);
$items['admin/projects/add'] = array(
'title' => 'Add project',
'access arguments' => array('manage projects'),
'page callback' => 'mymodule_projects_add',
'type' => MENU_NORMAL_ITEM,
'weight' => 1,
);
return $items;
}
這將添加一個項目部分到行政區域用添加項目子部分。都好。
我想要的行爲是我的客戶只能看到部分項目在登錄時,我已經通過選中「管理項目」權限在我的模塊的權限部分驗證的用戶做到了這一點。現在爲了讓我的客戶能夠實際訪問管理區域,我還需要在用戶權限部分的「系統模塊」下勾選「訪問管理頁面」。這很好,當我作爲客戶端登錄時,我只能在管理區域看到項目部分。有一兩件事,雖然,在我的導航菜單上的左欄,我可以看到以下項目顯示:
- Administer
- Projects
- Content management
- Site building
- Site configuration
- User management
我期待只看到轄和項目的項目,而不是其他的。當我點擊例如內容管理我得到一個沒有小節的標題爲「內容管理」的頁面。網站構建,網站配置和用戶管理也相同。真正奇怪的是報告沒有被顯示,這也是最高級別的管理部分。
爲什麼這些其他項目,除了我的項目部分,正在顯示,我怎麼可以讓他們出現,如果我沒有登錄爲管理員停下來?
啊。這也解釋了報告部分沒有顯示的原因。它被設置爲「訪問站點報告」訪問權限,而不是「訪問管理頁面」。我想我沿着hook_menu_alter路徑走下去。這似乎是更合適的做法。謝謝! – Luke 2010-04-08 12:45:03