Orchard定制模块开发:带有字段的零件?

时间:2013-03-14 02:47:06

标签: orchardcms

我需要创建几个不同的模块,所以我正在寻找最好的方法,我希望那些知情人士可以提供一些建议。

我想要实现的目标理论上可以使用Orchard及其现有默认模块提供的ContentTypes,Fields,Taxonomies,Queries和Projections的混合来完成。

然而,由于我在没有经过培训或经验的情况下为最终用户创建模块,我真的需要简化和手持。

我写的模块将来会重复使用,我希望能够轻松添加/删除字段。

我需要创建一个与内容管理器分开的管理部分来管理模块(用于易用性位)。

目前的做法似乎是使用我在模型中需要的输入创建零件,并按照传统的MVC方法手动写出形状等。

我问的问题是:使用Fields模块为我处理这些输入是否可行?然后我(相信我)可以利用Shape渲染作为Fields模块的一部分准备好(因为我真的很喜欢Fields模块以及它的可扩展性)。

这种方法的关键缺点是什么?

我试图说清楚而不是太具体,但我愿意提供更多信息,如果我没有。

1 个答案:

答案 0 :(得分:2)

我认为这里更具体,不会有害。但要以同样的方式回答:

部件甚至比字段更具可扩展性,并且所有部件都使用形状来构建布局(我不确定您在Fields模块中发现了什么引起了您的注意,您认为部件可以实现吗?)。

然而,部分和字段之间存在一些关键差异(因此我认为您的问题是如何为要存储的数据建模):

  • 部件可以(但不一定应该)对应于数据库表,即部件可以将其数据存储在表中。
  • 字段的数据以序列化的XML格式存储在内容项的ContentItemVersionRecord中(因此由于序列化而表现更差,但由于不必加入或延迟加载其他表而更好;具体的性能差异取决于用法)。
  • 由于存储差异,可以直接查询部件的属性并将其用于过滤或排序,而无法查询字段。投影仪模块通过为字段创建索引来克服这个问题。
  • 与存储有关的部分可以包含任意数量的信息,而字段只能包含一个(这是字段的值)。
  • 虽然部件可以附加到内容类型一次,但可以多次附加字段。
  • 部件附加到内容类型,而技术上字段附加到部件(当您从管理UI将字段附加到内容类型时,实际上将创建与该类型具有相同名称的不可见部分)。