2011-02-24 84 views
0

我第一次使用Umbraco爲客戶設計網站。每個頁面由重複的內容面板組成 - 每個面板包含圖像,標題和正文文本。umbraco - 重複內容

我已經得到了文檔類型和模板完美的內容面板。但是,我不知道如何將多個面板添加到網頁 - 我假設我將主頁面doc類型設置爲允許內容面板作爲子節點 - 然後需要一個宏來迭代子節點並呈現每個使用內容面板模板。

另外,我想讓客戶端也能夠在每個頁面中添加和刪除面板。

有人可以給我一個宏代碼的例子來做到這一點嗎?任何幫助非常感謝!

回答

3

如果您看看Blog4Umbraco軟件包,您可以看到一個非常詳細的例子,說明您正在嘗試做什麼。 (不想在這裏過去整個宏,but you can find it here)將每個「面板」想象成一篇博客文章,並查看在單個屏幕上顯示最近10篇博客文章的XSLT /宏 - 您可以調整這個漂亮很容易與你在做什麼。您可以爲「面板」創建文檔類型和模板,用戶可以根據需要爲任意多個面板創建內容,並且修改後的XSLT版本會循環顯示每個面板並在頁面上顯示信息。如果你喜歡(和我一樣),你可以使用一個asp.net自定義控件來做同樣的事情(就像你比.NET更熟悉.NET一樣簡單)。

創建這樣的代碼的模板:(這個例子是一個簡單的博客控制):

<ItemTemplate> 
    <div class="blogTitle"><a href="<%# DataBinder.Eval(Container.DataItem, "Url") %>"> <%# DataBinder.Eval(Container.DataItem, "NodeName") %> </a></div> 
    <div class="blogDate">Post Date: <%# String.Format("{0:D}", Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "Post Date")))%></div> 
    <div class="blogContent"><%# DataBinder.Eval(Container.DataItem, "Content") %></div> 
    </ItemTemplate> 

,然後在後面的頁面加載的代碼,你可以在孩子綁定到中繼器是這樣的:

 //To get the nodes as a datatable so you can use it for DataBinding use this method 
    var children = currentNode.ChildrenAsTable(); 

    rptPosts.DataSource = children; 
    rptPosts.DataBind(); 
+0

EJB - 非常感謝!我已經想出瞭如何使用XSLT進行此操作。然而,讓我困惑的是,在我看到的所有例子中,模板元素似乎都是通過XSLT宏顯式渲染的,這似乎使模板變得冗餘。另外,我正在使用v4.6.1,因此RenderTemplate方法不再可用。如何通過XSLT使用重複內容的模板?謝謝 – jules 2011-02-25 11:16:00