果园交替使用不同的区域

时间:2015-07-03 08:49:18

标签: orchardcms orchardcms-1.8

我有一个Projection Widget,它在AsideSecond区域中显示内容类型。我使用Placement.info来抑制大部分元数据。

在该内容类型的主页面上,我希望内容区域中显示所有元数据。

我似乎无法弄清楚如何根据Shape的渲染位置指定备用模板。它们都有一个显示类型的摘要。我尝试的所有内容都将抑制/替代模板应用于两者。

由于这些是在使用论坛时将添加的线程,因此我无法使用ID alternate作为可行选项。

我的相关展示位置:

<Match ContentType="Thread">
  <Match DisplayType="Summary">
    <Place Parts_Common_Metadata_Summary="-"/>
    <Place Parts_Threads_Thread_ThreadReplyCount="-"/>
    <Place Forum_Metadata_First="-"/>
  </Match>
</Match>

我尝试将Place元素嵌套在<Match ContentType="Widget">元素下,但无济于事。

这甚至可能吗?

更新:我在投影小部件中使用的查询上创建了一个Shape布局。我在主题Views文件夹中创建了自己的列表形状,并且可以通过一些转换来访问我需要的相关属性。所以,我可以解决我的问题。

我仍然想知道是否可以根据区域设置备用项,或者是否在窗口小部件中呈现内容。关于此,我已经看到了几个关于SO的问题(例如How to suppress parts in Orchard based on zone

1 个答案:

答案 0 :(得分:1)

Orchard discussion forum已回答了我的问题。

  

挑战在于,您无法轻易了解您的零件形状正在渲染的区域。如果您想要将替代形状添加到Widget形状,那么这将很容易,因为小部件知道它们属于哪个区域。

     

所以简短的回答是:不,不是开箱即用。但是,你可以   实现IShapeTableProvider并描述Widget形状。这个   shape将包含对ContentItem的引用(它将具有   附加了WidgetPart,您可以通过它访问区域名称   属于)和儿童形状(包括像   Parts_Title_Summary),所以你可以走这个形状树并添加   根据区域名称交替显示每个。

     

不漂亮,但可行。

因此,它不是一个简单的替代命名或放置解决方案。我觉得最好的行动计划是,如果您尝试跨区域使用相同的ContentType和DisplayType,则为查询编写自己的布局。希望这有助于某人。