[译]:Orchard扩展——初步理解Orchard

返回目录索引
原文链接:First Steps into Orchard
译文链接:Orchard扩展——初步理解Orchard

本文的目标是帮助我们快速了解Orchard。由于Orchard中有太多的概念要理解,所以在深入理解之前,我们有必要对它有个整体的了解。因此,本文开始是以任何web用户都能理解为共同基础,然后在逐步深入的同时,引入相关的专业术语。

当你完成本文的阅读后,你就对Orchard有了足够的理解,以此你可以在处理Orchard(以一个设计者或开发者的身份)时,不会被它的高级架构和术语等搞晕。在本文介绍中,每一个新的术语都是以粗体表示,因此你需要在往下学习前确保你已经理解了遇到的术语。

本文中还包含了许多其他页面的链接 —— 含有相关内容更具体的解释,因此你可以将本文作为出发点。关于一些Orchard一般性的问题,如什么是Orchard,Orchard从何而来,请阅读:原文:Frequently Asked Questions。而关于更多技术上的内容,请阅读:原文:How Orchard works

Looking at Orchard as…

介绍Orchard基础最好的办法是看用户在访问网站时,能够有什么样的角色。其中包括:普通用户(亦叫读者/访问者/访客——reader/visitor/guest),管理员,设计者和开发者。

用户

Orchard网站和其他任何网站一样 —— 以一个前台页面开始,用户-user可以通过首页内的链接访问其他页面。而由于网站涉及不同领域,它的内容也会不一样(可以是静态页面,博客,wiki,电子商务等等)。

管理员

管理员可以访问网站的以下几个方面:

  1. 在安装Orchard时,可以看到安装页面。此步骤将会创建用于存储网站内容和设置的数据库。关于如何安装Orchard,见:原文:Install-Orchard译文:Orchard入门——安装Orchard

  2. 当前,作为用户,它也可以访问前台页面。

  3. 他们可以打开控制面板,可以进行如下两个操作:关于控制面板的内容夹:原文:Getting Around the Dashboard译文:Orchard入门——Orchard控制面板概览

    1. 配置网站:编辑网站的行为和外观设置(或安装/禁用/升级它们)。关于更多网站配置见:原文:Building Your First Orchard Site译文:Orchard入门——构建你的第一个Orchard网站

    1. 编辑网站内容。关于更多网站内容编辑见:原文:Building Your First Orchard Site译文:Orchard入门——构建你的第一个Orchard网站

  4. 使用命令行:可以通过命令行来管理脚本执行,这样就可以比较容易的处理自动化操作。关于更多命令行内容见:原文:Using the Command-Line Interface译文:Orchard网站管理——使用命令行界面

设计人员

设计者可以修改网站的外观,如原文:Previewing and Applying a Theme。他还可以编辑现有主题(如果提供)的设置,或创建一个新的主题。
在网站中,主题是用于控制网站整体的视觉呈现。它有时还叫做皮肤或模板。它将内容(用户产生的数据)转化为可以在浏览器中显示的html内容。例如:当你写了一篇博文,主题会定义菜单、标题、主体、评论等显示在什么位置以及如何显示。

设计者会依据需要定制到什么程度来修改主题的部分或所有元素,关于如何自定义主题内容见:原文:Customizing Themes译文:Orchard网站定制——定制主题。而主题中主要有以下类型:

  • 定义布局和区域的文档:这是网站页面的整体展示(不含有任何具体内容)。例如:它可以定义网站有1、2、3列。而区域则是布局内的一个部分,它是准备接收任何内容的一个容器。注意,一个灵活的主题(如Orchard提供的)可以自动隐藏空区域。因此,尽管下图显示了许多区域,但大部分区域不会显示在页面上 —— 由于他们没有被使用。

  • 视图——Views: 具体内容的可视化显示。一个视图界面通常是一个后缀为.CSHTML 或 .ASPX的文件。它为显示特定类型内容提供html代码。因此,一个含有很多内容的页面(菜单、博文、评论等)是由各个相关的单个视图组合后创建出来的。

  • 样式表——Stylesheets, Javascript 和媒体文件:它们用于修改视图显示的视觉定义。它们是一系列文件,如"Site.css", jQuery 或者背景图片,边框和图标。

  • 部件-Widget:一个网页通常含有一个主要内容(如博文),但常常还会在两边有小块的信息,如标签云、最近博文列表,twitter订阅等。更多部件内容见:原文:Managing Widgets译文:Orchard入门——部件管理

  • 层和特定区域之间的绑定:就像一组页面的描述。一旦定义,你可以控制每一个内容(或部件)显示在哪里。例如:我们可以为博文定义一个层组,然后在其一边添加一个标签云。

