protected void PrepareSubmissionUrls() { SubmissionUrlsConfig = new List <SubmissionUrlsConfig>(); if (DynamicSitemapConfiguration.UseSitemapsIndexFile) { var submissionConfig = new SubmissionUrlsConfig(); SitemapIndex = new SitemapIndexConfiguration(); SitemapIndex.ServerHost = SitecoreConfiguration.MainSiteConfiguration != null ? SitecoreConfiguration.MainSiteConfiguration.ServerHost : SiteConfigurations.FirstOrDefault().ServerHost; SitemapIndex.FileName = _sitemapIndexFileName; submissionConfig.SitemapUrl = SitemapIndex.Url; foreach (var searchEngineId in SitecoreConfiguration.SearchEngines) { Item searchEngineItem = Database.GetItem(searchEngineId); if (searchEngineItem != null) { submissionConfig.SearchEngines.Add(searchEngineItem["Sitemap Submission Uri"]); } } SubmissionUrlsConfig.Add(submissionConfig); } else { foreach (var configuration in this.SiteConfigurations) { var submissionConfig = new SubmissionUrlsConfig(); submissionConfig.SitemapUrl = configuration.SitemapUrl; foreach (var searchEngineId in configuration.SearchEngines) { Item searchEngineItem = Database.GetItem(searchEngineId); if (searchEngineItem != null) { submissionConfig.SearchEngines.Add(searchEngineItem["Sitemap Submission Uri"]); } } SubmissionUrlsConfig.Add(submissionConfig); } } }
/// <summary> /// Reads configurations from Sitecore /// </summary> public virtual void ReadConfigurations() { ReadGlobalSitecoreConfiguration(); SiteConfigurations = new List <SitemapSiteConfiguration>(); if (SitecoreConfiguration.DisableSitemap) { Sitecore.Diagnostics.Log.Warn(Messages.SitemapDisabled, this); return; } Item[] configurationItems = Database.SelectItems(DynamicSitemapConfiguration.SitemapConfigurationItemPath + DynamicSitemapConfiguration.SitemapConfigurationSitesFolderName + "/*[@@templateid='" + TemplateIds.SiteConfigurationTemplateId + "']"); if (!configurationItems.Any()) { Sitecore.Diagnostics.Log.Warn(Messages.NoConfigurations, this); return; } if (!SitecoreConfiguration.ProcessedLanguages.Any()) { Sitecore.Diagnostics.Log.Warn(Messages.NoProcessedLanguages, this); return; } foreach (var configurationItem in configurationItems) { var languageItems = configurationItem.Languages.Where(x => SitecoreConfiguration.ProcessedLanguages.Contains(x.Name)).ToList(); foreach (var languageItem in languageItems) { var item = configurationItem.Database.GetItem(configurationItem.ID, languageItem); if (item.Versions.Count > 0) { var site = configurationItem.Name.ToLower(); var sitemapSiteConfiguration = new SitemapSiteConfiguration(item); sitemapSiteConfiguration.SitemapFileName = sitemapSiteConfiguration.SitemapFileName != String.Empty ? sitemapSiteConfiguration.SitemapFileName : String.Format(_sitemapFileNameFormat, site, languageItem.Name.ToLower()); sitemapSiteConfiguration.SitemapFilePath = DynamicSitemapConfiguration.SitemapConfigurationOutputFolder + "/" + sitemapSiteConfiguration.SitemapFileName; // - Load ItemsProcessor - if (!String.IsNullOrWhiteSpace(sitemapSiteConfiguration.ItemsProcessorTypeToLoad)) { var loader = new ItemsProcessorLoader(); var itemsProcessor = loader.Load(sitemapSiteConfiguration.ItemsProcessorTypeToLoad); if (itemsProcessor != null) { sitemapSiteConfiguration.ItemsProcessor = itemsProcessor; } else { Sitecore.Diagnostics.Log.Warn(String.Format(Messages.CannotLoadItemsProcessor, sitemapSiteConfiguration.ItemsProcessorTypeToLoad), this); } } SiteConfigurations.Add(sitemapSiteConfiguration); } } } SitecoreConfiguration.MainSiteConfiguration = SiteConfigurations.FirstOrDefault(x => String.Equals(x.Site.Name, SitecoreConfiguration.MainSiteConfigurationItem.Name, StringComparison.CurrentCultureIgnoreCase)); if (SitecoreConfiguration.MainSiteConfiguration == null) { Sitecore.Diagnostics.Log.Warn("No main site configuration", this); } SitemapIndex = new SitemapIndexConfiguration { ServerHost = SitecoreConfiguration.MainSiteConfiguration != null ? SitecoreConfiguration.MainSiteConfiguration.ServerHost : SiteConfigurations.FirstOrDefault()?.ServerHost, FileName = _sitemapIndexFileName }; }