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);
                }
            }
        }
Пример #2
0
        /// <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
            };
        }