问题标签 [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.

0 投票
1 回答
408 浏览

strapi - Strapi 自定义控制器从管理 UI 执行

我正在为我的一个模型扩展一个创建控制器:

例如,如果我从 Postman 发出请求,它可以正常工作,但是如果用户从管理 UI 创建新对象,是否可以这样做?

当我从邮递员发送请求时看到来自 Strapi 的控制台时:

但是,如果我从管理 UI 创建一个新对象,我会看到:

有任何想法吗?甚至可能吗?我正在使用最新的 Strapi 版本 (v3) 谢谢

0 投票
2 回答
1129 浏览

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

尝试的解决方案

以下方法很有希望,但要么没有奏效,要么只是部分成功。

  1. 使用中间件将 URL 请求转发到 Umbraco 并根据结果确定要加载的组件(失败
  2. 使用插件将 URL 请求转发到 Umbraco 并根据结果确定要加载的组件(失败
  3. 从内容映射路线(部分
  4. 使用使用响应数据加载动态组件的单个页面(部分

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 问题,这是针对同一问题的功能请求,但围绕该问题进行了一些很好的对话
0 投票
2 回答
2552 浏览

strapi - 如何覆盖 Strapi 管理面板端点?

在管理面板中 - 我有一个 content-type products,它显示了数据库中的所有产品(MongoDB)

在此处输入图像描述

假设我想编辑一个product并且当我点击Save按钮时,我想点击一个自定义 API/覆盖更新我的 products集合的现有端点!

在此处输入图像描述

是否可以自定义或覆盖管理面板 API?

0 投票
1 回答
425 浏览

javascript - 如何根据另一个参考的变化过滤参考?

我创建了一个具有 3 个参考字段的对象 - 类别、子类别和类型。我希望子类别显示与所选类别相关的子类别。

我尝试了文档filter中提到的选项,但似乎无法使其正常工作,因此我将其删除。

这就是我定义categoriesand的方式subcategories

任何帮助表示赞赏。

0 投票
2 回答
199 浏览

laravel - 如何从单个页面反应应用程序登录到另一个域上的 Laravel 7.x?

我有一个正在运行的单页create-react-applocalhost:3000,我想登录到在(vhost)上运行的laravel 7.x实例。myapp.loc

最终我想要一个运行app.mysite.comlaravel的单页api.mysite.com

我可以直接从myapp.loc. 我已经安装了Laravel 护照和脚手架等,并且可以创建客户端 ID 和秘密,但我不确定是否需要它们,如果需要,如何使用它们。

我不确定并且找不到任何文档的是如何从我的 SPA 登录到 laraval(在 上运行localhost:3000)。我已经设置了我的 CORS 标头,并且可以连接不需要身份验证的请求,但我不知道如何登录或在登录后构造身份验证请求

我找不到关于 axios.post / get 请求的任何文档,重点是从另一个域登录并维护基于用户的访问。

由于我的知识不足以提出一个简洁的问题,因此我觉得我应该从三个层面寻找答案。

  1. laravel 是否可以充当我来自另一个域的单页应用程序的后端?
  2. 如果是这样,是否有记录在案的最佳实践/陈旧的路径来实现这一目标?
  3. 如果是这样,示例 axios 登录和后续会话调用会是什么样子?(例如有效载荷和报头形状)
0 投票
1 回答
7448 浏览

javascript - 如何在 Strapi 中更新用户

在 Strapi 中,每个用户定义的集合类型都有一个默认服务,允许创建/查找/更新/等。在相应的模型上。例如,Strapi 控制器中的以下代码将使用给定数据更新账单收集类型:

但是用户内置集合类型没有服务。我需要通过自定义控制器更改用户的角色。

0 投票
1 回答
323 浏览

reactjs - 如何使用 React/GatsbyJS 将 Contentful 数据随机呈现到 div onClick

盖茨比/反应菜鸟在这里。

我在 Contentful 中创建了一个名为 Topic 的内容类型。每个主题都包含一个标题、描述和主题页面的 slug。目前,我能够将每个主题呈现为页面上的卡片。我现在想弄清楚的是如何一次只渲染一张卡片,并在单击旋转按钮时随机更改卡片内容(标题/说明)。

我创建了这个快速演示,以直观地展示我的目标。

这是我渲染每个主题卡的地方:

我的理解是 gatsby 在构建时为每张卡片呈现 div,所以我对用户如何在点击时操作这些数据感到困惑。

0 投票
1 回答
649 浏览

gatsby - Netlify CMS 自定义预览不适用于 gatsby

我克隆了这个 gatsby netlify cms 入门博客并尝试添加自定义预览。我已按照所有说明进行操作,但仍然无法正常工作。这是我的config.yml

我添加了gatsby-plugin-netlify-cms这样的:

在我的cms.js,我有:

而我BlogPostPreview只是渲染BlogPostTemplate

我错过了什么吗?我不这么认为。我将我的配置与官方的 starter repo 进行了比较,没有发现任何差异。当我转到管理门户上的新博客文章时,我只看到默认的纯 html。任何帮助将不胜感激。

你可以在这里查看我的回购

0 投票
2 回答
126 浏览

content-management-system - Contentstack:无法编辑 URL 字段的属性

使用 Contentstack CMS,我一直能够编辑任何内容类型的 URL 字段的属性,但从来没有任何用处。现在我想我会有用它并想检查选项,但是当我在“内容类型生成器”中编辑内容类型时,URL 字段显示为灰色并且不响应点击。

我认为我一直都有全局管理员,所以我不认为这可能是权限问题。我需要在某处更改设置吗?

0 投票
1 回答
170 浏览

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:

这是一个例外: