复制果园部分

时间:2016-03-07 01:14:00

标签: orchardcms orchardcms-1.9

我尝试使用Placement.info而不是覆盖完整的内容模板,我需要在Content区域和Header区域中显示一个部件(Parts_Title)。我认为在Placement.info文件中有两个位置可以解决这个问题,但似乎最后一个赢了。

有办法吗?我使用的是Orchard 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中)

呈现

2 个答案:

答案 0 :(得分:2)

您不能仅使用placement.info来执行此操作。两次显示内容部分的最佳方法是为该内容部分使用特殊的本地区域:

  1. 为内容创建备用内容。使用@Display(Model.LocalZoneName)
  2. 在其中两次显示区域
  3. 使用placement.info中的本地区域在其中呈现您的部分Parts_Title="LocalZoneName:1"

答案 1 :(得分:1)

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

亚历山大实际建议的是什么,以及通常的解决方案(通常情况下)是使用一个单独的独特区域来放置你的部分,并多次渲染区域,即:

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

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

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