Jump to main content

Manage your footer with a region

2021-08-10 Piranha
Footers are a basic component of almost all websites. Therefor we'll make it as easy as possible for us to manage ours by turning it into a region area on our site model. This guide uses Bootstrap 5

By adding a region on our site model we make the content accessible from basically everywhere on our site.

MainSite.cs - Your site model
[SiteType(Title = "Main site")]
public class MainSite : SiteContent<MainSite>
{
    [Region(Title = "Footer")]
    public IList<FooterRegion> FooterLinks { get; set; }
}

Since we added a HtmlField for our footer content we won't have to add any other fields besides a title. The HtmlField gives us a dynamic text editor that makes it easier to tailor our content, whether we need lists or just plain text

FooterRegion.cs - This will be our repeatable region model
public class FooterRegion
{
    [Field(Title = "Footer column title")]
    public StringField Title { get; set; }

    [Field(Title = "Footer column content")]
    public HtmlField Content { get; set; }
}
_Layout.cshtml - Get your site model and then pass it to your footer partial
@{
    MainSite mainSite = await WebApp.Api.Sites.GetContentByIdAsync<MainSite>(WebApp.Site.Id);
}

<partial name="LayoutPartials/_Footer.cshtml" for="@mainSite" />
_Footer.cshtml - Partial view
@model MainSite

<footer id="footer" class="bg-dark text-white py-5">
    @if (Model.FooterLinks != null && Model.FooterLinks.Count() > 0)
    {
        <div class="container">
            <div class="row justify-content-between">

                @foreach (var item in Model.FooterLinks)
                {
                    <div class="col-12 col-sm-6 col-md-3 text-center text-md-start mb-4">
                        <h2 class="h5">@item.Title</h2>
                        @Html.Raw(item.Content)
                    </div>
                }

            </div>
        </div>
    }
    <p class="copyright text-center d-block mt-4">&copy; @Model.Title</p>
</footer>
How about another great post? Previous Next

You might also want to read the following

2021-08-12 Piranha

Edit block templates inside the manager with Scriban

Want to edit block templates without rebuilding your project? Let Scriban help you with that. Scriban parses your custom Html and objects and then gives you HTML ready to be used anywhere.

2021-08-11 Piranha

Track users with Google Analytics on your Piranha site

Keep a track on your visitors and which pages are popular with Google Analytics. This post gives you a great example on how you can implement a dynamic way to add end edit your tracking codes

2021-08-08 Piranha

Carousel block for Piranha with Bootstrap

A good image slider or carousel can complete your website. This post will give you a quick example on how you can add your own carousel to your Piranha site

2021-08-07 Piranha

Youtube block for Piranha

Want to show Youtube videos on your Piranha site? This post will give you a quick example on how you could implement a Youtube block on your site, either for showing useful videos or Rick-Rolling your visitors

2021-08-05 Piranha

Accordion block with Bootstrap 5

Sometimes you have way to much text to fit on a page. A simple way to structure and group important content is by using an accordion. This post will give you an idea on how you can implement your own accordion on a Piranha site