更高级的主题还可以通过编写代码来进一步定制外观显示。

开发人员

开发人员对Orchard架构有一个比较完整的了解,并可以扩展它。

Orchard是以模块组织的。每一个模块通过一个高级别的目标实现来为网站提供构建块(又叫附加或外挂)。例如,你可以有以下模块:

  • 扩展模块:为网站添加有用的功能(底层的)。如:添加搜索功能,详见:原文:Search and Indexing译文:Orchard网站内容管理——搜索与索引,或者添加外部编辑器(如Liver Writer)支持,详见:原文:Blogging with LiveWriter译文:Orchard网站内容管理——使用Live Writer写博客

  • 内容模块:为查看/编辑内容的类型(如博文)添加所需要的一切(代码和可视化)

  • 部件模块:在内容模块旁边添加小的可视化内容,如在博客边上添加标签云

  • 元素模块:在Orchard.Layouts模块中添加小的要包含的元素,这是让你的设计页面显示在浏览器中的核心模块。

  • 主题模块:改变已有的内容模块的外观。—— 这是设计师通常需要创建的模块。

  • 上面所有的集合:一个模块可以在一个包中含有多个扩展、内容类型、部件和主题。

Orchard采用了高度可扩展设计 —— 这意味着几乎所有你要交互的事都可以扩展,取代或禁用。
Orchard默认提供一系列的模块,为此可以提供给用户/管理员良好的体验,但是设计者/开发者可以修改他们,或者创建更多,关于如何创建模块见:原文:Getting Started with Modules。它还允许你共享你的模块到Orchard社区,或者安装有其他人开发的模块。更多内容见:原文:Packaging and Sharing a Module原文:Installing and Upgrading Modules

Orchard默认只附带一个主题 —— [The Theme Machine]。但是,它含有足够的区域供不同的安排,这非常重要,因为一个网站在一个时间上只能使用一个主题。这就意味着主题必须足够灵活以允许所有的页面使用不同的布局。如果它无法满足你,你可以拷贝它并添加更多区域。

Orchard Gallery中,含有大量的主题和模块以供安装。你可以通过浏览它并从中找到额外的可用功能。

内容

为了填充你的网站,Orchard允许你编辑和展示内容。在默认安装中,它含有创建页面和博文的功能。但是他也允许你定义自己的内容,这很重要,因为你可能需要创建事件或简介,或任何其他的内容,但在Orchard中是没有默认提供的。本节介绍了提供该功能的各种元素:

  • 内容——Content: 通常是网站前台页面显示的数据。可将它作为调用用户产生的任何东西的通用方式。

  • 内容类型和项目 —— Content Type & Item: 内容类型类似于动态类,它用于定义特殊类型内容的数据结构。结构可以被修改,管理员也可以修改结构。内容项是内容类型的一个实例。因此,BlogPost是一个内容类型,当你写了一篇博文,那篇博文就是一个内容项。

  • 内容块——Content Part: 因为内容类型共享许多方面,那些方面可以单独创建,也可以在每种内容类型中重复使用。如:一篇博文可能含有评论,一张照片也可以含有评论,因此,我们可以创建一个评论部分,并在两个内容类型中重用,这避免了在实现两次评论功能。

  • 内容字段——Content Field: 与内容块一样,为了可以重复使用,我们可能需要创建更小型的类型来处理必须要以某些方式表现的内容。例如:大部分内容类型包含日期、电话号码、电子邮件地址等。他们不是简单的属性,因为我们可以附加一些行为(如验证规则);他们也不是内容块,因为他们太“小”。

  • 记录——Record: 为了可以保存一个内容类型/部分(保存到SQL数据库),它需要关联到一条记录。它是一个类,且它的所有属性都需要保存。例如:Map部分必须保存它的坐标(纬度和经度),因此他会关联到一条含有两个属性的记录,然后Orchard会完成加载和保存的操作。你不许要自己处理记录,除非你开发自己的模块,但是在你遇到它时,理解本概念是有帮助的。关于更多开发模块见:原文:Getting Started with Modules

注意,在每个内容类型中,每个内容块最多只能有一个。但是在同一类型中含有多个字段。原因在于这些概念的语义含义。例如:一篇博文中只能有一个评论部分,但它可以有很多日期(创建日期、最后更新日期等)。

