我有一个带有自定义区域的 Moodle 站点,即"顶部"和"底部"。我想自动将HTML块添加到顶级区域的所有新课程中。
我config.php
里有这些,并且该块已添加到新课程中,但在错误的位置,到side-pre
区域......如何更改此设置以将块添加到顶部区域?
'course' => array(
'file' => 'course.php',
'regions' => array('side-pre', 'top', 'bottom'),
'defaultregion' => 'bottom',
'options' => array('nonavbar'=>false),
$CFG->defaultblocks_override = 'html';
$CFG->defaultblocks_site = 'html';
$CFG->defaultblocks_social = 'html';
$CFG->defaultblocks_topics = 'html';
$CFG->defaultblocks_weeks = 'html';
引用自文档(新课程的默认块布局):
$CFG->defaultblocks_topics = 'participants,tags,admin:messages,online_users,recent_activity';
请注意冒号如何用于将左侧显示的块与右侧显示的块分开。
似乎您必须使用冒号。我查看了解析此字符串的函数代码(在 lib/blocklib.php
中,函数 blocks_parse_default_blocks_list
中,Moodle 2.4),我认为它只能处理左侧或右侧区域(side-pre
和side-post
)。对于黑客解决方案,您可以更改以下代码行(lib/blocklib.php
):
define('BLOCK_POS_LEFT', 'side-pre');
自:
define('BLOCK_POS_LEFT', 'top');
但我认为更好的解决方案是使用"粘性"块(需要 Moodle > 2.3
)。看看这个文档。以下是不同的步骤:
- 在首页添加块;
- 编辑块的配置。在"显示此块的位置"部分,选择"在整个站点中显示;
- 根据需要选择默认区域(在本例中为顶部或底部)。
- 现在,您必须仅在课程上显示块。输入课程。编辑块(在课程中),然后在页面上显示类型中选择任何课程页面。
现在,这些块将仅出现在课程页面上(而不是首页)。
学分:回复:在 Moodle 2.0 中的所有课程中阻止。我亲自在 Moodle 2.4 安装上对其进行了测试。