Если вы посмотрите на пакет Blog4Umbraco, вы увидите очень подробный пример того, что вы пытаетесь сделать. (не хочу пропускать весь макрос здесь, , но вы можете найти его здесь ). Думайте о каждой "панели" как о сообщении в блоге и смотрите на макрос XSLT /, который показывает последние 10 блогов. сообщения на одном экране - вы можете легко адаптировать это к тому, что вы делаете. Вы должны создать тип документа и шаблон для «панелей», пользователь будет создавать контент для любого количества панелей, а измененная версия XSLT будет проходить по каждой из них и отображать информацию на вашей странице.
Если вы предпочитаете (как я), вы можете использовать пользовательский элемент управления asp.net, чтобы сделать то же самое так же легко (особенно если вы более знакомы с .net, чем XSLT).
Создайте шаблон с таким кодом: (этот пример для простого элемента управления блогом):
<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();