电话
400 9058 355
在moodle自定义页面中直接使用echo format_text($course->summary);会导致课程摘要中的图片无法正常显示,仅呈现文件名及小图标(如“image.jpg”旁带默认缩略图)。这是因为$course->summary存储的是富文本内容,其中图片引用的是相对路径或未解析的pluginfile.php链接,而当前上下文缺乏必要的文件访问权限与路径重写机制。
要正确渲染含图片的课程摘要,推荐以下两种专业、安全且符合Moodle最佳实践的方法:
Moodle 3.2+ 提供了内置的 coursecat_helper 渲染器,它会自动处理文件URL重写、HTML过滤与上下文适配:
global $CFG; require_once($CFG->dirroot . '/course/renderer.php'); $renderer = new \core_course\output\coursecat_helper(); // 注意:新版应使用命名空间类 $summary = $renderer->get_course_formatted_summary($course, FORMAT_HTML, ['overflowdiv' => true]); echo $summary;
⚠️ 注意:coursecat_helper 在较新版本中已迁移至 \core_course\output\coursecat_helper 命名空间,请根据你的Moodle版本(≥3.9建议用此路径)调整。若使用旧版(如3.5–3.8),可保留 new coursecat_helper(),但需确保已引入对应类文件。
适用于需精细控制格式或集成到非标准上下文(如AJAX响应、API输出)的场景:
$context = context_course::instance($course->id);
$summary = file_rewrite_pluginfile_urls(
$course->summary,
'pluginfile.php',
$context->id,
'course',
'summary',
null // itemid 为 null 表示课程级别摘要(无需指定具体附件ID)
);
echo format_text($summary, FORMAT_HTML, ['context' => $context]);? 关键说明:
- file_rewrite_pluginfile_urls() 将 替换为完整可访问的 pluginfile.php?file=... URL;
- 必须传入正确的 context(课程上下文),否则权限校验失败,图片仍不可见;
- 后续调用 format_text() 时显式传入 ['context' => $context],确保HTML过滤器能正确解析媒体资源。
通过上述任一方式,即可在自定义页面中完整、安全、响应式地呈现含图片的课程摘要内容。
邮箱:8955556@qq.com
Q Q:8955556
本文详解如何将Go官方present工具(用于生成HTML5...
PySNMP在不同版本中对SNMP错误状态(errorSta...
time.Sleep仅阻塞当前goroutine,其他gor...
PHPfopen()创建含特殊符号的文件名失败主因是操作系统...
WooCommerce中通过代码为分组产品动态聚合子商品的属...
io.ReadFull返回io.ErrUnexpectedE...
本文详解Yii2中控制器向视图传递ActiveRecord数...
本文详解为何通过wp_set_object_terms()为...
Pytest中使用@mock.patch类装饰器会导致补丁泄...
带缓冲的channel是并发安全的FIFO队列;make(c...