我正在尝试将经典主题自定义为主题(称为 theant 主题)作为主题 boost 的子主题。
我想在我的moodle中获取所有课程及其链接,以便在所有网站中将它们显示为菜单。它看起来就像图片中的黑色菜单栏。 (https://i.sstatic.net/V46n[在此处输入图像描述](https://i.sstatic.net/oW8RI.png)t.png)
菜单栏在文件'theme/theant/templates/navbar.mustache'中定义如下
<nav class="fixed-top navbar navbar-bootswatch navbar-expand moodle-has-zindex">
<div class="fixed-subtop navbar" style="background-color: #333333; color: white;">
<ul>
{{#allcourses_menu}}
<li><a href="{{courselink}}"> "{{coursename}}"</a></li>
{{/allcourses_menu}}
</ul>
</div>
并且 navbar.mustache 由模板文件“theme/theant/templates/column.mustache”通过代码调用:
{{> theme_theant/navbar }}
在文件“theme/theant/renderers.php”中,我写道(基于教程https://docs.moodle.org/dev/Extending_the_theme_custom_menu)
class theme_theant_core_renderer extends \core_renderer {
protected function render_allcourses_menu($allcourse_menu = null) {
global $CFG;
require_once($CFG->dirroot.'/lib/datalib.php');
$allcourses = get_courses();
$allcourses_menu = array();
foreach ($allcourses as $course) {
array_push($allcourses_menu, array("coursename"=>($course->shortname),
"courselink"=>(new moodle_url('/course/view.php', array('id' => $course->id)))));
}
return $allcourses_menu;
}
}
但是,我不知道如何将 $allcourses_menu 渲染到模板调用它。
我尝试将其放入布局文件“theme/theant/layout/column.php”中,如下所示
$allcourse_menu = $theme_theant_core_renderer::render_allcourses_menu();
....
$templatecontext = [
..........
'allcourses_menu'=> $allcourse_menu,
];
echo $OUTPUT->render_from_template('theme_theant/columns', $templatecontext);
但是,我收到错误。
我的问题是:
感谢您的帮助。 干杯
春。
"courselink"=>(new \moodle_url('/course/view.php', array('id' => $course->id))) . ''
$allcourse_menu = $theme_theant_core_renderer::render_allcourses_menu();
,我不确定您是如何声明的$theme_theant_core_renderer
,但如果您想调用静态方法只是为了最小化代码并清理它,我建议直接使用类名本身.