2014-10-09 3 views
0

Я хотел бы получить количество страниц в узлах в месте Umbraco с выходными-то вроде этого:Umbraco подсчет активных страниц контента

  • Root (9 подузлов)
    • Первой папки (4 подузлов)
      • документ 1
      • документ 2
      • документ 3
      • документ 4
    • Вторая папка (3 подузлы)
      • документ 1
      • документ 2
      • документ 3

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

+0

"Активный", как и в изданную? –

+0

Да. Опубликованный контент. – ericdc

ответ

1

Это работает для меня:

  • Descendants.cs в папке App_Code

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using umbraco.presentation; 
    using umbraco.presentation.nodeFactory; 
    
    public static class ExtensionMethods 
    { 
        public static IEnumerable<Node> AllDescendants(this Node node) 
        { 
         foreach (Node child in node.Children) 
         { 
          yield return child; 
    
          foreach (Node grandChild in child.AllDescendants()) 
           yield return grandChild; 
         } 
        } 
    } 
    
  • Razor Посмотреть

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
    @using umbraco.presentation.nodeFactory; 
    @{ 
        Layout = ""; 
    } 
    
    @functions{ 
        public string CreateSitemap() 
        { 
         var temp = "<ul class='collapsibleList'>" + sitemap(-1) + "</ul>" + Environment.NewLine; 
         return temp; 
        } 
    
    public string sitemap(int nodeID) 
    { 
        var rootNode = new umbraco.presentation.nodeFactory.Node(nodeID); 
        var sitemapstring = "<li>" + rootNode.Name + " (" + rootNode.AllDescendants().Count() + ") <span style='font-size:9px'>" + rootNode.NodeTypeAlias + "</span></li>" + Environment.NewLine; 
    
    if (rootNode.Children.Count > 0) 
    { 
        sitemapstring += "<ul>" + Environment.NewLine; 
        sitemapstring = rootNode.Children.Cast<Node>().Aggregate(sitemapstring, (current, node) => current + sitemap(node.Id)); 
        sitemapstring += "</ul>" + Environment.NewLine; 
    } 
    return sitemapstring; 
    } 
    } 
    <body> 
    @Html.Raw(CreateSitemap()) 
    </body> 
    

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

  • Нет связанных вопросов^_^