What is the difference & relationship between layers, content types,
modules & widgets. And why are there no pages?!
层控制哪些小部件出现在特定页面的哪些区域(由主题指定)中。他们有规则,例如,我可以有一个名为NotHomePage的层,并为其指定规则not url("~/")并且添加到该层上区域的任何小部件都会出现在除主页之外的任何地方。
内容类型就是您在网站上创建的内容的类型。页面是您使用 Orchard 开箱即用的内容类型。它包含一个名为Route的部分,因此您可以选择创建的第一个属性是 slug,例如 mydomain.com/ sweet-page。
模块基本上是为网站创建特定功能的 MVC 区域。一个模块可能包含一些自定义部分、一些脚本、一些样式等。有几个联系表单模块,但如果您使用已经在默认 Orchard 配方中烹制的自定义表单模块,您可能会了解更多信息(我认为你必须启用它,但它就在那里。)
小部件就像您添加到层上的区域(由主题指定)的代码片段,您可以在其中拥有任意数量的小部件。也许您的主页有一个“MainContent”区域,您的客户希望在其中拥有他们的 tagLine 和一个小表格来注册新闻通讯。您可以为标语添加一个 HTML 小部件(其中包含基本信息,如 HTML 的 WYSIWYG 编辑器)和一个自定义表单小部件(将处理创建注册请求。)
Why is TripelFirst a layer for example - not a widget?
TripelFirst 不应该是一个层,它应该是TheThemeMachine 主题中的一个区域,即页面上可能包含或不包含小部件的区域。
Why can't I just make a 'contact' page and add a widget
to it called 'Contact Form'?!
你可以,但你需要先定义几件事。
- 创建一个名为 ContactFormRequest 的内容类型(您可能需要启用“内容类型”模块)
- 添加字段(名字、姓氏等),就像您将属性添加到类定义中一样
- 使用 slug /contact创建一个名为Contact的页面
- 使用规则url("/contact")创建一个名为ContactLayer的层
- 将自定义表单小部件添加到 ContactLayer 并确保选择ContactFormRequest作为内容类型
- 派对
这应该为您提供您正在寻找的基本行为。当然,您可以进一步自定义它。
What would be the best practice way to add a Contact Us page -
as a layer or a Content Type?
就个人而言,我更喜欢使用我自己的内容类型的灵活性,例如 ContactFormRequest。如果将来我的客户想要将身高、体重和年龄作为属性添加到联系表单中,我只需将这些字段添加到内容类型,其余的由 Orchard 处理。