四、管理网站(三) Making a Web Site Recipe
Orchard使用website recipes简化了设置一个新网站的过程。recipe是一个包含Orchard网站启动配置的xml文件。当第一次启动Orchard时,可以选择一个适合你的网站的recipe。如:如果你的网站是一个博客,你可以选择blog recipe,系统会为你做好其它一些配置工作。
可以创建自己的recipes,自定义设置过程和配置orchard功能。recipes也能命令orchard从Gallery下载和安装模块与主题。
本文描述了如何使用recipes、如何创建自定义recipes、导出和导入recipes、如何使用recipes创建orchard的专门发布。
Using a Recipe to Create a Website
当第一次创建orchard网站,创建页面显示了recipes的列表。可以选择你网站基于哪个recipe。
初始列表包含三个recipes:default,blog,core
选择一个recipe后点击finish setup,Orchard使用选择的recipe创建网站。
How Recipes Work
recipe是一个包含网站配置信息的xml文件。下面示例default recipe文件:
<?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> </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的元数据,例如recipe的名称和描述。
- Feature。列出了Orchard将启用的模块功能。
- Metadata。提供了Orhcard包含的types,parts, fields的配置。
- Settings。提供一个方法配置网站设置。
- Command。列出orchard 命令。
Creating a Custom Recipe
可以创建自定义的recipe,然后添加 创建页面 或 自己的模块。
添加到创建页面的recipe能在网站创建时被用户选择;添加到模块的recipe能在用户设置完网站后执行。
下面示例展示基于default.recipe.xml开始,添加在创建期间下载和启用的 Bing.Maps模块和一个主题。这个recipe也创建blog和page 显示map widget。最后,recipe为blog 和 map page添加layers和menu tabs。
<?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> </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的更改记录:
- Module 元素。这个元素标识了将从Gallery下载到网站的模块。只是下载并不启用这个功能。要启用一个模块,需要添加到 Feature 元素,本例中显示的。
- Theme 元素。这个元素标识了从Galleryg下载的主题。如果current属性被标记为true则这个主题将成为当前主题并应用于网站。否则,它仅仅是下载到本网站。也能使用 enable=”true”启用这个主题,否则主题将初始化为禁用。如果current=”true”主题将自动启用。注意:Module和Theme元素必须立即出现在recipe元素后。
- Layer create command。这个添加blog和maps层。
- blog create command。这个添加创建blog。
- page create command。这个添加创建maps页面。
- menuitem create command。这个添加创建blog和maps菜单。
Module和Theme元素都支持version属性。如果指定了version,将从gallery下载指定的version。这两个元素同样有repository属性,默认,repository属性指 Orchard Gallery。可是,你能设置到任何feed URL。
把recipe xml文件放在Orchard.Web/Modules/Orchard.Setup/Recipes目录下,在你创建网站时recipe 列表将包含你的recipe。
Importing and Exporting a Recipe
Orchard允许从服务器上导入和导出recipes。使用Import和Export模块,默认是禁用的,因此你必须启用先这个模块。
Creating a Specialized Distribution of Orchard
recipes简化了创建一个Orchard的专门发行版的过过程,使用recipes可以随意定制模块,能配置一个Orchard 平台优化的版本。
创建专门的发行版:
- 获得Orchard源代码。
- 同步到最新版。
- 创建一个自定义的recipe并添加到rchard.Web/Modules/Orchard.Setup/Recipes 目录中。如果你想要你的recipe为唯一的选择,可以删除其它的recipe。
- 添加所有自定义的模块到 Orchard.Web/Modules 目录。
- 编译项目
- 发布 Orchard.Web 目录下的所有文件。