项目模板与Orchard中的零件模板

时间:2013-10-15 15:06:26

标签: orchardcms orchardcms-1.6 orchardcms-1.7

我正在学习Orchard,我做了一些Pluralsight课程。它涵盖了部分模板,但现在我正在阅读这篇文章:Anatomy of a theme并且有一个名为:项目模板的部分。我很困惑。我想我之前没有遇到过这个想法。有什么不同?我们有一个示例,我有一个内容类型电影,内容部分电影。我可以使用零件模板覆盖它的渲染方式。那么在这种情况下我会使用项目模板

1 个答案:

答案 0 :(得分:2)

写了一篇关于这个问题的更详细的博客文章。无耻的插件:http://arkleseizure.net/what-the-hell-is-an-item-template

措辞不是特别清楚,我同意。那么让我们看看我们是否可以稍微澄清一下......

内容类型:电影

  • TitlePart
  • DirectorPart
  • StudioPart

(所以你有一个名为电影的内容类型,附有3个部分)。

我们希望所有部件都显示在详细视图中,并且只显示“摘要”显示中显示的TitlePart。所以我们使用placement.info

<Match ContentType="Movie">
  <Match DisplayType="Summary">
    <Place Parts_TitlePart="Summary:1" />
    <Place Parts_DirectorPart="-" />
    <Place Parts_StudioPart="-" />
  </Match>

  <Match DisplayType="Detail">
    <Place Parts_TitlePart="Content:1" />
    <Place Parts_DirectorPart="Movie:1" />
    <Place Parts_StudioPart="Movie:2" />
  </Match>
</Match>

(用于清晰的显式符号)

展示位置基本上定义了为内容类型放置内容部分的位置。摘要,内容和电影是您分配部件的内容项目中的“区域”,以便可以显示它们。所以让我们继续在一个名为Content-Movie.Detail.cshtml的文件中定义我们的内容和电影区域(这将是一个“项目模板”)。

@using Orchard.Utility.Extensions;

<article class="content-item">
  <div class="content">
    @Display(Model.Content)
  </div>
  <div class="content">
    @Display(Model.Movie)
  </div>
</article>

一个用于摘要,Content-Movie.Summary.cshtml

@using Orchard.Utility.Extensions;

<article class="content-item">
   <div class="content">
      @Display(Model.Summary)
   </div>
</article>

(你可以使用形状跟踪工具(http://docs.orchardproject.net/Documentation/Customizing-Orchard-using-Designer-Helper-Tools)为你生成这些工具,它会创建默认区域(Header,Meta,Content和Footer,我相信)和相关的html。)

我们的部件现在应该显示在正确的位置,我们可能想要更改标题的显示方式。所以我们可以创建一个“Part Template”,Parts.Title.cshtml

<h1>Movie: @Model.Title </h1>

总结一下。 内容类型由大量内容部分组成。 零件模板覆盖内容部件,项目模板覆盖内容类型的布局,其中定义了区域 Placement.info 将内容部件指向要显示的区域。

希望有所帮助!

相关问题