四、管理网站(三) 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 目录下的所有文件。
posted @ 2012-03-20 17:24  commanderss  阅读(675)  评论(0编辑  收藏  举报