1

我正在尝试使用 Placement.info 而不是覆盖完整的内容模板,并且我需要在内容区域和标题区域中显示一部分(Parts_Title)。我在想在 Placement.info 文件中有两个位置与那个部分会做的伎俩,但似乎最后一个赢了。

有没有办法做到这一点?我正在使用果园 1.9.1.0

按照亚历山大的回答编辑 2016-03-16:

我应该做错事;我在仪表板(无代码)中设计了一个名为 OffreEmploi 的内容类型。我使用 Content-OffreEmploi.cshtml 作为替代。这是代码:

@using Orchard.ContentManagement.Utilities;
@Display(Model.Header);
@Display(Model.Content);
@Display(Model.LocalZoneName);

这是我的placement.info

  <Match ContentType="OffreEmploi">    
    <Place Fields_DateTime-DateDebut="Header:2"/>
    <Place Fields_Common_Text-Duree="Header:3"/>
    <Place Fields_Common_Text-Localisation="Header:4"/>
    <Place Fields_Boolean-Temporaire="Header:5"/>
    <Place Fields_DateTime-DateExpiration="Header:6"/>
    <Place Parts_Common_Metadata="-"/>    
    <Place Fields_Common_Text-TexteIntroduction="Content:1"/>        
    <Place Parts_Title="Header:1" />
    <Place Parts_Common_Body="Content:3" />
    <Place Parts_Title="LocalZoneName:1" />
  </Match>

Parts_Title 部分仅在末尾呈现(在 LocalZoneName 中)

4

2 回答 2

2

仅使用placement.info 无法做到这一点。两次显示内容部分的最佳方法是对该内容部分使用特殊的本地区域:

  1. 为内容创建替代。通过使用交替显示一个区域两次@Display(Model.LocalZoneName)
  2. 使用placement.info 中的本地区域在其中呈现您的零件Parts_Title="LocalZoneName:1"
于 2016-03-07T20:38:18.863 回答
1

Placement.info 允许您指定一个放置零件的位置。这就是您看到的行为背后的原因 - 最后一个条目获胜(LocalZoneName:1)。这就是您的部分内容现在所在的位置 - LocalZoneName.

亚历山大实际上是在暗示什么,以及这种(并不罕见)场景的通常解决方案是使用一个单独的、独特的区域来放置你的角色,并多次渲染该区域,即:

@using Orchard.ContentManagement.Utilities;
@Display(Model.LocalZoneName);
@Display(Model.Header);

@Display(Model.LocalZoneName);
@Display(Model.Content);

这将使您的LocalZoneName(现在包含标题部分)被渲染两次 - 在HeaderContent区域之前。

于 2016-03-18T23:18:43.050 回答