ブログに が表示されているときにページを編集しようとしていますParts.Blogs.BlogPost.List.cshtml
。ContentItems
コンテンツの下に移動して、BlogPosts に呼び出しを追加しMediaPicker Field
、テーマ (編集中のファイル) にBlogPostImage
代替も作成しましたParts.Blogs.BlogPost.List.cshtml
。そこにあるコードは次のとおりです。
@using Orchard.ContentManagement;
@{
IEnumerable<object> blogPosts =
Model.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1)
{
<p>@T("No posts.")</p>
}
else
{
int count = 0;
<div id="Blog">
<div id="slides">
<div class="slides_container">
@foreach (dynamic post in blogPosts)
{
count++;
string title = post.ContentItem.TitlePart.Title;
ContentItem item = post.ContentItem;
string text = post.ContentItem.BodyPart.Text;
string postImageUrl = post.BlogPostImage.Url;
<div class="slide">
<a href="@Url.ItemDisplayUrl(item)"><img src="@postImageUrl" width="625" height="400" alt="Slide @count.ToString()"></a>
<div class="caption" style="bottom: 0">
<h4><a href="@Url.ItemDisplayUrl(item)">@title</a></h4>
</div>
</div>
}
</div>
</div>
</div>
}
しかし、そのメディアピッカーフィールドを私のリストに呼び出す方法を世界で理解することはできません。どの方法を試しても、href にある種のクエリ文字列が表示されて空白に戻ります。「?23423455657」のようなもの。変数を削除しましたが、そのクエリ文字列は引き続き表示されます。私が基本的に達成しようとしているのは、これらをスライドショーに入れ、.jquery でスライドショーを開始することlayout.cshtml
です。ティア
//解決:
何日も何日も読んで研究した後、私はついに実用的な解決策を見つけました。
交換:
string postImageUrl = post.BlogPostImage.Url;
と:
string postImageUrl = ((ContentItem)post.ContentItem).Parts.SelectMany(p => p.Fields).Where(f => f.Name == "BlogPostImage").First().Storage.Get<string>(null);
ここから入手: http://blog.cloudconstruct.com/post/Creating-a-rotating-image-gallery-in-Orchard-CMS.aspx
同じ船で立ち往生している人の助けになることを願っています。なぜ私はそれを単に私が持っていた方法で呼び出すことができなかったのか、私はまだ興味がありますが、今では機能しています! :)