Sorting Umbraco初学者工具包按错误顺序排序博客文章

Sorting Umbraco初学者工具包按错误顺序排序博客文章,sorting,umbraco,blogs,umbraco7,umbraco-blog,Sorting,Umbraco,Blogs,Umbraco7,Umbraco Blog,我试图先找到正确的答案,但没有成功 我在一个网站上工作,在V7中使用Umbraco的初学者工具包 出于某种原因,它使用最旧的优先顺序对日志进行排序,而我希望使用局部视图宏“GetLatestBlogPosts”在列表视图中首先获取最新的日志 以下是我当前用于“局部视图”宏的代码: @using ContentModels = Umbraco.Web.PublishedContentModels; @using Umbraco.Web; @inherits Umbraco.Web.Macros.P

我试图先找到正确的答案,但没有成功

我在一个网站上工作,在V7中使用Umbraco的初学者工具包 出于某种原因,它使用最旧的优先顺序对日志进行排序,而我希望使用局部视图宏“GetLatestBlogPosts”在列表视图中首先获取最新的日志

以下是我当前用于“局部视图”宏的代码:

@using ContentModels = Umbraco.Web.PublishedContentModels;
@using Umbraco.Web;
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
var startNodeId = Model.MacroParameters["startNodeId"] != null    

Model.MacroParameters["startNodeId"] : Model.Content.Id;
var numberOfPosts = 3;
if (Model.MacroParameters["numberOfPosts"] != null)
{
    int.TryParse((string)Model.MacroParameters["numberOfPosts"], out  

numberOfPosts);
}


}
@if (startNodeId != null)
{

 @* Get the starting page *@
var startNode = Umbraco.TypedContent(startNodeId);
//Gets all blogposts to calculate pages
var blogposts = startNode.Children.OrderByDescending(x =>  x.GetPropertyValue("PublicationDate")).ToList();
var pageCount = (int)Math.Ceiling((double)blogposts.Count /   (double)numberOfPosts);

var page = 1;
if (!string.IsNullOrEmpty(Request.QueryString["page"]))
{
    int.TryParse(Request.QueryString["page"], out page);
    if (page <= 0 || page > pageCount)
    {
        page = 1;
    }
}
//Gets the blogposts for the current page
var pagedBlogposts = blogposts.Skip((page - 1) * numberOfPosts).Take(numberOfPosts).ToList();

if (pagedBlogposts.Count > 0)
{
    <div class="blogposts">

        @foreach (ContentModels.Blogpost post in pagedBlogposts)
        {
            <a href="@post.Url" class="blogpost">
                <div class="blogpost-meta">
                    <small class="blogpost-date">@post.CreateDate.ToLongDateString()</small>
                    <small class="blogpost-cat">
                        @Html.Partial("~/Views/Partials/CategoryLinks.cshtml", post.Categories)
                    </small>
                </div>

                @if(post.FeaturedImage != null){
                <div class="blogpost-image">
                    <img class="img-responsive" src="@post.FeaturedImage.Url?width=200" alt="@post.PageTitle" style="width: 100%; height: 100%;"/>
                </div>
                }
                <h3 class="blogpost-title">@post.PageTitle</h3>
                <div class="blogpost-excerpt">@post.Excerpt</div>
            </a>
        }
    </div>
}

if (blogposts.Count > numberOfPosts)
{
    <div class="pagination">
        <nav class="nav-bar nav-bar--center">
            @if (page <= 1)
            {
                <span class="nav-link nav-link--black nav-link--disabled">Prev</span>
            }
            else
            {
                <a class="nav-link nav-link--black" href="@(Model.Content.Url + "?page=" + (page - 1))">Prev</a>
            }

            @for (int i = 1; i <= pageCount; i++)
            {
                <a class="nav-link nav-link--black @(page == i ? "nav-link--active" : null)" href="@(Model.Content.Url + "?page=" + i)">@i</a>
            }
            @if (page == pageCount)
            {
                <span class="nav-link nav-link--black nav-link--disabled">Next</span>
            }
            else
            {
                <a class="nav-link nav-link--black" href="@(Model.Content.Url + "?page=" + (page + 1))">Next</a>
            }

        </nav>
    </div>
}
}
@使用ContentModels=Umbraco.Web.PublishedContentModels;
@使用Umbraco.Web;
@继承Umbraco.Web.Macros.PartialViewMacroPage
@{
var startNodeId=Model.MacroParameters[“startNodeId”]!=null
Model.MacroParameters[“startNodeId]:Model.Content.Id;
var numberOfPosts=3;
if(型号宏观参数[“numberOfPosts”]!=null)
{
int.TryParse((字符串)Model.MacroParameters[“numberOfPosts”],out
职位数目);
}
}
@if(startNodeId!=null)
{
@*获取起始页*@
var startNode=Umbraco.TypedContent(startNodeId);
//获取所有BlogPost以计算页面
var blogposts=startNode.childrence.OrderByDescending(x=>x.GetPropertyValue(“PublicationDate”)).ToList();
var pageCount=(int)Math.天花((double)blogposts.Count/(double)numberOfPosts);
var-page=1;
如果(!string.IsNullOrEmpty(Request.QueryString[“page”]))
{
int.TryParse(Request.QueryString[“page”],out page);
如果(页数)
{
page=1;
}
}
//获取当前页面的博客帖子
var pagedBlogposts=blogposts.Skip((第1页)*numberOfPosts.Take(numberOfPosts.ToList();
如果(pagedBlogposts.Count>0)
{
@foreach(在pagedBlogposts中发布ContentModels.Blogpost)
{
}
}
如果(blogposts.Count>numberOfPosts)
{

@如果(第页)如您自己所想,您正试图按项目上不存在的属性进行排序

我建议您在博客帖子上添加一个名为
publishDate
之类的属性。然后您可以在每个帖子上设置此属性,以指示它们何时“发布”

您不想将内置属性(如created date或published date)用于此类内容的原因是,如果您需要更新一篇旧的博客文章(可能需要更正拼写错误)发布日期将在您重新发布时更新。因此,只要更正一个拼写错误,旧博客文章就会显示为最新的博客文章


当然,您应该实现回退,因此,如果未设置此属性,发布日期将回退到使用项目的实际最新发布日期。

您自己也知道,您正在尝试按项目上不存在的属性进行排序

我建议您在博客帖子上添加一个名为
publishDate
之类的属性。然后您可以在每个帖子上设置此属性,以指示它们何时“发布”

您不想将内置属性(如created date或published date)用于此类内容的原因是,如果您需要更新一篇旧的博客文章(可能需要更正拼写错误)发布日期将在您重新发布时更新。因此,只要更正一个拼写错误,旧博客文章就会显示为最新的博客文章


当然,您应该实现回退,因此如果未设置此属性,发布日期将回退到使用项目的实际最新发布日期。

文章的排序发生在
startNode.childrence.OrderByDescending(x=>x.GetPropertyValue(“PublicationDate”)。ToList()
这表明最新的帖子应该首先显示。你确定blogposts上的
PublicAintDate
属性填充了不同的日期吗?你能告诉我们后台的PublicationDate是什么样子吗?为什么不按Umbraco内置的createDate来组织呢?实际上,文档上没有“PublicationDate”属性pe.我猜这是一位朋友帮我从最新博客文章列表视图的“featuredImage”属性中获取缩略图时写的。但我想按发布日期和未创建日期对博客文章进行排序。因此,即使现在按降序排序,也会按创建日期显示文章。这并不完全是什么我希望今天创建一篇文章,并在4周内发布。文章的排序在
startNode.Children.OrderByDescending(x=>x.GetPropertyValue(“PublicationDate”))中进行
这表明最新的帖子应该首先显示。你确定blogposts上的
PublicAintDate
属性填充了不同的日期吗?你能告诉我们后台的PublicationDate是什么样子吗?为什么不按Umbraco内置的createDate来组织呢?实际上,文档上没有“PublicationDate”属性pe.我猜这是一位朋友帮我从最新博客文章列表视图的“featuredImage”属性中获取缩略图时写的。但我想按发布日期和未创建日期对博客文章进行排序。因此,即使现在按降序排序,也会按创建日期显示文章。这并不完全是什么我希望,正如可能发生的那样,今天创建一个帖子,并在4周内发布。谢谢克劳斯,我昨天已经做到了,这正是我想要的。谢谢克劳斯,我昨天已经做到了,这正是我想要的。