Beispiel #1
0
        /// <summary>
        /// Regenerates sitemap for all configured sites
        /// </summary>
        public void RegenerateSitemap()
        {
            EnsureSitemapsDirectoryExists();

            ReadConfigurations();

            if (SiteConfigurations.Count == 0)
            {
                Sitecore.Diagnostics.Log.Warn(Messages.ExecutionInterrupted, this);
                return;
            }

            GenerateSitemaps();
            GenerateSitemapsIndex();

            List <String> sitemapUrls = new List <String>();

            if (DynamicSitemapConfiguration.UseSitemapsIndexFile)
            {
                sitemapUrls.Add(SitemapIndex.Url);
            }

            else
            {
                sitemapUrls.AddRange(SiteConfigurations.Select(x => x.SitemapUrl));
            }

            _robotsService.RegisterSitemapToRobotsFile(sitemapUrls);

            if (DynamicSitemapConfiguration.IsProductionEnvironment)
            {
                var submitter = new SitemapSubmitterService(SitecoreConfiguration, SiteConfigurations, Database);
                submitter.SubmitSitemapsToSearchEngines();
            }
        }
Beispiel #2
0
 public void Current_ShouldReturnSiteDefinitionWithIsCurrentPropertySet(SiteConfigurations siteConfigurations, SiteConfiguration configuration)
 {
     configuration.IsCurrent  = true;
     siteConfigurations.Items = new List <SiteConfiguration> {
         configuration
     };
     siteConfigurations.Current.ShouldBeEquivalentTo(configuration);
 }
Beispiel #3
0
        private SiteConfigurations Create(IEnumerable <SiteDefinition> definitions)
        {
            var siteDefinitions = new SiteConfigurations
            {
                Items = definitions.Where(this.IsValidSiteConfiguration).Select(CreateSiteConfiguration).Where(sc => sc.ShowInMenu)
            };

            return(siteDefinitions);
        }
        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>
        /// Registers sitemaps to robots.txt
        /// </summary>
        public virtual void RegisterSitemapToRobotsFile()
        {
            if (DynamicSitemapConfiguration.RefreshRobotsFile)
            {
                String robotsPath = MainUtil.MapPath("/" + "robots.txt");

                StringBuilder stringBuilder = new StringBuilder(String.Empty);

                if (File.Exists(robotsPath))
                {
                    StreamReader streamReader = new StreamReader(robotsPath);
                    stringBuilder.Append(streamReader.ReadToEnd());
                    streamReader.Close();
                }

                StreamWriter streamWriter = new StreamWriter(robotsPath, false);

                List <String> sitemapUrls = new List <String>();

                if (DynamicSitemapConfiguration.UseSitemapsIndexFile)
                {
                    sitemapUrls.Add(SitemapIndex.Url);
                }

                else
                {
                    sitemapUrls.AddRange(SiteConfigurations.Select(x => x.SitemapUrl));
                }

                foreach (var url in sitemapUrls)
                {
                    String value = "Sitemap: " + url;

                    if (!stringBuilder.ToString().Contains(value))
                    {
                        if (!stringBuilder.ToString().EndsWith(Environment.NewLine) && stringBuilder.ToString().Trim() != String.Empty)
                        {
                            stringBuilder.AppendLine();
                        }

                        stringBuilder.AppendLine(value);
                    }
                }

                streamWriter.Write(stringBuilder.ToString());
                streamWriter.Close();
            }
        }