我正在尝试定制Moodle - 4。根据我的要求。我已经安装了我的程序插件,这样我们就可以创建一个程序,并添加一些课程。问题是我想将程序中的所有课程显示为卡片。课程卡必须包含课程图像、课程名称、学员人数等....我无法找到moodle在数据库中存储这些课程图像的位置,因此我无法获取它们并显示在卡片中。在卡片中还有其他方式显示课程图像吗?
我检查了该课程图像的每个表,似乎它们没有存储在任何地方,但在我的课程页面,卡片视图中,它们显示了带有课程图像的卡片。我检查了我的课程代码,但没有得到他们是如何渲染课程图像的。
图像位置存储在mdl_files
表中,但是您将需要课程的上下文id
如:(PostgreSQL)
SELECT c.id AS courseid,
c.fullname AS coursename,
'moodledatafolder/filedir/' || SUBSTRING(f.contenthash,1,2) || '/' || SUBSTRING(f.contenthash,3,2) || '/' || f.contenthash AS imagelocation
FROM mdl_course c
JOIN mdl_context ctx ON ctx.instanceid = c.id AND ctx.contextlevel = 50 /* CONTEXT_COURSE */
JOIN mdl_files f ON f.contextid = ctx.id AND f.component = 'course'
AND f.filearea = 'overviewfiles' AND f.mimetype LIKE 'image/%'
WHERE c.id = 1
但这是在后端,图像不直接传递给浏览器。对于前端,您需要使用Moodle函数来获取图像url
,
// Use a course object or if you haven't one already use:
$course = get_course($courseid);
$courseimageurl = core_courseexternalcourse_summary_exporter::get_course_image($course);
// $courseimageurl can return a false if there is no image
if (!$courseimageurl) {
// Use an alternative
}