我想通过Moodle Web服务获得Moodle课程中页面资源的所有HTML内容。文档中缺少示例,我通读过的讨论线程似乎没有解决这个看似基本的操作。
获取页面资源HTML内容的正确Web服务功能是什么?
mod_page_get_pages_by_courses
函数返回给定课程(如果提供(或用户可以访问的所有课程(如果courseids
为空(的信息加HTML内容。
以下是对Web服务的一般调用,以检索特定课程的所有页面信息,假设您正确设置了Moodle Web服务:
https://<your-moodle-url>/webservice/rest/server.php?wstoken=<your-token>&moodlewsrestformat=json&wsfunction=mod_page_get_pages_by_courses&courseids[0]=<your-course-id>
以下是帮助我弄清楚的文档中的缩写信息:
mod_page_get_pages_by_courses
返回所提供课程列表中的页面列表,如果未提供列表,则将返回用户可以查看的所有页面。
参数
courseids
(默认为"Array(("(-阵列的球场ID
响应
注意content
条目,它是一个包含页面内容的HTML字符串。
object {
pages list of (
object {
id int //Module id
coursemodule int //Course module id
course int //Course id
name string //Page name
intro string //Summary
introformat int Default to "1" //intro format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN)
introfiles //Files in the introduction text
list of (
//File.
object {
filename string Optional //File name.
filepath string Optional //File path.
filesize int Optional //File size.
fileurl string Optional //Downloadable file url.
timemodified int Optional //Time modified.
mimetype string Optional //File mime type.
isexternalfile int Optional //Whether is an external file.
repositorytype string Optional //The repository type for external files.
}
)content string //Page content
contentformat int Default to "1" //content format (1 = HTML, 0 = MOODLE, 2 = PLAIN or 4 = MARKDOWN)
contentfiles //Files in the content
list of (
//File.
object {
filename string Optional //File name.
filepath string Optional //File path.
filesize int Optional //File size.
fileurl string Optional //Downloadable file url.
timemodified int Optional //Time modified.
mimetype string Optional //File mime type.
isexternalfile int Optional //Whether is an external file.
repositorytype string Optional //The repository type for external files.
}
)legacyfiles int //Legacy files flag
legacyfileslast int //Legacy files last control flag
display int //How to display the page
displayoptions string //Display options (width, height)
revision int //Incremented when after each file changes, to avoid cache
timemodified int //Last time the page was modified
section int //Course section id
visible int //Module visibility
groupmode int //Group mode
groupingid int //Grouping id
}
)warnings Optional //list of warnings
list of (
//warning
object {
item string Optional //item
itemid int Optional //item id
warningcode string //the warning code can be used by the client app to implement specific behaviour
message string //untranslated english message to explain the warning
}
)}
备选方案:core_course_get_contents
Juan Levya发现了这篇有用的论坛帖子,它提供了一种将页面内容作为可下载HTML文件的替代方法。改编自原始帖子的信息:
函数
core_course_get_contents
返回:
- 章节
- 每个部分中的模块(活动或资源(
- 如果模块是一个资源,则它在";内容";属性
- 每个部分中的模块(活动或资源(
该属性是一个文件数组,在那里您将有一个fileurl
属性,它是文件的下载URL。如果您正在使用Web服务,则应该附加WS令牌。
返回的URL示例:
https://<your-moodle-url>/webservice/pluginfile.php/29/mod_page/content/index.html?forcedownload=1
您需要修改URL以下载文件,方法是添加WS令牌作为查询参数,密钥为token
:
https://<your-moodle-url>/webservice/pluginfile.php/29/mod_page/content/index.html?forcedownload=1&token=<your-token>
这将初始化资源文件的下载。
使用Web服务获取课程内容是一个有点相关的问题,但它特别询问课程资源,这些资源有自己的专用功能。