0

0

Moodle课程摘要中的图片无法显示的解决方案

碧海醫心

碧海醫心

发布时间:2026-02-02 09:13:01

|

221人浏览过

|

来源于php中文网

原创

Moodle课程摘要中的图片无法显示的解决方案

在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(),但需确保已引入对应类文件。

✅ 方法二:手动重写插件文件URL(灵活可控)

适用于需精细控制格式或集成到非标准上下文(如AJAX响应、API输出)的场景:

Elser AI Comics
Elser AI Comics

一个免费且强大的AI漫画生成工具,助力你三步创作自己的一出好戏

下载
$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() 将 Moodle课程摘要中的图片无法显示的解决方案 替换为完整可访问的 pluginfile.php?file=... URL;
  • 必须传入正确的 context(课程上下文),否则权限校验失败,图片仍不可见;
  • 后续调用 format_text() 时显式传入 ['context' => $context],确保HTML过滤器能正确解析媒体资源。

? 总结与注意事项

  • ❌ 避免直接 echo format_text($course->summary) —— 缺失上下文与URL重写,图片必然失效;
  • ✅ 优先选用渲染器方案(get_course_formatted_summary),它已封装安全过滤、响应式适配与多格式支持;
  • ?️ 所有文件操作必须基于有效 context,切勿硬编码或复用其他模块的上下文;
  • ? 开发调试时,可临时启用 debugging(E_ALL, DEBUG_DEVELOPER) 并检查浏览器开发者工具的Network标签,确认图片请求是否返回404或303重定向失败。

通过上述任一方式,即可在自定义页面中完整、安全、响应式地呈现含图片的课程摘要内容。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

160

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

160

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

117

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

237

2024.09.24

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号