如何根据当前新闻创建最近的新闻列表

时间:2016-12-21 15:16:10

标签: orchardcms

我正在研究Orchard 1.10。目标是设计一个基于它的新闻网站。我有一个尚未解决的问题。 这就是如何生成最近的新闻列表以及我目前正在详细查看的新闻。我的意思是,当我选择新闻时,我需要显示ID低于当前新闻ID的其他新闻。

欢迎任何建议。谢谢。

1 个答案:

答案 0 :(得分: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>