由于Orchard是开源项目,你可以自由贡献你想要的功能或模块。更多内容见:原文:Frequently Asked Questions原文:Contributing Patches

结语

至此,你应该对Orchard有一个比较好的理解。下一步将会更多的讨论模块、主题以及Orchard的底层架构。这在进行扩展开发之前是比较有用的。


译:奇葩史

[译]:Orchard网站管理——创建动态表单

返回目录索引
原文链接:Create Dynamic Forms
译文链接:Orchard网站管理——创建动态表单

Dynamic Forms模块用于从网站前台获取访问者提交的信息。Dynamic Forms可以和其他内容类型合起来使用,也可以单独使用。Dynamic Forms可用于创建 联系我们订阅 部件/页面等等。提交信息可以存储在Orchard中,而且可以在以后导出。

启用Dynamic Forms模块

Dynamic Form模块与Custom Forms模块有所不同,它可以和其他内容类型合作获取前台用户输入,还可以选择存储表单提交内容。如果你选择存储提交的内容,你可以在控制面板中的表单提交菜单内查看。提交后存储的内容可以通过导入导出模块导出。要启用Dynamic Forms模块,可以在控制面板的模块中启用它。:

Enabling Dynamic Forms in Orchard CMS

一旦启用此功能模块后,在控制面板的新建下面会出现Form内容类型。

如前所述,Dynamic Forms可以和其他内容类型创建提交内容,也可以单独在网站中创建form。点击控制面板中新建下的Form创建一个新的form,然后会出现form编辑界面,可以让你创建自己的form。在此界面中,你可以选择存储提交,或者创建内容表单来提交值。下面,我们创建部件,然后添加到界面 —— 用于方便访问者添加邮件订阅。其中用户邮件地址将成为捕获的对象。

将表单提交作为一个内容类型存储

为了获取动态表单上的访问者的邮件地址并将其存储为内容,我们需要在Orchard中创建一个新的内容类型。首先进入控制面板,选中内容定义,然后点击右上角的创建新类型按钮。在界面中输入类型名称’Subscribe Form’。

Subscribe Form content type

下一个界面会让我们选择新建的Subscribe Form内容类型需要添加什么元件。由于我们要获取的是一个电子邮件地址,所以此处不选择任何选项,然后点击保存。现在,我们已经创建了一个新的内容类型,下面我们为其添加一个电子邮件地址字段,类型为Input Field

Subscribe Form email field

在添加了名为Email的输入字段后,我们现在可以自定义新的输入字段的类型验证 —— 此处我们在输入类型中下拉选择Email。其他字段自己看着办 —— 随便填。

Subscribe Form

至此我们的内容类型已经含有我们需要的所有部分,下面需要在界面上创建新的部件。我们现在已经启用了Dynamic Forms模块并创建了新的内容类型(Subscribe Form)—— 用于获取访问者的邮件地址。接下来就是创建部件了。

创建Form部件

在控制面板中选择部件菜单,点击AsideSecond区域后的添加,以此添加一个Form部件。

此处官网图有误,故替换

Add Widget to AsideSecond

Add Widget to AsideSecond

剩下的事情就是调整我们新建的窗体部件设置。例如,将层设为默认,位置设为1。这将导致部件在所有页面都会在AsideSecond区域显示,且显示在最前。在窗体的布局部分,你需要添加表单字段,并将其绑定到你的内容类型。在布局部分,见下图突出显示部分,在界面右侧,拖动一个Email Field字段控件到布局界面上。

Forms Widget Layout

一旦你松开鼠标,一个 Edit Email Field 界面会弹出来。按照下图填写内容。

Edit Email Field

然后点击 Validation 标签,确保Required勾选框已勾选。现在可以保存窗体,但我们并没有完成。在保存之后,我们可以将其绑定到我们之前创建的内容类型上。将鼠标悬停在form上,然后点击尖括号,如下图:

你将可以看到 Edit Form 弹出框。勾选上Create Content,然后在下拉框中选择Subscribe Form,完成后点击保存。

Bind Form To Content

至此已经快完成了,现在将鼠标悬停在 Email Field 上面,并点击尖括号。点击 Bindings 标签,然后勾选你要绑定的字段,在我们的示例中为 Subscribe Form 内容类型下的 Email.Text 字段。如果你没有看到binding标签,请保持form后再重新回到此处编辑。

