You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moodle 4.1.1中file_rewrite_pluginfile_urls生成URL缺失路径段问题求助

解决Moodle 4.1.1中试题图片URL缺失路径段的问题

1. 优先使用Moodle内置Question API获取完整数据

不要直接从question表读取零散字段,改用Moodle官方提供的question_get_question_data()函数获取包含正确上下文、文件关联信息的完整试题对象,这能避免手动获取参数时的错误:

// 传入你的试题ID
$questionid = $value['id'];
$question = question_get_question_data($questionid);

// 重新生成带正确路径的URL
$processed_questiontext = file_rewrite_pluginfile_urls(
    $question->questiontext,
    'pluginfile.php',
    $question->contextid,
    'question',
    'questiontext',
    $question->id
);

2. 验证文件记录的ItemID是否匹配

如果问题仍存在,直接查询mdl_files表确认对应图片文件的itemid值,确保与你传入函数的参数一致:

SELECT itemid, filepath, filename 
FROM mdl_files 
WHERE contextid = [你的试题contextid] 
  AND component = 'question' 
  AND filearea = 'questiontext' 
  AND filename LIKE '%.png' -- 根据你的图片格式调整

将查询到的itemid替换到file_rewrite_pluginfile_urls的最后一个参数位置即可。

3. 替代方案:使用专门的图片URL重写函数

file_get_images_rewritten是Moodle专门处理HTML中图片URL的函数,兼容性更强,适合这种场景:

$processed_questiontext = file_get_images_rewritten(
    $question->questiontext,
    $question->contextid,
    'question',
    'questiontext',
    $question->id
);

关键提示

  • 确保contextid是试题所属课程/模块的上下文ID,不要误用其他无关上下文。
  • 试题parent字段为0说明是独立试题,正常情况下关联文件的itemid等于试题ID;如果不一致,大概率是试题由复制/导入生成,需以mdl_files表中的实际记录为准调整参数。

内容的提问来源于stack exchange,提问作者Dgupta.rspl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:25:25