我正在研究一個Drupal項目,需要很少分層的用戶角色。高級用戶將具有一定的管理角色,但也會有兩個低級角色 - 銷售人員和標準客戶。銷售人員角色需要能夠創建標準客戶,然後查看與他們創建的任何客戶相關的數據。Drupal 7 - 菜單項顯示取決於角色和視圖
由於我使用PROFILE2,典型的用戶帳戶的任務菜單看起來像這樣
http://oi57.tinypic.com/333v447.jpg
現在,當登錄用戶是銷售人員的角色和他們去「我的帳戶」他們不應該看到我的訂閱,訂單或發票。供應商詳細信息profile2鏈接也應禁用。但是,因爲他們可以查看自己添加到系統中的客戶數據,這些鏈接有,如果他們查看其他用戶的屏幕
在代碼方面出現,我打個開始
function mymodules_menu_alter(&$menu) {
global $user;
$viewed_user_id = null;
$uid = arg(1);
if (arg(0) == 'user' && is_numeric($uid)) {
$viewed_user_id = $uid;
}
if (in_array('sales executive', $user->roles) && $viewed_user_id == $user->uid) {
unset($menu['user/%user_category/edit/vendor_details']);
}
if (in_array('sales executive', $user->roles)) {
unset($menu['user/%user/user-recurring-entities']);
}
}
問題以下想法首先檢查vendor_details的行爲有點奇怪。它顯示所有角色的菜單,或者沒有。我在想緩存可能會影響到這一點?
第二個檢查根本不起作用,因爲這樣的菜單條目不存在於$ menu數組中。
所以我的基本問題是,如何使整個事情工作?也許我的做法是錯誤的?