问题标签 [headless-cms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
strapi - Strapi 自定义控制器从管理 UI 执行
我正在为我的一个模型扩展一个创建控制器:
例如,如果我从 Postman 发出请求,它可以正常工作,但是如果用户从管理 UI 创建新对象,是否可以这样做?
当我从邮递员发送请求时看到来自 Strapi 的控制台时:
但是,如果我从管理 UI 创建一个新对象,我会看到:
有任何想法吗?甚至可能吗?我正在使用最新的 Strapi 版本 (v3) 谢谢
url-routing - 您如何在 Nuxt JS (SSR) 中使用来自无头 CMS 的路由?
问题
我正在尝试使用 CMS 定义的路由来获取内容,该内容用于确定在我的 Nuxt 前端中加载哪个页面。那么,您如何实现自己的逻辑来将路由连接到内容,并将内容连接到页面,同时保持 Nuxt 页面的所有出色功能?
任何帮助将不胜感激!
上下文
无头 CMS 正在兴起,我们希望在通用模式 (SSR) 下将我们的与 Nuxt 一起使用。
我们使用 Umbraco(一种免费托管的 CMS),它有一个灵活的路由系统,如果没有大量用户的强烈反对,我们就无法限制它。
注意:Umbraco 不是无头的,我们自己在 GitHub 上的 Umbraco Headrest 项目中添加了该功能
注意:每条内容都有一个包含其内容类型名称的字段
例如,以下内容结构是有效的。
所以,如果我们想用 nuxt 渲染这些特价商品,我们需要使用 Pages/SpecialOffer.vue。
问题
问题是这些特价商品的默认路径是:
/special-offer
/other-special-offer
/events/event-two/event-special-offer
编辑器还可以创建自定义路径,例如:
/holiday2020/special
(可能指向event-special-offer
)
编辑器还可以重命名内容,因此other-special-offer
可以成为new-special-offer
. new-special-offer
然后,Umbraco 将返回/other-special-offer
和/new-special-offer
。
尝试的解决方案
以下方法很有希望,但要么没有奏效,要么只是部分成功。
- 使用中间件将 URL 请求转发到 Umbraco 并根据结果确定要加载的组件(失败)
- 使用插件将 URL 请求转发到 Umbraco 并根据结果确定要加载的组件(失败)
- 从内容映射路线(部分)
- 使用使用响应数据加载动态组件的单个页面(部分)
1) 中间件方式
我们尝试创建对 CMS API 的异步调用,然后使用响应来确定要加载哪个页面。
中间件.js
问题
在服务器上运行时,中间件似乎在路由解析后运行,导致如下错误:
注意:第一次访问时,中间件只运行在服务器端,后续访问时,中间件只运行在客户端。
2) 插件方法
由于插件在生命周期的早期运行,我们认为我们会在那里尝试相同的方法并尝试调用 CMS 的 API 并根据结果确定要加载的组件。
插件.js
注意:插件在第一页访问时同时在服务器和客户端上运行。在随后的访问中,它们仅在客户端上运行。
问题
不幸的是,这也不起作用,因为app.router.beforeEach()
不允许异步代码。因此,API 请求从未得到解决。
3) 路线图法
除非您在构建后更改路线,否则生成路线图列表工作正常。这里的问题是您无法在运行时更新路由,因此在 CMS 中重命名或添加新内容不会反映在 Nuxt 中。
4) 动态组件方法
这种方法似乎是我们问题的默认解决方案,它涉及在 Nuxt 中使用单个页面来调用 API,然后动态加载组件。不幸的是,这种方法删除了 Nuxt 的大部分页面特定功能(例如页面转换)。
失去这些功能真的很不幸,因为 Nuxt 非常好,我们希望尽可能多地使用它!
Nuxt JS GitHub 问题
- 我在 nuxt.js GitHub 上提出了失败的异步问题作为这个错误
- 我评论了这个 GitHub 问题,这是针对同一问题的功能请求,但围绕该问题进行了一些很好的对话
javascript - 如何根据另一个参考的变化过滤参考?
我创建了一个具有 3 个参考字段的对象 - 类别、子类别和类型。我希望子类别显示与所选类别相关的子类别。
我尝试了文档filter
中提到的选项,但似乎无法使其正常工作,因此我将其删除。
这就是我定义categories
and的方式subcategories
。
任何帮助表示赞赏。
laravel - 如何从单个页面反应应用程序登录到另一个域上的 Laravel 7.x?
我有一个正在运行的单页create-react-applocalhost:3000
,我想登录到在(vhost)上运行的laravel 7.x实例。myapp.loc
最终我想要一个运行app.mysite.com
laravel的单页api.mysite.com
。
我可以直接从myapp.loc
. 我已经安装了Laravel 护照和脚手架等,并且可以创建客户端 ID 和秘密,但我不确定是否需要它们,如果需要,如何使用它们。
我不确定并且找不到任何文档的是如何从我的 SPA 登录到 laraval(在 上运行localhost:3000
)。我已经设置了我的 CORS 标头,并且可以连接不需要身份验证的请求,但我不知道如何登录或在登录后构造身份验证请求。
我找不到关于 axios.post / get 请求的任何文档,重点是从另一个域登录并维护基于用户的访问。
由于我的知识不足以提出一个简洁的问题,因此我觉得我应该从三个层面寻找答案。
- laravel 是否可以充当我来自另一个域的单页应用程序的后端?
- 如果是这样,是否有记录在案的最佳实践/陈旧的路径来实现这一目标?
- 如果是这样,示例 axios 登录和后续会话调用会是什么样子?(例如有效载荷和报头形状)
javascript - 如何在 Strapi 中更新用户
在 Strapi 中,每个用户定义的集合类型都有一个默认服务,允许创建/查找/更新/等。在相应的模型上。例如,Strapi 控制器中的以下代码将使用给定数据更新账单收集类型:
但是用户内置集合类型没有服务。我需要通过自定义控制器更改用户的角色。
reactjs - 如何使用 React/GatsbyJS 将 Contentful 数据随机呈现到 div onClick
盖茨比/反应菜鸟在这里。
我在 Contentful 中创建了一个名为 Topic 的内容类型。每个主题都包含一个标题、描述和主题页面的 slug。目前,我能够将每个主题呈现为页面上的卡片。我现在想弄清楚的是如何一次只渲染一张卡片,并在单击旋转按钮时随机更改卡片内容(标题/说明)。
我创建了这个快速演示,以直观地展示我的目标。
这是我渲染每个主题卡的地方:
我的理解是 gatsby 在构建时为每张卡片呈现 div,所以我对用户如何在点击时操作这些数据感到困惑。
gatsby - Netlify CMS 自定义预览不适用于 gatsby
我克隆了这个 gatsby netlify cms 入门博客并尝试添加自定义预览。我已按照所有说明进行操作,但仍然无法正常工作。这是我的config.yml
:
我添加了gatsby-plugin-netlify-cms
这样的:
在我的cms.js
,我有:
而我BlogPostPreview
只是渲染BlogPostTemplate
:
我错过了什么吗?我不这么认为。我将我的配置与官方的 starter repo 进行了比较,没有发现任何差异。当我转到管理门户上的新博客文章时,我只看到默认的纯 html。任何帮助将不胜感激。
content-management-system - Contentstack:无法编辑 URL 字段的属性
使用 Contentstack CMS,我一直能够编辑任何内容类型的 URL 字段的属性,但从来没有任何用处。现在我想我会有用它并想检查选项,但是当我在“内容类型生成器”中编辑内容类型时,URL 字段显示为灰色并且不响应点击。
我认为我一直都有全局管理员,所以我不认为这可能是权限问题。我需要在某处更改设置吗?
json - Contentful .NET SDK Newtonsoft.Json.JsonReaderException 将 JSON 反序列化为 POCO
更新 1 8.July.2020:也许我不应该从富文本字段类型开始,这似乎需要做很多额外的工作才能访问:
https://www.contentful.com/developers/docs/net/tutorials/rich-text/
更新 2 9.July.2020:难怪它不能将富文本序列化为字符串。看看它是如何存储富文本的:
“字段”:{“richTextField”:{“节点类型”:“文档”,“数据”:{},“内容”:[{“节点类型”:“段落”,“内容”:[{“节点类型”:“ text", "value": "这是", "marks": [], "data": {} }, { "nodeType": "text", "value": "rich text", "marks": [ { "type": "underline" } ], "data": {} }, { "nodeType": "text", "value": "field.", "marks": [], "data": { } } ], “数据”: {} } ] },
重新组装成 HTML 看起来并不有趣。如果我想让它分解,我会使用 HtmlAgilityPack。
2020 年 7 月 9 日更新 3:
实际上,这没有任何意义。该文档建议我的模型在我的 POCO 中使用这个 Contentful Document 类,并且它们应该包含额外的 Contentful-specific 代码来访问数据。
无头 CMS 的主要目标之一是避免供应商特定的 API(锁定)。有效的方式是 CMS 只是水合 POCO,基本上是从 JSON 反序列化。没有其他无头 CMS 会从富文本填充这样的结构,因此仅使用这种疯狂的 HTML 格式会导致供应商锁定或需要进行重大代码大修来更改 CMS(不仅仅是更改 POCO水合逻辑,但改变 POCO 本身)。更不用说像这样构建 HTML 对 JSON 负载和 CPU 负载的影响了。无论如何,对于富文本字段(可能是 CMS 中最常见的元素之一)的内容架构,有一堆特定于供应商的编码只是为了获得价值,而前端变得太清楚了CMS。所以我必须反序列化为某种中间对象,然后使用它们来填充我的视图模型。或者我可以将围绕 Document 的所有逻辑复制到我自己的项目中,但这听起来几乎更糟。
我看不出任何人如何使用这个系统。请纠正我的误解。
原始线程
我在https://www.contentfulcommunity.com/上发布了这篇文章,但我不知道如何通过版主获取该帖子。
我尝试按照 Contentful .NET SDK 的这些说明来访问条目:
https://github.com/contentful/contentful.net
我可能正在使用较新的 .NET Core,但它不会以这种方式编译。这编译:
但是我从 JSON 反序列化到 POCO 时遇到异常。这是条目的 JSON:
这是一个例外: