diff --git a/README.md b/README.md index 5759e3a..68b7974 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,5 @@ Fork of this module to fix issue with hostname doubling up in xml sitemap. to resolve issues with multisite link resolution here, set the rootPath="#" on the publisher site in web.config and also add scheme="http" to the Site Definition for your site Setting the ServerURL setting under SiteMap Sites will now override the hostname in your Site Definition. + +See: http://blog.ryanbailey.co.nz/2016/04/sitecore-advanced-sitemap-module-updated.html for update Sitecore package for this fork. diff --git a/Sitecore.HTMLSiteMapBuilder/Component/SiteMapConfig.cs b/Sitecore.HTMLSiteMapBuilder/Component/SiteMapConfig.cs index c432f27..458bf76 100644 --- a/Sitecore.HTMLSiteMapBuilder/Component/SiteMapConfig.cs +++ b/Sitecore.HTMLSiteMapBuilder/Component/SiteMapConfig.cs @@ -78,7 +78,7 @@ private void InitilizeConfig() CheckboxField _MultilingualSiteMapXML = configItem.Fields[ConfigFieldsNames.MultilingualSiteMapXML]; if (_MultilingualSiteMapXML != null) - this.enableRefreshSiteMapOnPublish = _MultilingualSiteMapXML.Checked; + this.multilingualSiteMapXML = _MultilingualSiteMapXML.Checked; CheckboxField _EnableSendXMLToSearchEngines = configItem.Fields[ConfigFieldsNames.EnableSendXMLToSearchEngines]; if (_EnableSendXMLToSearchEngines != null) diff --git a/Sitecore.HTMLSiteMapBuilder/Constants/ConfigFieldsNames.cs b/Sitecore.HTMLSiteMapBuilder/Constants/ConfigFieldsNames.cs index d52be23..f4da05f 100644 --- a/Sitecore.HTMLSiteMapBuilder/Constants/ConfigFieldsNames.cs +++ b/Sitecore.HTMLSiteMapBuilder/Constants/ConfigFieldsNames.cs @@ -9,7 +9,7 @@ namespace Sitecore.AdvancedSiteMap.Constants public class ConfigFieldsNames { public const string TargetDatabaseName = "Target Database Name"; - public const string EnableRefreshXMLONPublish = "Enable Refresh XML ON Publish"; + public const string EnableRefreshXMLONPublish = "Enable Refresh XML On Publish"; public const string MultilingualSiteMapXML = "Multilingual SiteMap XML"; public const string EnableSendXMLToSearchEngines = "Enable Send XML To Search Engines"; diff --git a/Sitecore.HTMLSiteMapBuilder/Constants/Guids.cs b/Sitecore.HTMLSiteMapBuilder/Constants/Guids.cs index 8c0e3bf..e6ee1fc 100644 --- a/Sitecore.HTMLSiteMapBuilder/Constants/Guids.cs +++ b/Sitecore.HTMLSiteMapBuilder/Constants/Guids.cs @@ -11,14 +11,14 @@ public class Guids { public static class Items { - public static ID AdvancedSiteMapConfigItemId = new ID("{0E91DDD2-9BA2-47E5-9C7F-484C0E60484F}"); + public static ID AdvancedSiteMapConfigItemId = new ID("{38ACC950-E87F-4A5C-9271-C55C4336AAAB}"); public static ID LangaugesRootItem = new ID("{64C4F646-A3FA-4205-B98E-4DE2C609B60F}"); } public static class Templates { - public static ID SiteMapSearchEngineConfigTemplateId = new ID("{D4939687-C5DE-4165-AE0D-206829104E99}"); - public static ID SiteMapSiteTemplateId = new ID("{AACEFA89-BF04-4DF1-B6C1-09975D1F59FC}"); + public static ID SiteMapSearchEngineConfigTemplateId = new ID("{55C6049A-09B7-488A-A363-46FB4A40819A}"); + public static ID SiteMapSiteTemplateId = new ID("{9F454752-3C73-45F0-A03A-1B8EFD9F7F9E}"); } } } diff --git a/Sitecore.HTMLSiteMapBuilder/Constants/SiteMapFields.cs b/Sitecore.HTMLSiteMapBuilder/Constants/SiteMapFields.cs index 7e7f024..f4f40ad 100644 --- a/Sitecore.HTMLSiteMapBuilder/Constants/SiteMapFields.cs +++ b/Sitecore.HTMLSiteMapBuilder/Constants/SiteMapFields.cs @@ -8,7 +8,7 @@ namespace Sitecore.AdvancedSiteMap.Constants { public class SiteMapFields { - public const string ShowInSiteMap = "Show In SiteMap"; + public const string ShowInSiteMap = "Show In XML SiteMap"; public const string FrequencyChange = "Frequency Change"; public const string Priority = "Priority"; public const string ShowInHTMLSiteMap = "Show In HTML SiteMap"; diff --git a/Sitecore.HTMLSiteMapBuilder/SiteMapBuilder.cs b/Sitecore.HTMLSiteMapBuilder/SiteMapBuilder.cs index e384a82..e1f58fb 100644 --- a/Sitecore.HTMLSiteMapBuilder/SiteMapBuilder.cs +++ b/Sitecore.HTMLSiteMapBuilder/SiteMapBuilder.cs @@ -77,18 +77,18 @@ private void GenerateSiteMap() } bool useServerUrlOverride = site.Fields[SiteItemFields.ServerURL] != null && !string.IsNullOrEmpty(site.Fields[SiteItemFields.ServerURL].Value); - + string serverUrlOverrideUrl = site.Fields[SiteItemFields.ServerURL].Value; + StringBuilder sbSiteMap = new StringBuilder(); sbSiteMap.Append(""); - List siteMapItems = _root.Axes.GetDescendants().Where(P => P.Fields["Show In XML SiteMap"].Value == "1").ToList(); + List siteMapItems = _root.Axes.GetDescendants().Where(P => P.Fields["Show In XML SiteMap"] != null && P.Fields["Show In XML SiteMap"].Value == "1").ToList(); if (siteMapItems != null && siteMapItems.Any()) { if (_root.Fields["Show In XML SiteMap"].Value == "1") siteMapItems.Add(_root); var options = global::Sitecore.Links.LinkManager.GetDefaultUrlOptions(); - options.AlwaysIncludeServerUrl = true; options.LanguageEmbedding = LanguageEmbedding.Always; options.SiteResolving = true; @@ -110,23 +110,20 @@ private void GenerateSiteMap() { options.Language = langauge; options.EmbedLanguage(langauge); + options.Site = _site; foreach (var item in siteMapItems) { + options.AlwaysIncludeServerUrl = !useServerUrlOverride; + //to resolve issues with multisite link resolution here, set the rootPath="#" on the publisher site in web.config //and also add scheme="http" to the Site Definition for your site string url = LinkManager.GetItemUrl(item, options); - + + // Add URL override to url if (useServerUrlOverride) { - if (url.Contains("://" + siteHostName + "/")) - { - url = url.Replace(siteHostName, site.Fields[SiteItemFields.ServerURL].Value.Replace("http://", "").Replace("https://", "")); - } - else - { - url = site.Fields[SiteItemFields.ServerURL].Value + "//" + url; - } + url = string.Format("{0}{1}", serverUrlOverrideUrl, url); } //handle where scheme="http" has not been added to Site Definitions @@ -135,7 +132,7 @@ private void GenerateSiteMap() url = url.Replace("://", ""); } - if (!url.StartsWith("http://")) + if (!url.StartsWith("http://") || !url.StartsWith("https://")) { url = "http://" + url; } @@ -193,11 +190,24 @@ private void GenerateSiteMap() if (site.Fields[SiteItemFields.AddToRobotFile] != null) { + // Base URL + var serverUrl = serverUrlOverrideUrl; + + if (!useServerUrlOverride) + { + // handles multi site, single site with hostname defined and single site with no hostname defined + var item = siteMapItems.FirstOrDefault(); + Uri mySite = new Uri(LinkManager.GetItemUrl(item, new UrlOptions {LanguageEmbedding = LanguageEmbedding.Never, AlwaysIncludeServerUrl = true })); + serverUrl = mySite.Scheme + Uri.SchemeDelimiter + mySite.Host; + } + + serverUrl = serverUrl.EndsWith("/") ? serverUrl : serverUrl + "/"; // Ensure URL is built correctly + Sitecore.Data.Fields.CheckboxField _AddToRobotFile = site.Fields[SiteItemFields.AddToRobotFile]; if (_AddToRobotFile != null) { if (_AddToRobotFile.Checked) - AddSitemapToRobots(fileName); + AddSitemapToRobots(string.Format("{0}{1}", serverUrl, fileName)); } } diff --git a/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.dll b/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.dll index 5906ccf..73fd3c9 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.dll and b/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.dll differ diff --git a/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.pdb b/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.pdb index 5939016..eb6d441 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.pdb and b/Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.pdb differ diff --git a/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.dll b/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.dll index f2d43f7..229cfbb 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.dll and b/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.dll differ diff --git a/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.pdb b/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.pdb index ee252f1..82e1d7d 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.pdb and b/Sitecore.HTMLSiteMapBuilder/bin/Release/Sitecore.AdvancedSiteMap.pdb differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Sitecore.HTMLSiteMapBuilder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 3faae56..49a2fc8 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/Sitecore.HTMLSiteMapBuilder/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt index d87d441..53f3672 100644 --- a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt +++ b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt @@ -25,3 +25,8 @@ D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Debug\Sitecore.AdvancedSi D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Debug\Sitecore.Kernel.dll D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Debug\Sitecore.AdvancedSiteMap.dll D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Debug\Sitecore.AdvancedSiteMap.pdb +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\bin\Debug\Sitecore.AdvancedSiteMap.dll +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\bin\Debug\Sitecore.AdvancedSiteMap.pdb +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\obj\Debug\Sitecore.AdvancedSiteMap.dll +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\obj\Debug\Sitecore.AdvancedSiteMap.pdb +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\obj\Debug\Sitecore.AdvancedSiteMap.csprojResolveAssemblyReference.cache diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.dll b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.dll index 5906ccf..73fd3c9 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.dll and b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.dll differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.pdb b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.pdb index 5939016..eb6d441 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.pdb and b/Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.pdb differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Sitecore.HTMLSiteMapBuilder/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache index 2cfcb85..3129e73 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache and b/Sitecore.HTMLSiteMapBuilder/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt index 63e468a..c1a4d19 100644 --- a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt +++ b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.csproj.FileListAbsolute.txt @@ -1,5 +1,9 @@ -D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.dll -D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.pdb -D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.Kernel.dll -D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.dll -D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.pdb +D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.dll +D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.pdb +D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.Kernel.dll +D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.dll +D:\DEV\AdvancedSitemap\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.pdb +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.dll +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\bin\Release\Sitecore.AdvancedSiteMap.pdb +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.dll +C:\Users\Ryan\Source\Repos\SitecoreAdvancedSiteMapModule\Sitecore.HTMLSiteMapBuilder\obj\Release\Sitecore.AdvancedSiteMap.pdb diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.dll b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.dll index f2d43f7..229cfbb 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.dll and b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.dll differ diff --git a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.pdb b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.pdb index ee252f1..82e1d7d 100644 Binary files a/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.pdb and b/Sitecore.HTMLSiteMapBuilder/obj/Release/Sitecore.AdvancedSiteMap.pdb differ