2011-05-06 55 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