Bạn có thể thay thế hoặc thay đổi cuộc gọi lại truy cập cho các biểu mẫu chỉnh sửa nút bằng hook_menu_alter .
Để tạo quyền sẽ hiển thị trong màn hình quyền dựa trên các ngôn ngữ khả dụng của bạn, bạn sẽ cần một mô-đun tùy chỉnh có móc này:
/**
* Implements hook_permission().
*/
function MODULENAME_permission(){
//do something here to get an array of language names: $languages (I'm not familiar with i18n)
foreach ($languages as $lang) {
$permissions[$term->name] = array(
'title' => t($lang->name), //Or wherever the langauge name is stored
'description' => t('Edit content in '. $lang->name), //Again, adjust as needed
);
}
return $permissions;
}
Điều này sẽ đặt một hộp đánh dấu vào trang quyền dưới tên mô-đun của bạn cho từng ngôn ngữ trên trang web. Tôi sẽ giả sử tên ngôn ngữ không thay đổi trong trường hợp này là an toàn để làm.
Sau đó, bạn chỉ cần sử dụng chúng để chặn truy cập nếu người dùng không được phép như thế này:
/**
* Implements hook_node_access($node, $op, $account).
*/
function MODULENAME_node_access($node, $op, $account){
//Get the language name for the node and store in variable $lang (again, I don't know how)
//Then see if the user can do anything except view it
if ($op != 'view'){
if (!user_access($lang)){
return NODE_ACCESS_DENY;
}
}
return NODE_ACCESS_IGNORE;
}
Lưu ý, thực hiện theo cách này, vai trò sẽ cần quyền 'chỉnh sửa nút' VÀ quyền dựa trên ngôn ngữ để chỉnh sửa bất kỳ nút nào.