2011-05-06 52 views
3

使用果园管理员我创建了一个新的内容部分,名为'Spotlight Wrapper'带有3个HTML字段。然后,我创建了一个名为“模板1”的内容类型,并将它分配给“Spotlight Wrapper”。然后,我创建了一个名为“主页”的新“模板1”内容项目。然后,我创建了一个名为Fileds_Contrib.Html-Spotlight Wrapper.cshtml的文件,用于将每个HTML字段封装在“Spotlight Wrapper”中,并且此工作正常。现在我已经加入:自定义内容部分的包装 - 果园CMS

<Place Parts_SpotlightWrapper="Content:before;Wrapper=Parts_SpotlightWrapper" /> 

而创建:

Views\Parts.SpotlightWrapper.cshtml 

企图包裹的,但整个“聚光灯包装”部分的内容似乎无法得到它的工作?

回答

2

您声明了一个包装,我想这会导致循环引用,因为您尝试用自身包装Parts_SpotlightWrapper形状。 包装只是Razor(cshtml)代码的独立部分,充当给定形状的父代。

达到你想要你应该创建一个包含必要的包装HTML代码单独的.cshtml文件(例如,MyWrapper.cshtml)并将其附加到你这样的现有部件的行为:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=MyWrapper" /> 

的包装代码可能看起来像。像这样:

<ul> 
    @Display(Model.Child) 
</ul> 

顺便说一句 - 尝试看看它是如何在Orchard.Widgets完成。有两个包装Widget.WrapperWidget.ControlWrapper包装Widget形状。 这些声明不在Placement.info文件中(如你所做的那样),但在Shapes.cs形状定义中进行了硬编码,但最终效果完全相同。 Placement.info的技术稍后作为快捷方式引入。

HTH

+3

问题是这一部分使用CMS管理员无法通过代码所做的。如果一部分是通过管理员创建的,则这些约定不适用。我在代码中重新创建了该部分,并将其打包并安装到了Orchard中,并允许使用placement.info文件和骑行约定。感谢您的回应! – Paul 2011-05-11 16:23:09