[译]: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类型异常。


译:奇葩史

[译]:Orchard网站定制——定制主题

返回目录索引
原文链接:Customizing Themes

Orchard中的默认主题叫 The Theme Machine 。它被设计为多功能的,可以从它来进行定制和开发主题。

本文将介绍主题 The Theme Machine 以及示范如何通过自定义The Theme Machine的样式表(Site.css)来创建自己的主题。

The Theme Machine主题介绍

The Theme Machine为主题设计提供了灵活且强大的基础。下图是它的文件结构:

The Theme Machine中的核心文件是布局页面(Layout.cshtml)和样式表(Site.css)。

布局页面概览

布局页面定义多个区域。每个区域都有一个条件语句,所以只有当它含有内容时,他才会呈现出来。如果区域内没有提供内容,显示的页面将不会包含这个区域。下图为布局中的区域:

All the zones in The Theme Machine

注:官方文档此处本有一个示例来展示各个区域部分,但给出的示例链接已经失效,故此处给出官方的Demo网站:Try Orchard

关于区域的内容则在控制面板中进行添加。

CSS样式概览

The Theme Machine的样式表(Site.css)提供了大量的样式用于更详细的控制网站的外观。样式表中对样式进行了分组,以便于你自定义时更容易地定位样式。下表显示了分组情况以及相应类型样式的描述:

分组-Grouping 描述-Description
General 包含 body, headings, lists, 和 text elements部分的默认样式。
Forms 包含与HTML表单有关的样式,如form, legend, fieldset, label, 和 input
Structure 包含The Theme Machine中页面布局的每个区域的样式定义
Main 包含blog posts, comments, tagged search, 和 search results的样式定义
Secondary 包含aside zones, tripel zones, 和 footer quad zones 部分内的额外布局样式。
Widgets 包含选定部件的样式,如 search widget, edit-mode widgets, 和 content mode.
Pager 包含与页面形状有关的样式。
Misc 包含其他杂项样式,如:small, large, quiet, 和 highlight.

创建自主题

你可以通过自定义The Theme Machine来创建自己的样式。但是,你最好不要直接编辑The Theme Machine的文件。取而代之,你应该创建一个子主题,然后将你想要修改的文件拷贝到子主题中。你不必将不准备修改的内容拷贝过来 —— 子主题继承父主题,并且只会覆盖你自定义的内容。当你将子主题作为当前主题时,Orchard首先查找当前主题文件,如果没有找到,然后去查找父级主题(BaseTheme)——甚至你的每一个父主题还可以有自己的父主题,系统会一层一层查。

创建子主题步骤如下:

  1. 用command-line CodeGen工具生成子主题代码结构
  2. 从The Theme Machine主题中拷贝需要修改的内容到子主题
  3. 编辑子主题的文件
  4. 应用新主题到网站

生成主题结构

要为新主题生成代码结构,我们会用到 Code Generation 功能 —— 在控制面板中点击模块就可以看到此功能包含在功能标签下。一旦启用code generation功能后,就可以在Orchard中用命令行生成新主题了。关于更多命令行的内容见:原文:Using the command-line interface译文:使用命令行界面

打开Orchard命令行工具,然后输入以下命令 :

codegen theme MyTheme /BasedOn:TheThemeMachine

如果你要使用Visual Studio来编辑(或你想让你的主题最终含有代码文件),你或许需要指定CreateProjectIncludeInSolution选项,命令如下:

codegen theme MyTheme /BasedOn:TheThemeMachine /CreateProject:true /IncludeInSolution:true

上述命令告诉Orchard创建新主题的代码结构,并将主题名称设为 MyTheme, 并指明其父主题为 TheThemeMachine。最终CodeGen命令将生成如下文件结构:

其中只创建了Theme.txt和Views\Web.config文件。控制面板通过Theme.txt文件(主题清单)来查询信息,如主题名称。这里面同样制定了父主题。 Web.config是ASP.NET MVC渲染Views文件夹中页面所需的配置文件。你几乎不需要修改Web.config文件。

从The Theme Machine中拷贝文件

为了让示例较为简单,你只需要自定义 Site.css 文件。从TheThemeMachine\Styles文件夹中将Site.css文件拷贝到MyTheme\Styles文件夹中。

你还需要拷贝TheThemeMachine\Views\Layout.cshtml文件到MyTheme\Views文件夹中。——新版本中,此步骤非必需。

自定义主题文件

在你将要修改的文件拷贝到新主题文件夹后,你就可以进行修改了。你也可以按需创建一些新文件。在本示例中,我们仅仅修改页面的背景颜色。

在拷贝过来的 Site.css 文件中,查找General部分的body样式。然后,将背景颜色从**#fff修改为#fff8dc**,代码如下:

body { 
  font-size: 81.3%;
  color: #434343;
  background: #fff8dc; 
  font-family: Tahoma, "Helvetica Neue", Arial, Helvetica, sans-serif;
}

至此,背景颜色将修改为玉米丝色-cornsilk——淡黄色。

你也可以在主题的根文件夹下为新主题添加一个缩略图。其名称必须为Theme.png。此图片会在控制面板中显示,以便于用户选择主题。

下图为从TheThemeMachine拷贝的图片,然后将 背景色调为淡黄色:

应用新主题

在控制面板中,点击主题,切换到已安装标签。在已安装标签下,将会在可用下面显示新主题。:

点击设为当前已安装标签会刷新显示——MyTheme显示为当前主题。

至此,新主题已经在网站中使用。


译:奇葩史