Bind Email Field

下图为一些示例设置:

Dynamic Forms Widget

在保存部件之后,浏览网站页面检查新功能。

Page view with new widget

注意: 如果输入字段对拥有者显示,可以在Subscribe Form内容类型定义中的Common部分,取消勾选“对拥有者显示编辑器——Show editor for owner”来移除它。—— 个人测试好像不起作用

Common Part

不通过内容类型存储表单提交

此处理起来很简单,你只需要在form布局中勾选 Store Submission

No Content Type

查看提交的动态表单数据

至此,经过以上步骤的处理,我们已经可以提交表单数据。由于我们在之前勾选了‘Create Content’,所以Orchard会将提交内容保存。而要查看内容保存在哪,进行如下操作:在控制面板中,点击内容即可。

Subscribe Form Content Type

在控制面板中,你还可以通过表单提交菜单查看不通过创建内容类型的提交数据。

Form Submissions

导出动态表单数据

由于动态表单可以保存为内容类型或者表单提交,所以你会有不同的方式来导入导出。

导出保存为内容类型的表单

至此仅剩的事情就是导出提交数据列表,以便于被其他服务使用,类似于Publicaster, Campaign Monitor, MailChimp等。从Orchard CMS中导出任何内容最简单的方法是使用导入/导出模块。在Orchard 1.6版本及以后版本,导入/导出模块是附带的在内的,只是默认不启用。下面启用导入/导出模块。

Import/Export module

现在可以在控制面板左侧导航中看到导入/导出功能。在导入/导出模块页中,切换到导出标签。要导出已提交的邮件列表数据,则勾选Subscribe Form内容类型旁边的勾选框 —— 新版Orchard需要勾选内容和内容定义后方能显示类型。 界面中第一项元数据-Metadata,表示包含内容类型定义 —— 新版直接在内容类型后有类型定义勾选框,与此处不同。这提供了一种简单的方法来复制内容类型 —— 在从一个Orchard CMS迁移到另一个会比较有用。这种情况的一个主要例子是:将一个新的内容类型从开发环境的站点迁移到生产环境的站点。当Orchard导入同时含有元数据和数据的xml文件时,它会创建内容类型副本来导入对应数据。

在当前示例中,我们只关注导出数据,所以不需要勾选元数据。同时,确保选择仅包含草稿,由于我们在前台提交的数据没有发布状态。—— 此处内容有问题,是否有发布状态取决于你在定义Form时的Create Content设置,可能是发布状态,也可能是草稿。

Export the Subscribe Form content

导出的XML文件可以用MS Excel打开,并可以按照你的选择操作email内容等。至此,网站能够收集访问者的电子邮件地址,并将其导出以供后续联系。动态表单还常用于实现联系我们页面或其他任何需要收集用户信息的页面。

导出保存为提交表单的表单内容

要导出表单提交里的数据,你需要启用动态表单的导入导出模块。

注:新版中没有此模块,导入导出功能中已含有导出表单提交的选项

Forms Import Export Module

一旦启用,你可以在导出功能中自定义导出步骤中选择"Forms"来导出表单提交内容。

Exporting Form Submissions


译:奇葩史

[译]:Orchard网站管理——工作流

返回目录索引
原文链接:Workflows

文章内容基于Orchard 1.8版本

Orchard中的工作流模块为我们提供了创建自定义工作流的功能,它可以为事件或活动创建工作流(如:内容创建,内容发布,内容移除,发送邮件,定时器,以及更多)。

依赖项: Orchard.Tokens, Orchard.Forms, Orchard.jQuery-新版为Resource模块,此功能应该包含在模块Resource中

在本节demo示例中,我们会创建一个 联系我们的邮件通知工作流——Contact us Email Notification Workflow。要在工作流模块中发送邮件,需要启用EmailMessaging模块。

Email.Messaging

关于怎样配置邮件,参见:原文:Configuring Emainl —— 官网链接有误,此处修改

自定义窗体

关于如何创建自定义内容类型,参见:原文:Creating Custom Content Types译文:Orchard网站内容管理——创建自定义内容类型

关于如何创建自定义窗体,参见:原文:Create Custom Forms

工作流示例

1. 创建工作流

2. 将工作流命名为Contact Us Email Notification,然后保存

3. 编辑Contact Us Email Notification 工作流

4. 设置工作流初始状态

工作流至少要有一个活动设为初始状态

5. 编辑工作流活动(提交表单)

