1

Orchardは初めてで、Pluralsightの「OrchardFundamentals」と「AdvancedOrchard」の両方のチュートリアルを見てきました。それは素晴らしいプラットフォームですが、私はいくつかのことに頭を悩ませるのに苦労しています。

サイトのブログ投稿をローテーションするだけのブログショーケースバナーをホームページに作成したいと思います。HTMLをスライスして、HTMLテンプレートで機能させています。バナーは次のようになります。

http://arerra.com/news-slideshow.jpg

これまでのところ、私は次のことを行いました。

  1. 「Articles」というブログを作成し、テスト用に1つの投稿をそこに配置しました。

  2. 「最近のブログ投稿」のウィジェットを配置した「ArticleList」というレイヤーを追加しました

  3. テーマに「Layout-Url-HomePage.cshtml」というホームページのカスタムレイアウトを作成しました。

  4. テーマの「Views」フォルダーに、「Widget.Wrapper.cshtml」というファイルを作成しました。このファイルには、ウィジェットからタグをグローバル@Display(Model.Child)に削除するためのファイルのみが含まれています。<article><header/><footer /><article>

  5. 「ビュー」>「パーツ」>「Blogs.RecentBlogPosts.cshtml」にファイルを追加して、シェイプのレイアウトを制御します。コードは次のとおりです。

    @using Orchard.ContentManagement;
    @{
        IEnumerable<object> blogPosts = Model.ContentItems.ContentItems;
    }
    
    @if (blogPosts != null) {
    <div class="container news-slider">
        <ul class="slide-images">
            @foreach (dynamic post in blogPosts) {
                 string title = post.Title;
                 ContentItem item = post.ContentItem;
    
                 <img src="/Themes/MountainWestHoops/Content/img/placeholder-700x380.jpg" alt="@title" class="active" />
            }
        </ul>
    
        @foreach (dynamic post in blogPosts) {
            string title = post.Title;
            string body = post.Body;
            ContentItem item = post.ContentItem;
    
            <div class="featured-story threeD active">
                <h1>@title</h1>
                <p>@body @Html.ItemDisplayLink("READ MORE", item)</p>
            </div>
        }
    
        <aside>
            <ul class="tabs">
                @foreach (dynamic post in blogPosts) {
                    string title = post.Title;
                    string url = post.Url;
                    ContentItem item = post.ContentItem;
    
                    <li><a href="@url"><h3>@title</h3></a></li>
                }
            </ul>
    
            <div class="ad-three-day-trial">
                <a href=""><img src="/Themes/Content/img/placeholder-260x190.gif" /></a>
            </div>
        </aside>
    </div>
    }    
    
  6. HTMLは正しくレンダリングされていますが、指定した値が表示されません。

  7. 「ShapeTracer」モジュールを使用して、使用されているテンプレートを確認しています。面白いのは、@ Html.ItemDisplayLink( "READ MORE"、item)が記事のURLをレンダリングしていて、 "READ MORE"を文字列titleに置き換えると、タイトルが正しくレンダリングされることです。

文字列が表示されない原因となっているここでの間違っていることは何ですか?私はより大きなポイントを見逃し、基本を誤解していますか?チュートリアルでは、パーツを簡単に移動できると書かれているようですが、この場合、このスライダーを機能させるには、非常に具体的なマークアップが必要です。

4

1 に答える 1

1

ソースはhttp://weblogs.asp.net/bleroy/archive/2011/03/27/taking-over-list-rendering-in-orchard.aspxだったようです

それはかなり古い投稿であり、それ以来、タイトルの処理方法が変更されています。

DisplayLinkが機能するのはpost.ContentItem、ここでの正しいプロパティは、APIが取るものだけだからです。一方、nullである可能性が非常に高いため、何も表示されませんpost.Titlepost.Bodyタイトルにアクセスするには、とを使用post.ContentItem.TitlePart.Titleして本文を取得できますpost.ContentItem.BodyPart.Text

于 2012-12-28T02:42:16.630 に答える