繁体   English   中英

Neos CMS 2.0:编辑插件中的记录

[英]Neos CMS 2.0: Editing records in a plugin

场景:在Neos 2.0站点中,我需要显示内容项,包括对项进行排序,过滤和使用分页。 所有项目都具有相同的内容结构,包括标题,描述,开始日期,结束日期等。(它或多或少是事件数据库)。

解决方案的想法:我对Neos仅有很少的经验,但是到目前为止,我认为将其实现为遵循经典数据库后端方法的插件是有意义的:将模型对象持久化为正常记录(不是Neos节点)。 我已经创建了一个包和插件,到目前为止,显示项目仍然可行。

问题:目前,我遇到的困难是编辑事件。 Neos文档未提及任何有关在后端编辑与插件相关的内容的内容。 因此,以MVC术语来讲,我只需要在后端添加,更新和删除这些事件的路由。

问题:在Neos中这样做的方法是什么? 还是我错了,而插件是不合适的方法?

插件方式

因此,如果您下定决心,当然可以使用自己的Flow插件来显示和编辑数据。 要走的路是定制的后端模块。 编写这些API的API尚未公开,但是您仍然可以尝试从Neos的核心模块中举例,自己编写代码。 API的不稳定性不应该吓到您太多,因为您将不需要很多东西,并且您将自己实现大多数事情。

基本上,您将创建Flow插件,该插件将实现用于列出和更新记录的自定义API,然后为其构建编辑界面。 您可以按照自己喜欢的方式实现自己的API,从纯JSON到REST甚至是GraphQL,无论如何,它与Neos甚至Flow都没有真正的关系。

这种方法有很多开销,因为Neos不会以任何方式帮助您编辑或存储内容,并且怀疑它在大多数情况下是否合理。

内容存储库方式

我将尝试解决您关于使用Neos Content Repository的假设,并希望表明它比表面上的功能强大得多

1)最后,将有数百个项目。 我不希望在单个父节点下有那么多节点,获得良好的编辑体验。

这是一个非常有效的担忧。 当前,当您在同一级别上有数百个节点时,用户体验并不是最佳的。 此功能将大大改善这种情况: 基于流的节点的处理

目前,只有一种设置可以大大改善这种情况下的用户体验。 将此配置添加到Settings.yaml文件将使树仅在加载时扩展到第一级:

TYPO3: Neos: userInterface: navigateComponent: nodeTree: loadingDepth: 1

然后,您可以通过站点本身的前端(分页,过滤等)浏览记录,并且仅在添加新节点时才需要树。 但是即使在这种情况下,即使在同一级别上有数百个节点,该树也可以非常可靠地工作。

2)我想排序,过滤等工作主要在TypoScript中完成–我尽量避免使用普通的PHP。

我不知道您要避免使用TypoScript的原因是什么。 TypoScript只是纯PHP代码的一个薄包装,您可以在PHP的任何部分(自己的对象,EEL帮助器,FlowQuery操作等)中使用PHP。 如果您关注性能,则可以使用ElasticSearch adapter列出记录,即使有数百万条记录,也可以为您带来出色的性能。

但是,即使使用普通的TypoScript和FlowQuery,最多可以有成千上万个节点,但在大多数情况下性能还是可以的,特别是如果视图将被缓存的话。

3)有多个可以组合的过滤器(浏览器中的用户),一旦选择了过滤器,用户应该只能将那些过滤器添加到实际有结果的地方。 如果可以在TypoScript中实现此逻辑,我会感到非常惊讶。

想要让您感到惊讶,但是使用FlowQuery和TypoScript进行过滤与使用jQuery过滤DOM一样容易...可能只需一个过滤操作就可以满足您的所有需求。

但是,如果您需要更多自定义内容,则始终可以再次使用纯PHP 编写自定义FlowQuery操作

摘要

如果您不想自己实现所有功能,请使用Content Repository和Neos的本机处理方式,最好将多余的时间/预算用于改善您认为仍然与您的Neos UI有所不同的部分任务。

编辑 :自定义后端模块的创建现在记录在这里: http : //neos.readthedocs.org/en/2.1/ExtendingNeos/CustomBackendModules.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM