@using Nop.Core.Configuration @using Nop.Core.Domain.Catalog @using Nop.Core.Domain.Common @using Nop.Core.Domain.Seo @using Nop.Services.Security @using Nop.Core.Events @inject CatalogSettings catalogSettings @inject CommonSettings commonSettings @inject IEventPublisher eventPublisher @inject IPermissionService permissionService @inject SeoSettings seoSettings @inject AppSettings appSettings @{ if (catalogSettings.DisplayAllPicturesOnCatalogPages) { NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/swiper/swiper-bundle.min.js"); } NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/Themes/CypherClean/Content/scripts/bootstrap.bundle.min.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/Themes/CypherClean/Content/scripts/tether.min.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.countryselect.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.ajaxcart.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/js/public.common.js"); //when jQuery migrate script logging is active you will see the log in the browser console if (commonSettings.JqueryMigrateScriptLoggingActive) { NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-migrate/jquery-migrate.js"); } else { NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-migrate/jquery-migrate.min.js"); } NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-ui-dist/jquery-ui.min.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery-validation/jquery.validate.min.js"); NopHtml.AppendScriptParts(ResourceLocation.Footer, "~/lib_npm/jquery/jquery.min.js"); //custom tag(s); if (!string.IsNullOrEmpty(seoSettings.CustomHeadTags)) { NopHtml.AppendHeadCustomParts(seoSettings.CustomHeadTags); } //event await eventPublisher.PublishAsync(new PageRenderingEvent(NopHtml)); var title = await NopHtml.GenerateTitleAsync(); var description = await @NopHtml.GenerateMetaDescriptionAsync(); var keywords = await NopHtml.GenerateMetaKeywordsAsync(); } @title @NopHtml.GenerateHeadCustom() @*This is used so that themes can inject content into the header*@ @await Html.PartialAsync("Head") @NopHtml.GenerateCssFiles() @await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HeadHtmlTag }) @NopHtml.GenerateScripts(ResourceLocation.Head) @NopHtml.GenerateCanonicalUrls() @await Component.InvokeAsync(typeof(NewsRssHeaderLinkViewComponent)) @await Component.InvokeAsync(typeof(BlogRssHeaderLinkViewComponent)) @*Insert favicon and app icons head code*@ @await Component.InvokeAsync(typeof(FaviconViewComponent)) @NopHtml.GenerateScripts(ResourceLocation.Head) @NopHtml.GenerateInlineScripts(ResourceLocation.Head) @Html.Raw(commonSettings.HeaderCustomHtml) @RenderBody() @NopHtml.GenerateScripts(ResourceLocation.Footer) @NopHtml.GenerateInlineScripts(ResourceLocation.Footer) @Html.Raw(commonSettings.FooterCustomHtml)