我有一个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)
答案 0 :(得分:1)
Orchard discussion forum已回答了我的问题。
挑战在于,您无法轻易了解您的零件形状正在渲染的区域。如果您想要将替代形状添加到Widget形状,那么这将很容易,因为小部件知道它们属于哪个区域。
所以简短的回答是:不,不是开箱即用。但是,你可以 实现
IShapeTableProvider
并描述Widget
形状。这个 shape将包含对ContentItem的引用(它将具有 附加了WidgetPart,您可以通过它访问区域名称 属于)和儿童形状(包括像Parts_Title_Summary
),所以你可以走这个形状树并添加 根据区域名称交替显示每个。不漂亮,但可行。
因此,它不是一个简单的替代命名或放置解决方案。我觉得最好的行动计划是,如果您尝试跨区域使用相同的ContentType和DisplayType,则为查询编写自己的布局。希望这有助于某人。