就这个问题写了一篇更详细的博文。无耻塞: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>
(为清楚起见使用显式符号)
Placement 基本上定义了您的内容部分将放置在内容类型的位置。摘要、内容和电影是内容项中的“区域”,您可以将部分分配给这些区域,以便显示它们。所以让我们继续在一个名为 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 将内容部件定向到要显示的区域。
希望有帮助!