首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kirby :如何将块返回为HTML?

Kirby :如何将块返回为HTML?
EN

Stack Overflow用户
提问于 2021-07-01 07:19:17
回答 1查看 696关注 0票数 1

我正在玩柯比CMS,并使用它作为一个无头CMS。我使用块字段来处理丰富的内容。在API中,此字段作为对象数组返回:

代码语言:javascript
复制
[
    {
        "content": {
            "level": "h2",
            "text": "test"
        },
        "id": "02d4a71b-cd02-4382-a78c-84ff1e68324b",
        "isHidden": false,
        "type": "heading"
    }
]

我觉得这很好。但在我的情况下,这是烦人的,因为我应该自己做所有的渲染。

是否有一种方法或选项可以告诉Kirby将该字段呈现为HTML内容?

我知道有一个$blocks->toHtml()方法,但是我使用的是一个独立的React前端,所以我不能在我的JSX中使用这个方法。

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 07:15:13

您不必直接使用Kirby API来从Kirby站点获取内容。Kirby有几种不同的方法来响应ajax请求--而且响应可以是任何格式的,比如JSON、HTML片段或其他任何东西。以下是几种最常用的实现你想要的东西的方法。

自订路线

您可以定义一个自订路线,它类似于一个“自定义api点”,您的React接口可以向它发送请求,并根据需要以块列表的形式进行响应。您可以在URL上设置路由,如下所示:

代码语言:javascript
复制
https://example.com/block-api

在您的路由中,您可以使用toHTML()方法、snippet()或任何其他方法将这些块转换为HTML,然后在响应中使用像字符串一样发回

在您的路由定义中,还可以使用允许您(可选地)按ID请求单个块的模式

代码语言:javascript
复制
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.:

代码语言:javascript
复制
https://example.com/mypage

...to获取该页面的“块”自定义内容表示形式,现在转到:

代码语言:javascript
复制
https://example.com/mypage.blocks

您的自定义内容表示也可以有它自己的控制器。如果您想让Kirby只发送一个块的HTML代码,而不是页面上的所有块,这是非常有用的。您可以在URL中使用一个查询参数来告诉控制器您想要HTML的哪个块。然后,控制器将检查查询参数的URL,如果参数在那里,则只返回所需的块。这将使您的React应用程序能够获得页面上仅一个块的HTML代码,方法是向URL发送如下请求:

代码语言:javascript
复制
https://example.com/mypage.blocks?id=02d4a71b-cd02-4382-a78c-84ff1e68324b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68205888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档