五、扩展Orchard(一) First Steps into Orchard
Looking at Orchard as...
介绍Orchard基本知识的最好方式是用户的角色访问时所看到的:Normal user(aka reader/visitor/guest),administrator,designer and developer.
User
对于用户,Orchard看上去就是一个网站。
Administrator
administrator有权访问网站的几个更多方面:
- 安装时,他能看到安装页面。
- 做为用户同样能看到前端
- 能打开控制面板,配置网站和编辑内容
- 能使用命令行
Designer
designer能修改网站的外观。他能编辑存在主题的设置或新建主题。一个主题包含了网站显示的所有东西。有时也叫 skin 或 template. 它转换content到html并在浏览器中显示出来。
Developer
developer对orchard架构有完全的理解并能扩展它。Orchard由模块组成。
- Extension module: 添加一些(low-level)feature用于增强网站。
- Content module: 添加查看和编辑内容类型需要的所有东西。
- Widget Module: 在存在的内容模块的一边添加小的可视内容。
- Theme module: 更改存在的内容模块的外观。
- All the above: 一个模块有很多扩展,content types,widgets,themes都在一个包中
Orchard被设计成高可扩展性,这意味着几乎任何与你交互的都能被扩展、替换 或禁用。Orchard自带了很多模块,但是designer 和 developer能更改他们或创建更多的。也可以在Orchard社区共享你的模块和安装其它人开发的模块。
Content
- Content:在网站前端显示的数据。
- Content type & Item: content type就像是动态类;它定义了一个指定内容类型的数据结构,这个结构可以修改。content item 是 content type的一个实例,所以,博客能是一个content type,你写的一篇博文就是一个 content item。
- Content part: 由于多个内容类型有共享许多方面,这些方面可以独立创建,并在每个内容类型中重用。如一篇博文能有评论,一个照片也能有评论,所以,替换创建两次评论的实现,我们能创建一个评论content part,然后重用它到两个内容类型中。
- Content field: 本着同样可重用性的精神,我们能有必须以某种方式工作的更小的类型。例如:多数内容类型需要日期、电话号码、email等等。自从它们不是简单的属性,因为我们可以附加一些行为,但他们也不是内容类型(too “small”)。
- Record: 为了能保存 content type/part到数据库中,需要一个记录到”linked”,它是一个应该保存所有属性的类。例如:A Map part 必须保存坐标,所以它将会链接到有这两个属性的record,Orchard会装载和保存它。你不会处理records除非你自己开发的模块。但当你遇到它的情况下理解这个概念很有用。
注意内容类型只能有一个每种类型的content parts ,但是它能有很多同类型的fields。例如:一篇博文仅能有一个评论方面,它能有很多日期(创建日期、修改日期等)。