public static Item GetContextItem(this SiteContext site, ID derivedFromTemplateID) { if (site == null) throw new ArgumentNullException(nameof(site)); var startItem = site.GetStartItem(); return startItem?.GetAncestorOrSelfOfTemplate(derivedFromTemplateID); }
public IEnumerable <SitemapModel> GetSitemapItems(SitemapDefinitionModel sitemapDefinition, SiteContext siteContext) { var sitemapitems = new List <SitemapModel>(); var urlList = new List <string>(); var embedLanguage = sitemapDefinition.EmbedLanguage; var db = Context.Database != null ? Context.Database : Factory.GetDatabase(Sitemap.Constants.WebDatabase); var urlOptions = UrlOptions.DefaultOptions; urlOptions.AlwaysIncludeServerUrl = true; urlOptions.LanguageEmbedding = embedLanguage ? LanguageEmbedding.Always : LanguageEmbedding.Never; var items = db.SelectItems($"fast:{siteContext.StartPath}//*") .Where(i => IsSitemapItem(i, sitemapDefinition)) .ToList(); var dynamicItems = this.GetDynamicWildcardItems(siteContext); items.AddRange(dynamicItems); var startItem = siteContext.GetStartItem(); if (IsSitemapItem(startItem, sitemapDefinition)) { items.Insert(0, startItem); } foreach (var item in items) { var regex = new Regex(@"(\/[A-Za-z0-9]\/)"); var url = LinkManager.GetItemUrl(item, urlOptions); url = regex.Replace(url, "/").ToLowerInvariant(); if (urlList.Contains(url)) { continue; } urlList.Add(url); sitemapitems.Add(new SitemapModel { Url = url, LastModified = item.Statistics.Updated }); } return(sitemapitems); }
public static Item GetTenantItem(this SiteContext site) { var startItem = site.GetStartItem(); return(startItem?.Parent); }