2013-02-26 134 views
2

我試圖覆蓋實際區域模板的渲染。覆蓋區域渲染

它呈現這樣的事情:

<div class="zone zone-hero" shape-id="13">  

    <div class="inner" shape-id="14"> 
     content is stuffed in here 
    </div> 

</div> 

我發現,如果我把Zone.cshtml到我的模板的根,我可以覆蓋它的渲染。我想不出的是如何讓它呈現它的小部件和內容(如果存在的話)。我嘗試使用@Display(Model.Content),但沒有運氣。

回答

0

你需要做的是枚舉它自己的形狀,並在它們每一個上調用Display。投向IEnumerable應該可以做到這一點。

1

您可以像Bertrand所建議的那樣做(可以讓您更好地控制區域中的每個元素),或者做@DisplayChildren(Model)

3

該模板遵循形狀的屬性和類屬性,並根據Orchard的約定設置Id字段。所以,對於開發者來說,這個代碼的模板表現得和預期的一樣。

@{ 
    Model.Id = string.Concat("zone-", Model.Hint.ToLowerInvariant()); 
    var tag = Tag(Model, "section"); 
} 
@tag.StartElement 
@DisplayChildren(Model) 
@tag.EndElement 

如果要覆蓋例如內容區,創建你的主題項目的瀏覽文件夾命名zone-content.cshtml頁面,然後複製上面的代碼到它。

+0

另外一個用於說明如何覆蓋特定區域的模板。 – 2015-02-18 22:24:39