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
相关产品推荐
相关产品推荐

