Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
2 changes: 1 addition & 1 deletion Sitecore.HTMLSiteMapBuilder/Component/SiteMapConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion Sitecore.HTMLSiteMapBuilder/Constants/ConfigFieldsNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down
6 changes: 3 additions & 3 deletions Sitecore.HTMLSiteMapBuilder/Constants/Guids.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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}");
}
}
}
2 changes: 1 addition & 1 deletion Sitecore.HTMLSiteMapBuilder/Constants/SiteMapFields.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
38 changes: 24 additions & 14 deletions Sitecore.HTMLSiteMapBuilder/SiteMapBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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("<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'>");

List<Item> siteMapItems = _root.Axes.GetDescendants().Where(P => P.Fields["Show In XML SiteMap"].Value == "1").ToList();
List<Item> 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;

Expand All @@ -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
Expand All @@ -135,7 +132,7 @@ private void GenerateSiteMap()
url = url.Replace("://", "");
}

if (!url.StartsWith("http://"))
if (!url.StartsWith("http://") || !url.StartsWith("https://"))
{
url = "http://" + url;
}
Expand Down Expand Up @@ -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));
}
}

Expand Down
Binary file modified Sitecore.HTMLSiteMapBuilder/bin/Debug/Sitecore.AdvancedSiteMap.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Binary file modified Sitecore.HTMLSiteMapBuilder/obj/Debug/Sitecore.AdvancedSiteMap.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -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
Binary file not shown.
Binary file not shown.