2016-12-21 10 views
1

私はオーチャード1.10で作業しています。目標は、それに基づいてニュースサイトをデザインすることです。私は解決されていない問題があります。 これは、最新のニュースリストと、現在私が詳細に表示しているニュースを生成する方法です。私はニュースを選択するときに、現在のニュースのIDよりもIDが低い他のニュースを表示する必要があります。現在のニュースに基づいて最近のニュースリストを作成する方法

いずれもおすすめです。ありがとうございました。

+0

だからあなたは(ウィジェット内)最新のニュースを表示する必要がありますか? RecentBlogPostWidgetとほとんど同じです – devqon

+0

私は同意しますが、現在の投稿を含むすべての投稿を表示します。私はリストが現在の投稿よりも正確に古くなることを望みます。 – Sophia

+0

ウィジェットを持つカスタムモジュールのかなり基本的な実装のように聞こえます – devqon

答えて

1

カスタムパーツを作成してニュースコンテンツタイプにアタッチすることができます。このような何か:

public class RecentNewsPart : ContentPart { 

} 

public class RecentNewsPartDriver : ContentPartDriver<RecentNewsPart> { 
    private readonly IContentManager _contentManager; 
    public RecentNewsPartDriver(IContentManager contentManager) { 
     _contentManager = contentManager; 
    } 

    protected override DriverResult Display(RecentNewsPart part, string displayType, dynamic shapeHelper) { 
     return ContentShape("Parts_RecentNewsPart",() => { 
      // or however the date is stored on your news, 
      // maybe just the CommonPart CreatedUtc 
      var currentNewsPart = part.As<NewsPart>(); 
      var currentNewsDate = currentNewsPart.Date; 

      var recentNews = _contentManager 
       .Query<NewsPart, NewsPartRecord>("News") 
       .Where(c => c.Date < currentNewsDate) 
       .OrderByDescending(c => c.Date) 
       .Slice(0, 10) 
       .ToList(); 

      return shapeHelper.Parts_RecentNewsPart(Items: recentNews); 
     }); 
    } 

Placement.info:

<Match ContentType="News"> 
    <Place Parts_RecentNewsPart="/AsideSecond:3" /> 
</Match> 
+0

これは素晴らしいことです。どうもありがとうございました – Sophia

関連する問題