您不必直接使用 Kirby API 来从您的 Kirby 站点获取内容。Kirby 有几种不同的方式来响应 ajax 请求——响应可以是任何格式,例如 JSON、HTML 片段或其他任何格式。这里有一些最常用的方法来实现你想要的。
自定义路线
你可以定义一个自定义路由,就像一个“自定义 api 点”,你的 React 接口可以向它发送请求,并根据需要以 HTML 片段的形式响应阻止列表。您可以在如下 URL 中设置您的路线:
https://example.com/block-api
然后,在您的路线中,您可以使用toHTML()
方法、asnippet()
或任何其他方法将块转换为 HTML,然后您可以在响应中将其作为字符串发送回。
在您的路线定义中,您还可以使用允许您(可选)按 ID 请求单个块的模式。您的自定义路由 URL 看起来像这样 - 最后一段是块 ID:
https://example.com/blocks-api/02d4a71b-cd02-4382-a78c-84ff1e68324b
自定义内容表示
当您尝试通过其正常 URL 访问 Kirby 站点中的页面时,Kirby 会将页面的内容放入您页面的模板中,并将其作为 HTML 文档返回。这是“默认”行为。但是,您可以覆盖它。
您可以为您的页面定义自定义内容表示,它告诉 Kirby 您希望以“不同格式”接收页面内容 - 例如 JSON、XML 或您希望的任何内容。这种“不同的格式”甚至可以只是一个 HTML 片段。您需要做的就是为它定义一个新模板。
在您的情况下,您可以创建一个内容表示,告诉 Kirby 仅返回您的块的完全格式化的 HTML 片段 - 通过创建一个名为“mypage.blocks.php”之类的模板,其中只有块的 HTML . 因此,如果要正常访问该页面,我们将转到 URL...:
https://example.com/mypage
...要获取该页面的“块”自定义内容表示,您现在可以转到:
https://example.com/mypage.blocks
您的自定义内容表示也可以有自己的控制器。如果您想让 Kirby 只向您发送一个块的 HTML 代码,而不是页面上的所有块,这将非常有用。您可以在 URL 中使用查询参数来告诉控制器您希望 HTML 用于哪个块。然后,控制器将检查查询参数的 URL,如果参数存在,它只返回所需的块。这将使您的 React 应用程序能够通过向以下 URL 发送请求来获取页面上单个块的 HTML 代码:
https://example.com/mypage.blocks?id=02d4a71b-cd02-4382-a78c-84ff1e68324b