我认为有不止一种方法可以让学生看不见块。
1.
Hide the block2.Assign role to block and set permission to block
但是这些都是由管理员通过改变设置来完成的。我需要一条路。如何编写代码,使该块对学生不可见。
通过更改db/access.php . For来获取activity I can make invisible the activity
'mod/questionbank:view' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
//'guest' => CAP_ALLOW,
//'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),像这样的,我如何使这个块按代码为学生不可见。
编辑
根据Davosmith的答案。
我把get_content函数放进去了
if (!has_capability('blocks/blockname:view')) {
return null;
}在blocks/blockname/block_blockname.php中
在我的blocks/blockname/db/access.php中包含:
'blocks/blockname:view' => array(
'captype' => 'read',
'contextlevel' => CONTEXT_BLOCK,
'legacy' => array(
//'guest' => CAP_ALLOW,
//'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
// 'editingteacher' => CAP_ALLOW,
'manager' => CAP_ALLOW
)
),但是它会导致错误页面
检测到编码错误,必须由程序员修复: PHP可捕获致命错误
发布于 2015-09-18 06:08:58
对于任何块,如果get_contents返回null (编辑为off),则不会显示该块。
因此,将以下内容放在块的get_content函数中(但是提供了在db/access.php.php中定义的真正功能):
if (!has_capability('block/myblock:somecapability', $this->context)) {
return null;
}https://stackoverflow.com/questions/32644417
复制相似问题