如何让moodle中的管理员和老师看到一个块?

时间:2015-09-18 05:22:15

标签: hide block moodle

我认为让学生隐藏的方法不止一种方法。

  

1

     

Hide the block

     

2

     

Assign role to block and set permission to block

但这些是由管理员通过更改设置完成的。我需要一种代码方式。如何编写代码以使该块对学生不可见。

通过更改 db / access.php

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
        )
    ),

像这样如何通过代码使学生对学生不可见。

修改

根据达沃斯史密斯的回答。

我放入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 catchable   致命错误

1 个答案:

答案 0 :(得分:1)

对于任何块,如果get_contents返回null(并且编辑关闭),则不会显示该块。

因此,将以下内容放在块的get_content函数中(但放入您在db / access.php中定义的实际功能):

if (!has_capability('block/myblock:somecapability', $this->context)) {
    return null;
}