如何在Keystone JS中自定义管理面板? (或者:Keystone JS演示项目/博客中的自定义管理页面如何工作?)

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

我们希望在一个大型项目中使用KeystoneJS,我们希望能够自定义管理面板。有一个很好的示例here,我一直在审查此PR to the project。尽管该示例看起来似乎对我们有用,但是我不理解其背后的逻辑,即,我们需要实现什么才能使其起作用,其可能性和约束是什么。

是否是当您使用Keystone NextJS应用程序(对我们来说是好方法)时,如果添加文件夹/admin/pages,Keystone应用程序将在其中查找并使用那些自定义管理页面而不是常规的管理页面?我假设我们也可以从这些页面完全访问应用程序的其余部分,控制器和数据库....

[我也注意到JedWatson在https://github.com/keystonejs/keystone/pull/1019中指出

请注意,这缺乏SSR支持,我没有在示例中投入太多精力,但在其他方面(我认为)在功能上是相同的。

它仅对管理部分缺少SSR支持,还是添加自定义管理页面会在某种程度上影响应用程序其余部分的SSR支持? (SSR是我们接下来使用的原因)

感谢您提供任何信息。

node.js content-management-system keystonejs headless-cms
1个回答
1
投票

自定义页面有两种api,一种是pages应用程序构造函数中的admin-ui选项,第二种是梯形校正构造函数中hooks API的一部分。

  1. pages:这是旧版,仅添加自定义页面,它不会覆盖admin-ui中的现有列表页面,只有在配置不正确时才会隐藏它们。通常Dashboard是可见的,所有列表都在此处列出。
  2. hooks:这是新增功能,预计会添加更多自定义选项,但不幸的是,我的PR已过时,它们不是规范核心团队想要添加的规范。这也不会删除任何页面。

admin ui作为使用webpack配置构建或加载的react应用程序运行。这就是为什么没有ssr支持的原因。即使该示例使用自定义管理目录,但未由nextjs组件加载,也使用安装admin-ui react app的webpack服务器动态加载了该目录]

如果您真的想拥有ssr,则可以借鉴很久以前用作POC的封闭式PR的一些知识。但这太过分了,因为admin-ui之后有更多更新。

hooks / pages可以访问有限的核心访问权限,其中有些访问基于React上下文,提供者和使用者挂钩。您可以使用react-apollo挂钩,因为已经在React上下文的根目录中包装了提供程序。您还可以使用反应路由器挂钩,它们已升级到最新版本。它无权访问服务器端上下文或控制器。 (不确定您的控制器是什么意思)

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