Recipe文件
Recipe是一个XML格式的文件,包含站点安装时需要进行的配置,我们在第一次启用Orchard站点,进入站点安装页面的时候,能够通过选择Recipe,将站点安装成我们想要的样子。
你能够自己创建Recipe文件,定义站点安装时需要进行的配置,需要下载、安装的模块,启用的主题等等。
当我第一次启用orchard站点的时候,会弹出站点安装界面,在这里,有一个Recipe列表,我们选择我们需要的,然后安装:
默认有3个Recipe:
-
Default. 这个Recipe包含了页面、博客、自定义内容类型、评论、标签、部件和基础导航。
-
Blog. 提供了一个私人博客站点。
-
Core. 只提供了核心功能的站点。
Recipe是一个XML格式的文件:
<?xml version="1.0"?>
<Orchard>
<Recipe>
<Name>Default</Name>
<Description>The default recipe for an Orchard site that includes pages, blogs, custom content types, comments, tags, widgets and basic navigation.</Description>
<Author>The Orchard Team</Author>
<WebSite>http://orchardproject.net</WebSite>
<Tags></Tags>
<Version>1.0</Version>
<IsSetupRecipe>true</IsSetupRecipe>
</Recipe>
<Feature enable="Orchard.Blogs,Orchard.Comments,Orchard.Tags,
Orchard.Lists,TinyMce,Orchard.Media,Orchard.MediaPicker,Orchard.PublishLater,
Orchard.jQuery,Orchard.Widgets,Orchard.ContentTypes,
Orchard.Scripting,Orchard.Scripting.Lightweight,
PackagingServices,Orchard.Packaging,Gallery,Gallery.Updates,
TheThemeMachine" />
<Metadata>
<Types>
<Page ContentTypeSettings.Draftable="True" TypeIndexing.Included="true">
<TagsPart />
<LocalizationPart />
</Page>
<BlogPost ContentTypeSettings.Draftable="True" TypeIndexing.Included="true">
<CommentsPart />
<TagsPart />
<LocalizationPart />
</BlogPost>
</Types>
<Parts>
<BodyPart BodyPartSettings.FlavorDefault="html" />
</Parts>
</Metadata>
<Settings />
<Migration features="*" />
<Command>
layer create Default /LayerRule:"true"
layer create Authenticated /LayerRule:"authenticated"
layer create Anonymous /LayerRule:"not authenticated"
layer create Disabled /LayerRule:"false"
layer create TheHomepage /LayerRule:"url '~/'"
page create /Slug:"welcome-to-orchard" /Title:"Welcome to Orchard!" /Path:"welcome-to-orchard" /Homepage:true /Publish:true /UseWelcomeText:true
widget create HtmlWidget /Title:"First Leader Aside" /Zone:"TripelFirst" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
widget create HtmlWidget /Title:"Second Leader Aside" /Zone:"TripelSecond" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
widget create HtmlWidget /Title:"Third Leader Aside" /Zone:"TripelThird" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
menuitem create /MenuPosition:"1" /MenuText:"Home" /Url:"" /OnMainMenu:true
</Command>
</Orchard>
Recipe各个节点的含义如下:
-
Recipe. 这个节点包含了Recipe文件的基本信息,比如名称和描述。
-
Feature. 站点需要启用的特性。
-
Metadata. 类容类型、元件、字段配置。
-
Settings. 站点设置。
-
Command.站点安装的时候,需要执行的命令。
进入项目的Setup模块的Recipes文件夹,复制一个已经有的Recipes文件到当前文件夹,更改复制后的文件的名称,注意,文件名必须以recipe.xml结尾,比如,复制default.recipe.xml文件到当前目录,命名为custom.recipe.xml。
打开custom.recipe.xml文件,更改Recipe节点的名称和说明,然后添加Bing.Maps模块和Orchard.Theme.Dark 主题,这个模块和主题,会在安装的时候,自动在网上下载(国内网速问题,不要用这种方法):
<?xml version="1.0"?>
<Orchard>
<Recipe>
<Name>Custom Recipe</Name>
<Description>A recipe that includes a landing page with blog on a second tab.</Description>
<Author>The Orchard Team</Author>
<WebSite>http://orchardproject.net</WebSite>
<Tags></Tags>
<Version>1.0</Version>
<IsSetupRecipe>true</IsSetupRecipe>
</Recipe>
<Module packageId="Orchard.Module.Bing.Maps" />
<Theme packageId="Orchard.Theme.Dark" current="true" />
<Feature enable="Orchard.Blogs,Orchard.Comments,Orchard.Tags,
Orchard.Lists,TinyMce,Orchard.Media,Orchard.MediaPicker,Orchard.PublishLater,
Orchard.jQuery,Orchard.Widgets,Orchard.Widgets.PageLayerHinting,Orchard.ContentTypes,
Orchard.Scripting,Orchard.Scripting.Lightweight,
PackagingServices,Orchard.Packaging,Gallery,Gallery.Updates,
TheThemeMachine,Bing.Maps" />
<Metadata>
<Types>
<Page ContentTypeSettings.Draftable="True" TypeIndexing.Included="true">
<TagsPart />
<LocalizationPart />
</Page>
<BlogPost ContentTypeSettings.Draftable="True" TypeIndexing.Included="true">
<CommentsPart />
<TagsPart />
<LocalizationPart />
</BlogPost>
</Types>
<Parts>
<BodyPart BodyPartSettings.FlavorDefault="html" />
</Parts>
</Metadata>
<Settings />
<Migration features="*" />
<Command>
layer create Default /LayerRule:"true"
layer create Authenticated /LayerRule:"authenticated"
layer create Anonymous /LayerRule:"not authenticated"
layer create Disabled /LayerRule:"false"
layer create TheHomepage /LayerRule:"url '~/'"
layer create Blog /LayerRule:"url '~/Blog'"
layer create Maps /LayerRule:"url '~/Maps'"
page create /Slug:"welcome-to-orchard" /Title:"Welcome to Orchard!" /Path:"welcome-to-orchard" /Homepage:true /Publish:true /UseWelcomeText:true
blog create /Slug:"blog" /Title:"Blog" /Homepage:false /Description:"This is your Orchard Blog."
page create /Slug:"maps" /Title:"Bing Maps" /Path:"bing-maps" /Homepage:false /Publish:true /UseWelcomeText:false
widget create HtmlWidget /Title:"First Leader Aside" /Zone:"TripelFirst" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
widget create HtmlWidget /Title:"Second Leader Aside" /Zone:"TripelSecond" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
widget create HtmlWidget /Title:"Third Leader Aside" /Zone:"TripelThird" /Position:"5" /Layer:"TheHomepage" /UseLoremIpsumText:true
menuitem create /MenuPosition:"1" /MenuText:"Home" /Url:"" /OnMainMenu:true
menuitem create /MenuPosition:"2" /MenuText:"Blog" /Url:"~/Blog" /OnMainMenu:true
menuitem create /MenuPosition:"3" /MenuText:"Maps" /Url:"~/Maps" /OnMainMenu:true
</Command>
</Orchard>
我们对default.recipe.xml文件进行了下面的更改:
-
Module节点: 这个元素配置了安装站点时需要从Orchard园下载的模块。但是注意,这个节点不会自动启用模块的特性。
-
Theme节点: 这个元素配置了安装站点时需要从Orchard园下载的主题。如果current 特性设置为true,那么,该主题会作为当前主题。否则,只会下载和安装。
注意: Module节点和Theme节点必须在Recipe节点后面。
-
layer create 命令:创建Blog 和Maps 层。
-
blog create 命令:创建博客命令。
-
page create 命令:创建Maps页面。
-
menuitem create 命令:创建了Blog和Maps菜单。
Module和Theme节点都包含version特性,如果指明了version,那么下载时,只会下载给定版本号的模块或样式。他们还具有repository特性,该特性配置了指向orchard园的URL路径。
Note that recipes used for importing mustn't contain an IsSetupRecipe element or it should be set to false.
Orchard提供从站点导入导出Recipe的能力.这个功能来源于Import Export 模块。
首先,我们启用Import Export特性。
点击后台Import/Export菜单项。进入Export Tab页,选中需要包含在Recipe文件中的types, metadata, data, 和 settings,单机Export.
进入Import Tab页,我们可以导入Recipe文件: