0

我正在学习 Orchard,并且做了一些 Pluralsight 课程。它涵盖了部分模板,但现在我正在阅读这篇文章:主题剖析,其中有一个部分名为:项目模板。我很困惑。我想我以前没有遇到过这个概念。有什么区别?让我们有一个示例,我有一个包含内容部分Movie的内容类型Movie我可以使用Part Template覆盖它的呈现方式。那么在这种情况下我会在哪里使用项目模板呢?

4

1 回答 1

2

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

措辞不是特别清楚,我同意。所以让我们看看我们能不能把它弄清楚一点……

内容类型:电影

  • 标题部分
  • 导演部分
  • 工作室部分

(所以你有一个名为电影的内容类型,附有 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)为您生成这些,它将创建默认区域(标题、元、内容和页脚,我相信)和相关的html。)

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

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

所以总结一下。内容类型由许多内容部分组成。部件模板覆盖内容部件和项目模板覆盖定义区域的内容类型的布局。Placement.info将内容部件定向到要显示的区域。

希望有帮助!

于 2013-10-15T18:14:12.370 回答