答案 0 :(得分:0)
从头到尾我会选择这样的东西:
$categoryid = 1; // Change this.
$category = coursecat::get($categoryid);
$childrencategories = $category->get_children();
$coursesincategory = $category->get_courses();
使用coursecat
的好处是它不会显示当前用户看不到的类别。
要构建选择框,您可以在扩展html_writer
类时决定使用select
或moodleform
元素。在Moodle中有很多后者的例子。
测试文件
这是一个测试文件,您可以将其命名为test_coursecat.php
,并放置在Moodle的根目录中,index.php
位于该位置。通过yoursiteurl/test_coursecat.php
访问它,您可以选择添加?categoryid=NUMBERHERE
来更改要开始的类别。
<?php
// Require config.php, and coursecatlib.
require('config.php');
require($CFG->libdir . '/coursecatlib.php');
// Get the parameter 'categoryid' passed via GET parameter. Else the value will be 0.
$categoryid = optional_param('categoryid', 0, PARAM_INT);
// Require a user to be logged in to access this page.
require_login();
// Set the minimal page requirements.
$PAGE->set_context(context_system::instance());
$PAGE->set_url('/test_coursecat.php');
// Start the output.
echo $OUTPUT->header();
// Fetch out root category with ID $categoryid.
$rootcategory = coursecat::get($categoryid);
// Get 2 sub categories.
$categories = $rootcategory->get_children(array('limit' => 2));
// Output each category fetched, and their associated courses.
echo '<pre>';
foreach ($categories as $category) {
echo $category->name . PHP_EOL;
foreach ($category->get_courses() as $course) {
echo ' - ' . $course->shortname . PHP_EOL;
}
}
echo '</pre>';
// End the output.
echo $OUTPUT->footer();