我已经研究了一段时间的Orchard CMS,我对他的一些未来很满意,但我也有一些问题,我不知道如何处理它们:
所有项目(内容类型)都是线性的,它们不支持树状数据结构(例如:书籍>标题>网络链接)
一个大问题(取决于你看到的东西)是模型和项目的视图是耦合的(内容部分>驱动程序与显示/编辑器视图)
因此,对于新页面,模型,视图和位置被锁定,您只能拥有模型的一个视图.
使用高级语言期货不适合初学者开发人员并且不是很清楚(动态函数,粘土对象 - 美好的未来......)
// Creating table VPlayerRecord
SchemaBuilder.CreateTable("VPlayerRecord", table => table
.ContentPartRecord()
.Column("Title", DbType.String)
.Column("VideoUrl", DbType.String)
.Column("WidthPx", DbType.Double)
.Column("HeightPx", DbType.Double)
);
Run Code Online (Sandbox Code Playgroud)
这种语法对于初学者开发人员来说并不是很清楚,并且有点过度设计.另外因为模型是视图中的动态对象,所以我们没有任何智能感知支持.
要构建一个新页面,我们有三个分离度(3个项目)
您如何使用Orchard CMS在项目中克服这些问题?以及你发现和修复的其他问题:)
编辑 2:您只能拥有模型的一个视图是不正确的。您可以拥有任意数量的显示类型。例如,项目的摘要视图就是以这种方式处理的。您还拥有管理视图的显示类型,并且可以添加自己的显示类型。不确定“位置已锁定”是什么意思。如果我们用位置来表达同样的意思,我很困惑你怎么会有这样的想法。可以通过placement.info更改部件和字段的相对位置。
编辑 3:即使有了这个例子,我也不确定这里会遇到什么困难。在我看来,这是相当有表现力的。你自己感到困惑还是你只是假设人们会感到困惑?您声称这是过度设计的。那么你会如何简化它呢?您认为哪些功能是不需要的?您不会在模型对象的视图中获得 IntelliSense,但这样做所获得的灵活性在很大程度上证明了它的合理性。询问任何真正使用过它的人。
新的第四点:我看不出你为什么要把它分成三个模块,或者为什么你认为你应该这样做。我当然从未见过这样的例子。我还要指出,创建部件和类型通常由两个不同的人完成(类型创建者通常只是现有部件的使用者)。但同样,您不必将它们分成不同的模块。主题显然与其他两个问题不同,作为一个单独的项目是有意义的,但主题可以附带代码,并且实际上原则上可以完成模块正在执行的所有操作。因此,如果您想将部件、类型和主题打包到一个包中,您可以这样做。这没有多大意义,但你可以。最后,我不明白这四点与页面创建有何关系。