@using Nop.Services.Localization
@using Nop.Core
@inject ILocalizationService localizationService
@inject IStoreContext storeContext

@{
    Layout = "_ColumnsOne";

    var homepageTitle = await localizationService.GetLocalizedAsync(await storeContext.GetCurrentStoreAsync(), s => s.HomepageTitle);

    //title
    if (!string.IsNullOrEmpty(homepageTitle))
    {
        NopHtml.AddTitleParts(homepageTitle);
    }

    var homepageDescription = await localizationService.GetLocalizedAsync(await storeContext.GetCurrentStoreAsync(), s => s.HomepageDescription);

    //meta
    if (!string.IsNullOrEmpty(homepageDescription))
    {
        NopHtml.AddMetaDescriptionParts(homepageDescription);
    }

    //page class
    NopHtml.AppendPageCssClassParts("html-home-page");
}
<div class="page home-page">
    <div class="page-body">
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageTop })
        @await Component.InvokeAsync(typeof(TopicBlockViewComponent), new { systemName = "HomepageText" })
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeCategories })
        @await Component.InvokeAsync(typeof(HomepageCategoriesViewComponent))
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeProducts })
        @await Component.InvokeAsync(typeof(HomepageProductsViewComponent))
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeBestSellers })
        @await Component.InvokeAsync(typeof(HomepageBestSellersViewComponent))
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeNews })
        @await Component.InvokeAsync(typeof(HomepageNewsViewComponent))
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforePoll })
        @await Component.InvokeAsync(typeof(HomepagePollsViewComponent))
        @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBottom })
    </div>
</div>
