diff --git a/ghost/core/core/frontend/services/sitemap/base-generator.js b/ghost/core/core/frontend/services/sitemap/base-generator.js index 261e02e3c0..275f168c5f 100644 --- a/ghost/core/core/frontend/services/sitemap/base-generator.js +++ b/ghost/core/core/frontend/services/sitemap/base-generator.js @@ -63,6 +63,12 @@ class BaseSiteMapGenerator { return sitemapXml; } + updateURL(datum) { + const url = this.nodeLookup[datum.id].url[0].loc; + this.removeUrl(url, datum); + this.addUrl(url, datum); + } + addUrl(url, datum) { const node = this.createUrlNodeFromDatum(url, datum); @@ -100,6 +106,12 @@ class BaseSiteMapGenerator { } } + /** + * + * @param {String} url + * @param {Object} datum + * @returns + */ createUrlNodeFromDatum(url, datum) { let node; let imgNode; diff --git a/ghost/core/core/frontend/services/sitemap/manager.js b/ghost/core/core/frontend/services/sitemap/manager.js index 78a719d38c..947eb84973 100644 --- a/ghost/core/core/frontend/services/sitemap/manager.js +++ b/ghost/core/core/frontend/services/sitemap/manager.js @@ -1,3 +1,5 @@ +const DomainEvents = require('@tryghost/domain-events'); +const {URLResourceUpdatedEvent} = require('@tryghost/dynamic-routing-events'); const IndexMapGenerator = require('./index-generator'); const PagesMapGenerator = require('./page-generator'); const PostsMapGenerator = require('./post-generator'); @@ -29,6 +31,10 @@ class SiteMapManager { } }); + DomainEvents.subscribe(URLResourceUpdatedEvent, (event) => { + this[event.data.resourceType].updateURL(event.data); + }); + events.on('url.added', (obj) => { this[obj.resource.config.type].addUrl(obj.url.absolute, obj.resource.data); }); diff --git a/ghost/core/package.json b/ghost/core/package.json index 34d6366ad8..17fe1a7608 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -73,6 +73,7 @@ "@tryghost/database-info": "0.3.14", "@tryghost/debug": "0.1.21", "@tryghost/domain-events": "0.0.0", + "@tryghost/dynamic-routing-events": "0.0.0", "@tryghost/email-analytics-provider-mailgun": "0.0.0", "@tryghost/email-analytics-service": "0.0.0", "@tryghost/email-content-generator": "0.0.0",