即,此处需要制定哪一个表单提交时触发此工作流

6. 添加定时器活动

注:需要启用工作流里的Timer模块

添加定时器活动意味着设置了延迟操作,这样可以保证进程不会被阻塞。

7. 编辑定时器活动

8. 添加邮件发送活动

注:需要启用工作流部分的Email模块

9. 编辑邮件发送活动

使用令牌来访问终端用户提交的数据

New Contact Request by {Content.Fields.ContactUs.Name}

<p>New Contact Request by {Content.Fields.ContactUs.Name}</p>

<p>Email : {Content.Fields.ContactUs.EmailAddress}</p>

<p>Message : {Content.Fields.ContactUs.Message}</p>

关于此处取值不同版本、不同的窗体使用方式可能各不相同,建议研究Form创建后再看此部分内容,如本人在取值时,有{FormSubmission.Field:Email}来处理

10. 表单提交

11. 工作流运行

即,在上一步用户提交表单后,工作流会自动运行

12. 阻止活动

定时器(阻塞活动)会延迟两分钟

13. 发送联系我们邮件通知

关于更多工作流内容,浏览Orchard Tutorials Area —— 英文视频教程


译:奇葩史

关于使用WiXUI后遇到错误2819问题解决

场景

在使用Wix Toolset过程中,为安装包添加界面时,添加如下代码:

<UIRef Id="WixUI_InstallDir"/>

安装包生成成功后进行安装时,出现错误代码为2819的错误提示——出现在将要展示文件路径选择时

解决方案:

为WixUI指定Install目录,使用如下代码:

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER"/>

注意:代码中WIXUI_INSTALLDIR为全部大写,value值需要在目录配置中指定。

至此,重新生成即可。

[译]:Orchard网站管理——使用命令行界面

返回目录索引
原文链接:Using the Command-Line Interface

Orchard提供命令行接口——用于执行处理许多控制面板中可用的功能(某些不是)。命令行工具叫orchard.exe,位于网站根目录下的bin文件夹下。要运行命令行工具,首先要在网站根目录(例如:Orchard.Web)下打开命令提示符窗口。打开方式为:在资源管理器中打开到对应文件夹,按住shift键,同时鼠标右键,然后选择在此处打开命令窗口。最后,在当前命令窗口中输入bin\orchard.exe。脊注意:你需要在网站根目录下运行orchard命令行工具。

命令使用

要查看可用的命令列表,在提示符框中输入help commands

如果你在网站初始安装配置之前运行Orchard.exe,它仅仅提供安装设置命令。它执行的内容其实和你在浏览器中运行Orchard并完成设置表单的结果是一样的——其中有:输入网站名称,管理用户名,密码以及数据库选项。另外,安装设置命令还有一个可选参数——一个在安装期间需要启用的功能列表。

在运行完安装命令后,你可以再次输入help commands查看到更多的命令:

orchard> help commands
可用命令列表:
---------------------------

blog create /Slug:<slug> /Title:<title> /Owner:<username> [/MenuText:<menu text>]
        Creates a new Blog

blog import /Slug:<slug> /FeedUrl:<feed url> /Owner:<username>
        Import all items from <feed url> into the blog at the specified <slug>

cultures get site culture
        Get culture for the site

cultures list
        List site cultures

cultures set site culture <culture-name>
        Set culture for the site

feature disable <feature-name-1> ... <feature-name-n>
        Disable one or more features

feature enable <feature-name-1> ... <feature-name-n>
        Enable one or more features

feature list [/Summary:true|false]
        Display list of available features

help <command>
        Display help text for <command>

help commands
        Display help text for all available commands

package create <extensionName> <path>
    Create a package for the extension <extensionName>
    (an extension being a module or a theme).
    The package will be output at the <path> specified.
    The default filename is Orchard.[Module|Theme].<extensionName>.<extensionVersion>.nupkg.
    For example, "package create SampleModule c:\temp" will create the package
    "c:\temp\Orchard.Module.SampleModule.1.0.0.nupkg".

package install <packageId> <location> /Version:<version>
        Install a module or a theme from a package file.

package uninstall <packageId>
    Uninstall a module or a theme.
    The <packageId> should take the format Orchard.[Module|Theme].<extensionName>.
    For example, "package uninstall Orchard.Module.SampleModule" will uninstall the Module under the "~/Modules/SampleModule" directory and
    "package uninstall Orchard.Theme.SampleTheme" will uninstall the Theme under the "~/Themes/SampleTheme" directory.

