Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 13:19
    Steve
    0

    Problems with Children

    I am constructing a Razor script to paginate our NewsArticles, but when I try to access them using :

    var articles = Model.Parent.Descendants("DateFolder").Children.Where("NodeTypeAlias == \"NewsArticle\"");
    

    Where the structure looks like my photo attachment, the script fails to load. What's wrong with my syntax?enter image description here

  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 14:12
    Steve
    0

    I get a casting error when I use your lambda.

  • Christopher Pascual 27 posts 275 karma points
    Aug 26, 2015 @ 14:17
    Christopher Pascual
    0

    sorry , I tried to delete my comment as fast as I could

  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 14:18
    Steve
    0

    Here is the entire Razor:

    @inherits umbraco.MacroEngines.DynamicNodeContext
    @{ 
        int pageSize; // How many items per page
        int page; // The page we are viewing
    
        /* Set up parameters */
    
        if (!int.TryParse(Parameter.PageSize,out pageSize))
        {
            pageSize = 6;
        }
    
        if (!int.TryParse(Request.QueryString["page"],out page))
        {
            page = 1;
        }
    
        /* This is your basic query to select the nodes you want */
    
        var articles = Model.Parent.Descendants("DateFolder").Children.Where("NodeTypeAlias == \"NewsArticle\"");
    
    
        int totalNodes = articles.Count();
        int totalPages = (int)Math.Ceiling((double)totalNodes /(double)pageSize);
    
        /* Bounds checking */
    
        if (page > totalPages)
        {
            page = totalPages;  
        }
        else if (page <1)
        {
            page = 1;
        }
    }
    
    <h2>Found @totalNodes results.Showing Page @page of @totalPages</h2>
    
    <ul>
        @foreach (var item in articles.Skip((page - 1) * pageSize).Take(pageSize))
        {
            <li><a href="@item.Url">@item.Name</a>(@item.DisplayDate.ToShortDateString())</li>
        }
    </ul>
    
    <ul class="paging">
        @for (int p = 1; p < totalPages + 1; p++)
        {
            string selected = (p == page) ? "selected" : String.Empty;
            <li class="@selected"><a href="?page=@p" title="Go to page @p of results">@p</a></li> 
        }
    </ul>
    
  • Christopher Pascual 27 posts 275 karma points
    Aug 26, 2015 @ 14:24
    Christopher Pascual
    0

    can you try this sir steve :

     var articles = Model.Parent.Descendants("NewsArticle");
    
  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 14:28
    Steve
    0

    I have tried this, and it does list all the articles, but I need only the articles contained (children) in the folder of the docType "DateFolder".

    Otherwise, I get some unneeded articles that are outside the DateFolders.

  • Jerode 44 posts 159 karma points
    Aug 26, 2015 @ 15:30
    Jerode
    0

    Would you be willing to do something like:

    var articles = uQuery.GetNodeByUrl($"/Alumni/{DateFolder}/")
                    .GetChildNodes()
                    .Where(x => x.NodeTypeAlias == "NewsArticle")
    

    This will use uQuery and just get all the children at that URL of the NodeType.

  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 16:23
    Steve
    0

    I guess I am okay with this for now, but could you look at my syntax for 2 things in the for loop that lists the NewsArticles:

    1. I am trying to get the "NewsCategory" Name from the current article, but it's not working. The NewsCategory is a Ancestor of the current node, so I thought I could reference it that way in the loop. Nope..

    2. I am also trying to get an image from the media library with the property of "featuredImage". The if statement works, but I only get the "Hello World" text output in the image's place.

    @foreach (var item in articles.OrderBy("CreateDate descending").Skip((page - 1) * pageSize).Take(pageSize)) {

    var newsCategory = @Model.Ancestor("NewsCategory");

            <li class="listing">
                <p class="tag">@newsCategory.Name - @item.CreateDate.ToShortDateString())</p>
                    @if( @item.HasValue("featuredImage")){
                        var featuredImageThumb = @Model.Media("featuredImage");
                    <img src="/imageGen.ashx?image=@item.featuredImageThumb.umbracoFile&width=154" />
                    }
                    <h3><a href="@item.Url">@item.headline</a></h3></li>
                    <p class="teaser">@item.teaser</p>
        }
    
  • Steve 472 posts 1216 karma points
    Aug 26, 2015 @ 17:03
    Steve
    0

    Going back, It does look like I'll have to be able to select the articles from the docType of "DateFolder" and I just can't seem to get that to work at all.

    I don't understand why this won't work to get the children of the children of another node using something like this:

    var articles = Model.AncestorOrSelf("NewsHome").Children.Where("NodeTypeAlias == \"NewsCategory\"").Children.Where("NodeTypeAlias == \"DateFolder\"");

    enter image description here

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies