Copied to clipboard

Flag this post as spam?

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


  • Simeon Ostberg 123 posts 389 karma points
    Jan 08, 2020 @ 13:00
    Simeon Ostberg
    0

    Blog problem

    Hi everyone,

    I have a blog running, which works with a macro. Now I only wanted to add another small post overview, but this doesn't work.

    Here is, what I have. First, this is the code which calls the 2 macros:

    <section class="section align-left">
    <div class="container col-sm-10">
            @Umbraco.RenderMacro("latestBlogposts",
                         new
                         {
                             numberOfPosts = Html.Raw(Umbraco.Field("noofposts").ToString()),
                             startNodeId = Model.Content.Id
                         })
    </div>
    <div class="container col-sm-2">
            @Umbraco.RenderMacro("latestBlogpostsmall",
                         new
                         {
                             numberOfPosts1 = Html.Raw(Umbraco.Field("noofposts").ToString()),
                             startNodeId1 = Model.Content.Id
                         })
    </div>
    </section>
    

    This is the first macro, which is working:

    @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 = 100;
        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);
        var blogposts = startNode.Children.OrderByDescending(x => x.CreateDate).Take(numberOfPosts);
    
        if (blogposts.Any())
        {
            foreach (ContentModels.Blogpost post in blogposts)
            {
            <section class="section align-center" style="padding: 40px 0 10px;">
                <div class="container">
                    <div class="col-sm-6 align-center img-column">
                        @if(post.BlogImage != null){
    
                            <a href="@post.Url"><img src="@post.BlogImage.Url" /></a>
                        }
                    </div>
    
                    <div class="col-sm-6 align-left">
                        <article style="max-width: 480px;">
                            <h5>@post.PageTitle</h5>
                            <small class="blogpost-date">@post.CreateDate.ToShortDateString()</small>                       
                            <p>@post.Excerpt</p>
                            <a href="@post.Url" class="btn btn-outline-clr" style="margin: 30px 0 0">Read more</a>
                        </article>
                    </div>
                </div>
            </section>
            }
        }
    }
    

    This is the second macro, which is throwing a YSOD with the message:

    Exception Details: System.ArgumentNullException: Value cannot be null. Parameter name: child

    @using ContentModels = Umbraco.Web.PublishedContentModels;
    @using Umbraco.Web;
    @inherits Umbraco.Web.Macros.PartialViewMacroPage
    @{ 
        var startNodeId = Model.MacroParameters["startNodeId1"] != null ? Model.MacroParameters["startNodeId1"] : Model.Content.Id;
        var numberOfPosts = 100;
        if (Model.MacroParameters["numberOfPosts1"] != null)
        {
            int.TryParse((string)Model.MacroParameters["numberOfPosts1"], out numberOfPosts);
        }
     }
    @if (startNodeId != null)
    {
        @* Get the starting page *@
        var startNode = Umbraco.TypedContent(startNodeId);
        var blogposts = startNode.Children.OrderByDescending(x => x.CreateDate).Take(numberOfPosts);
    
        if (blogposts.Any())
        {
            foreach (ContentModels.Blogpost post in blogposts)
            {
            <section class="section align-center" style="padding: 0 !important;">
                <div class="container" style="padding: 0 !important;">
                    <div class="align-left vl">
                        <article style="margin-bottom: 20px !important;">
                            <a href="@post.Url"><h6 style="margin: 0 !important;">@post.PageTitle</h6>
                            <small class="blogpost-date">@post.CreateDate.ToShortDateString()</small></a>
                        </article>
                    </div>
                </div>
            </section>
            }
        }
    }
    

    With this line being marked red:

    @Umbraco.RenderMacro("latestBlogpostsmall",
    

    When I use the working "latestBlogposts", I have 2 blogs next to each other. I would be happy to get a hint.

    Thanks in advance, Simeon

  • 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