user create /UserName:<username> /Password:<password> /Email:<email>
        Creates a new User

可用命令取决于你的网站当前启用了多少功能模块。要查看可以启用或禁用的功能列表,输入命令feature listfeature list /Summary:true。你可用在命令提示符中输入命令feature enable <feature-name>来启用额外的功能。

orchard> feature list /Summary:true
Common, Enabled
Containers, Enabled
Contents, Enabled
Dashboard, Enabled
DatabaseUpdate, Disabled
Feeds, Enabled
Gallery, Enabled
HomePage, Enabled
Lucene, Disabled
Navigation, Enabled
Orchard.ArchiveLater, Disabled
Orchard.Blogs, Enabled
Orchard.Blogs.RemotePublishing, Disabled
Orchard.CodeGeneration, Enabled
Orchard.Comments, Enabled
Orchard.ContentTypes, Enabled
Orchard.Email, Disabled
Orchard.Experimental, Disabled
Orchard.Experimental.TestingLists, Disabled
Orchard.Experimental.WebCommandLine, Disabled
Orchard.Indexing, Disabled
Orchard.jQuery, Enabled
Orchard.Lists, Enabled
Orchard.Localization, Disabled
Orchard.Media, Enabled
Orchard.Messaging, Disabled
Orchard.Migrations, Disabled
Orchard.Modules, Enabled
Orchard.MultiTenancy, Disabled
Orchard.Packaging, Enabled
Orchard.Pages, Enabled
Orchard.PublishLater, Enabled
Orchard.Roles, Enabled
Orchard.Scripting, Enabled
Orchard.Scripting.Dlr, Disabled
Orchard.Scripting.Lightweight, Enabled
Orchard.Search, Disabled
Orchard.Setup, Disabled
Orchard.Tags, Enabled
Orchard.Themes, Enabled
Orchard.Users, Enabled
Orchard.Widgets, Enabled
PackagingServices, Enabled
Profiling, Disabled
Reports, Enabled
Routable, Enabled
SafeMode, Disabled
Scheduling, Enabled
Settings, Enabled
Shapes, Enabled
TheAdmin, Disabled
TheThemeMachine, Enabled
TinyMce, Enabled
XmlRpc, Disabled

批处理或脚本命令

orchard命令执行中有两种具体的非交互模式:单条命令和使用文件处理。每一个都允许在非交互的上下文中使用批处理命令。
命令仍然需要被启用,并需要在正确的位置启动每个命令类型。

单条命令

正如所料,单条命令可以运行,并在orchard.exe工具执行完成后直接退出。

在Orchard.Web/bin路径下执行:

orchard package create "Orchard.Blogs" "c:\\temp\\"

使用文件处理

响应文件包含一些列的命令行——每一行表示一个要执行的命令。这在执行大量命令时,是一个很好的办法,它避免你在orchard上下文初始化时一步一步的输入。

例如响应文件内容如下(myfile.txt):

package create "Orchard.Blogs" "c:\\temp\\"
package create "Orchard.Users" "c:\\temp\\"

然后在orchard.exe中输入一条命令执行响应文件,注意参数前缀"@"——用于表示参数是一个响应文件。

orchard @myfile.txt

添加命令

模块开发者可以继承Orchard.Commands.DefaultOrchardCommandHandler类来将自己的命令添加到系统中。命令在那个类里仅仅是一个带有CommandName特性的方法。以下代码创建了一个名为"hello world"的命令,它包含:一个name参数以及一个可选的"YouRock"转换器。

[CommandName("hello world")]
[CommandHelp(@"hello world <name> [/YouRock:true|false]
Says hello and whether you rock or not.")]
[OrchardSwitches("YouRock")]
public void HelloWorld(string name) {
    Context.Output.WriteLine(T("Hello {0}.", name ?? "world"));
    Context.Output.WriteLine(YouRock ? "You rock." : "You do not rock.");
}

转换器要在类中单独声明一个属性:

[OrchardSwitch]
public bool YouRock { get; set; }

命令可以运行在整个Orchard环境中,它可以查询数据库、注入依赖项,并且,一般情况下,在网站中通过执行命令行可以完成几乎所有事情。

命令异常抛出

在命令处理中抛出异常时不建议的。取而代之的是,在任何时候,如果可以,将上下文输出并返回。如果你想要抛出一个特定的异常,请抛出OrchardException类型异常。


译:奇葩史