Moodle API 获取 Wiki 内容

问题描述 投票:0回答:1

我安装了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?

谢谢。

moodle moodle-api
1个回答
0
投票

从原始响应中 - “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
中,以获得您正在查找的内容。

© www.soinside.com 2019 - 2024. All rights reserved.