引言: 如果说WordPress,Joomla,Drupal是美图秀秀,那么Orchard就是Photoshop!
orchard并没有提供太多的现成业务功能,所以你在其它CMS轻易的找到诸如广告酷炫插件,但是发现在orchard中很难找到,
Orchard是由微软于2010始启动,使用最新.NET技术栈实现的免费开源内容管理系统。项目开发人员多数来自ASP.NET团队,是继Petshop,Oxite之后的重磅开源项目!
它整合了上百个开源项目,如autofac,nhibernate等,它拥有非常复杂的模块机制,可以动态编译模块,因此只需将代码发布即可运行。
同时在CMS系统架构上,它抽象了内容类型(ContentTypes),Orchard认为一切内容皆由ContentPart与ContentField构成,你可以自由的设计内容类型,这是它相比其它CMS强大的原因之一!
在拥有了极灵活的内容管理机制后,Orchard也拥有极复杂的渲染机制,首先它采用了类似Photoshop作图方法的图层思想,任何Url都对应一条Content或者Projection,同时也将满足Layer层级规则的层“叠加“,最终输出的视图模型(ViewModel)将是一个多层结构的,且每层都拥有多个Zone的数据结构。
ps:看起来就像一本书,一页纸就是一个Layer,每页纸上有N个Zone,所有纸的Zone都是固定的,在theme.txt里面定义好的,每个Zone里面拥有N个Widget。
Layer
Zone
Widget
Content
Part+Field
以上树中每一类结构都将对应一个形状(Shape),在渲染此模型时采用形状候补(Alternates)规则来命中html模板,在渲染ProjectionWidget(通常是一个列表)时,则寻找
Widget Wrapper类型的形状
Widget形状
List形状
在寻找这些形状的时候,又有寻找规则,即先前所述的候补规则,如某个Projection的Id为18,那么在寻找List模板的时候会去找 List-18.cshtml(更多规则参考文档)。