คุณสามารถเปลี่ยนหรือเปลี่ยนการเรียกกลับการเข้าถึงสำหรับโหนดแก้ไขรูปแบบการใช้hook_menu_alter
ในการให้สิทธิ์ที่จะปรากฏในหน้าจอการอนุญาตตามภาษาที่คุณใช้คุณจะต้องใช้โมดูลที่กำหนดเองโดยใช้ hook นี้:
/**
* 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;
}
สิ่งนี้จะใส่ช่องทำเครื่องหมายในหน้าสิทธิ์ภายใต้ชื่อโมดูลของคุณสำหรับแต่ละภาษาในเว็บไซต์ ฉันจะสมมติว่าชื่อภาษาไม่เปลี่ยนแปลงในกรณีนี้ปลอดภัยที่จะทำ
จากนั้นคุณเพียงแค่ต้องใช้มันเพื่อปิดกั้นการเข้าถึงหากผู้ใช้ไม่ได้รับอนุญาตเช่นนี้:
/**
* 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;
}
หมายเหตุการทำเช่นนี้บทบาทจะต้องได้รับอนุญาต 'แก้ไขโหนด' และสิทธิ์ตามภาษาเพื่อแก้ไขโหนดใด ๆ