我安装了Moodle 4.4.3。系统中添加了多门课程。我可以访问 Moodle API。我正在对我的一门课程的内容使用 API 调用
core_course_get_contents
。回复如下:
[
{
"id": 38,
"name": "Section Title",
"visible": 1,
"summary": "",
"summaryformat": 1,
"section": 1,
"hiddenbynumsections": 0,
"uservisible": true,
"modules": [
{
"id": 21,
"url": "https://example.com/mod/wiki/view.php?id=21",
"name": "Reading materials",
"instance": 5,
"contextid": 44,
"visible": 1,
"uservisible": true,
"visibleoncoursepage": 1,
"modicon": "https://example.com/theme/image.php/boost/wiki/1727859606/monologo?filtericon=1",
"modname": "wiki",
"purpose": "collaboration",
"branded": false,
"modplural": "Wikis",
"availability": null,
"indent": 0,
"onclick": "",
"afterlink": null,
"customdata": "\"\"",
"noviewlink": false,
"completion": 0,
"downloadcontent": 1,
"dates": [],
"groupmode": 0
}
]
}
]
课程页面包含 1 个添加了 Wiki 活动的条目。据我了解,ID=38 是课程页面上的条目“部分标题”,而 ID=21 是 Wiki ID。然后我使用 Moodle API 调用
mod_wiki_get_page_contents
和 pageid=21
来尝试获取 Wiki 活动的内容。然而,响应并没有显示维基百科的内容,而是显示其他页面的内容:
{
"page": {
"id": 21,
"wikiid": 19,
"subwikiid": 18,
"groupid": 0,
"userid": 0,
"title": "Home",
"cachedcontent": "(Wrong content here)",
"contentformat": 1,
"caneditpage": true,
"version": 106,
"tags": []
},
"warnings": []
}
在正确的 Wiki 页面的网页中,从“编辑”按钮的链接中,我可以猜测 Wiki 的 ID 是
7
而不是 21
,但 ID=7 没有出现在任何响应中。当我将 mod_wiki_get_page_contents
与 pageid=7
一起使用时,它会显示正确的内容。
我的问题是:如何利用Moodle API获取ID=7?
谢谢。
从原始响应中 - “21”是“课程模块 ID”(这是该活动唯一的数字,无论活动类型如何 - 例如 21 是本课程中的 wiki,22 可能是论坛实例, 23 可能是一项作业,24 可能是另一个 wiki)。在幕后,这是 mdl_course_modules 数据库表的 id。
'5' 是“实例 id” - 这标识了一个特定的 wiki(也可以有一个“实例 id”为 5 的分配,一个“实例 id”为 5 的论坛,等等)。在幕后,这是 mdl_wiki DB 表的 ID(对于这些活动类型,或者是 mdl_assign 或 mdl_forum 表)。
如果您使用此“实例 ID”(共 5 个),您可以通过调用
mod_wiki_get_subwiki_pages
获取该 wiki 活动中所有页面的列表(如果只有 1 个子 wiki,则将返回其页面,否则您可能需要在该 wiki 中指定您想要页面的用户或组)。
来自
mod_wiki_get_subwiki_pages
的响应将包括每个页面的“id”,然后您可以将其输入到 mod_wiki_get_page_contents
中,以获得您正在查找的内容。