我已經接管了Orchard中List的渲染,以便能夠創建自定義標記(我需要在列表的實際內容之前創建交互式導航)。這是我目前使用的代碼:如何在Orchard中自定義渲染列表時訪問項目零件
@using Orchard.DisplayManagement.Shapes;
@{
var list = Model.List;
var items = list.Items;
var count = items.Count;
var listTag = Tag(list, "ul");
listTag.AddCssClass("historia");
var index = 0;
}
<div class="produtos">
@foreach (var item in items)
{
var itemTag = Tag(item, "div");
itemTag.AddCssClass("item-" + index);
@itemTag.StartElement;
<h3>
@item.Title
</h3>
<p>@item.MyCustomTextField</p>
@itemTag.EndElement;
++index;
}
</div>
@Display(Model.List)
@Display(Model.Pager)
它幾乎工程...我不能夠訪問列表項領域......我想抓住標題,並把它放在裏面的H3,然後把自定義文本字段中段落後面...我將使用CSS來正確呈現此導航部分。在此導航部分之後,我將調用標準列表渲染例程。
問題是@ item.Title產生一個空/空字符串。我想訪問項目內容(無雙關語),其中包括一個自定義文本字段,該字段是將在「導航窗格」中顯示的整個帖子的摘錄。
伯特蘭告訴我們如何做,與博客文章:
@using Orchard.ContentManagement;
@{
IEnumerable<object> blogPosts =
Model.ContentItems.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1) {
<p>@T("No posts.")</p>
}
else {
<ul class="content-items">
@foreach (dynamic post in blogPosts) {
string title = post.Title;
ContentItem item = post.ContentItem;
<li class="content-item-summary">
@Html.ItemDisplayLink(title, item)
</li>
}
</ul>
}
但它不工作標準中列出了相同的方式。
(另一個小問題:可以/我應該使用自定義的包裝,而不是覆蓋整個佈局此列表中?)
它工作完美(再次!) – Loudenvier