Umbraco Starter Kit сортирует сообщения в блоге в неправильном порядке - PullRequest
0 голосов
/ 04 февраля 2019

Сначала я попытался найти правильный ответ, но безуспешно.

Я работаю над веб-сайтом, использующим Starter Kit Umbraco в V7. По какой-то причине он сначала сортирует сообщения в блоге, используя самые старые, аЯ хочу получить самые новые сообщения первыми в виде списка с помощью макроса частичного просмотра 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>
}
}

IЯ полностью застрял.Пробовал некоторые вещи, но все, что я пытаюсь, это сломать сайт.Буду очень признателен за помощь, чтобы разобраться в этом желаемым способом.

Большое спасибо за руководство и помощь

1 Ответ

0 голосов
/ 05 февраля 2019

Как вы сами выяснили, вы пытаетесь отсортировать по несуществующему свойству вашего элемента.

Я бы порекомендовал вам добавить свойство в ваши записи блога под названием publishDate или что-то в этом роде.,Затем вы можете установить это свойство в каждой из ваших публикаций, чтобы указать, когда они будут «опубликованы».

Причина, по которой вы не захотите просто использовать встроенные свойства (например, дату создания или дату публикации) для чего-либонапример, если вам нужно обновить старую запись в блоге (возможно, исправив опечатку), дата публикации теперь будет обновляться при повторной публикации.Таким образом, простое исправление опечатки теперь заставит старый пост в блоге выглядеть как последний пост в блоге.

Вы, конечно, должны реализовать запасной вариант, поэтому, если это свойство не установлено, дата публикации будет откатываться на использованиеактуальная последняя дата публикации с позиции.

...