2016-01-26 8 views
1

В следующих примерах я использую дерево содержимого, который выглядит следующим образом: Content treeСортировать дочерние узлы по дате - Бритва Umbraco

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
    var home = Model.Content.Descendants().Where(x => x.DocumentTypeAlias == "BlogContainer"); 

    <div class="container"> 
     <ul> 
      @foreach (var item in home) 
      { 
       foreach (var items in item.Children) 
       { 
        foreach (var baby in items.Children.OrderBy("date desc")) 
        { 
         var date = baby.GetPropertyValue<DateTime>("date"); 

         <li>@items.Name - @baby.Name - @date</li> 
        } 
       } 
      } 
     </ul> 
    </div> 
} 

и результат Result three мне нужно собрать все элементы и установить порядок по дате

ответ

0

Прежде всего, какую версию Umbraco вы используете? Похоже, вы используете 6+? Это правильно? Мой ответ ниже должен работать на 6 и 7.

Недвижимость, которую вы ищете, называется createDate, поэтому вы бы использовали что-то вроде baby.GetPropertyValue<DateTime>("createDate"). Еще лучше, вы должны просто набрать baby.CreateDate. Umbraco раскрыл все свойства по умолчанию, которые вы можете захотеть в свойствах IPublishedContent, так что вы можете получить без них GetPropretyValue(...).

Посмотрите на это Umbraco v6 MVC Razor Cheatsheet. В нем перечислены свойства по умолчанию, которые вы можете отключить от узлов в Umbraco. Синтаксис бритвы для v6 также применим к v7, поэтому этот обманщик работает для обоих.

+0

Это Umbraco 7. И да, 'createDate' дает тот же результат, что и я. Мне нужна коллекция всех родительских дочерних элементов, что я тоже получаю, но упорядочение происходит только под родительским узлом. 'date' - это просто' propertyValue' из пользовательского Date Picker. Проверьте ссылку: http://i.stack.imgur.com/UtGg5.jpg –

2

Try и сделать что-то вроде

var allItems = homePage.Descendants("YourItemNodeType") 
      .Where(item => item.HasValue("date") 
           && item.GetPropertyValue<DateTime> 
            ("date") != DateTime.MinValue) 
      .ToList() 
      .OrderByDescending(item => item.GetPropertyValue<DateTime>("date")); 

Это вы должны получить все ваши вопросы в обеих категории 1 и 2 категории, я всегда, как правило, проверить, если моя дата на самом деле установить (вы Wouldnt должны сделать это для создайте дату, указанную @bowserm, поскольку она всегда присутствует со значением).

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

Смежные вопросы