2

Orchard CMS と MVC は初めてなので、無知であることをお許しください。調べてみたのですが、明らかに関係のあるものは見つかりませんでした....

Orchard サイトのフッター クワッド ゾーンの 1 つで、最新の 5 つのブログ投稿をタイトルだけで表示したいと考えています。現在、タイトル、投稿、タグなどはすべてフォーマットされていない状態で表示されます(まだブログのスタイルを設定していません)。

トレース ツールを使用して、別のビューを作成しました。

Parts.Blogs.RecentBlogPosts

ただし、このビューの唯一のコンテンツは次のとおりです。

@Display(Model.ContentItems)

これは、私が代替ビューを編集した他のインストール済みウィジェットとは異なり、作成する必要があるレイアウトを作成するために何もいじることができません。

間違った形状/ビューを選択したのでしょうか、それともコーディングで行き詰まる必要がありますか?

私が言うように、私は MVC とオーチャードの両方に慣れていませんが、学ぶことに非常に熱心です。いつものように、これに関する助けは大歓迎です。

4

3 に答える 3

3

最近のブログ投稿のレイアウトをブログの要約投稿と区別しようとしているときに、まったく同じ問題が発生しました。このコンセプトを踏襲しました

http://weblogs.asp.net/bleroy/archive/2011/07/31/so-you-don-t-want-to-use-placement-info.aspx

Parts.Blogs.RecentBlogPosts 代替を作成しました。次に、シェイプ トレーシング ツールを使用してモデルをナビゲートしているときに、探していたすべての要素を見つけて、それらを新しいシェイプに配置しました。私のアプローチが最も適切ではないかもしれないことはわかっていますが、うまくいきます。たぶん、同様のことをする必要がある人にとっては出発点になるでしょう:

<div class="last-news">
<ul>
@foreach (var item in Model.ContentItems.ContentItems.Items)
{
    var max = (item.ContentItem.BodyPart.Text.Length > 100) ? 100 : item.ContentItem.BodyPart.Text.Length;

    <li><header>@Display(item.ContentItem.CommonPart.PublishedUtc.ToShortDateString())</header></li>
    <li><h1><a href="/@item.ContentItem.Parts[5].Path">@Display(item.ContentItem.TitlePart.Title)</a></h1></li>
    <li>@Display(Html.Raw(item.ContentItem.BodyPart.Text.Substring(0, max)))</li>
}
</ul>
</div>
于 2013-10-18T15:15:44.750 に答える
2

それは説明に値します。ここの Model.ContentItems は、実際にはリスト シェイプです。それを使用して Display を呼び出すと、リストの形状に最も適したテンプレート (代替となる可能性があります) が検索され、レンダリングされます。デフォルトのリスト レンダリングは UL/LI をレンダリングするだけで、各 LI で、リスト要素の個々のコンテンツ シェイプで Display を呼び出しますが、Summary 表示タイプを使用します。それが次にレンダリングされると、システムは最も関連性の高いコンテンツ テンプレートを見つけます。これは通常、一連のゾーンをレンダリングし、その中にパーツが配置に従ってプッシュされます。そのため、かなりの数のネストされたレベルで、多くのことが行われています。それでも、どのレベルでも全体をオーバーライドすることが可能です。難しいのは、そこに何を入れるかを知ることです。これを行う最も簡単な方法は、シェイプ トレーシングでモデルを探索し、使用できるものを確認することです。 http://weblogs.asp.net/bleroy/archive/2011/03/27/take-over-list-rendering-in-orchard.aspx

于 2012-11-03T22:40:27.377 に答える
1

Parts.Blogs.RecentBlogPostsビューには、BlogPost コンテンツ アイテムを表示するParts_Blogs_BlogPost_List形状 ( ) が表示されます。Parts.Blogs.BlogPost.List.cshtml(RecentBlogPostsPartDriver.cs で確認できます)。BlogPost コンテンツ タイプは、独自の形状とビュー (Orchard 用語ではテンプレート) を持つ TitlePart および BodyPart パーツで構成されます。したがって、これらのテンプレートを修正するにはParts_Blogs_BlogPost_ListParts_Common_Body_Summaryやその他の形状を変更してみてください。

特にオーチャードのドキュメント ページで次の手順を参照してください。

  1. 代替
  2. 形状へのアクセスとレンダリング
于 2012-11-03T20:25:16.127 に答える