diff --git a/core/server/helpers/index.js b/core/server/helpers/index.js index f0f4453137..101ab3774e 100644 --- a/core/server/helpers/index.js +++ b/core/server/helpers/index.js @@ -490,7 +490,9 @@ coreHelpers.ghost_head = function (options) { blog = config.theme(), head = [], majorMinor = /^(\d+\.)?(\d+)/, - trimmedVersion = this.version; + trimmedVersion = this.version, + trimmedUrlpattern = /.+(?=\/page\/\d*\/)/, + trimmedUrl, next, prev; trimmedVersion = trimmedVersion ? trimmedVersion.match(majorMinor)[0] : '?'; @@ -502,6 +504,20 @@ coreHelpers.ghost_head = function (options) { return coreHelpers.url.call(self, {hash: {absolute: true}}).then(function (url) { head.push(''); + if (self.pagination) { + trimmedUrl = self.relativeUrl.match(trimmedUrlpattern); + if (self.pagination.prev) { + prev = (self.pagination.prev > 1 ? prev = '/page/' + self.pagination.prev + '/' : prev = '/'); + prev = (trimmedUrl) ? '/' + trimmedUrl + prev : prev; + head.push(''); + } + if (self.pagination.next) { + next = '/page/' + self.pagination.next + '/'; + next = (trimmedUrl) ? '/' + trimmedUrl + next : next; + head.push(''); + } + } + return filters.doFilter('ghost_head', head); }).then(function (head) { var headString = _.reduce(head, function (memo, item) { return memo + '\n' + item; }, ''); diff --git a/core/test/unit/server_helpers_index_spec.js b/core/test/unit/server_helpers_index_spec.js index f17481e272..b2d42a66a5 100644 --- a/core/test/unit/server_helpers_index_spec.js +++ b/core/test/unit/server_helpers_index_spec.js @@ -551,6 +551,32 @@ describe('Core Helpers', function () { done(); }).catch(done); }); + + it('returns next & prev URL correctly for middle page', function (done) { + configUpdate({url: 'http://testurl.com'}); + helpers.ghost_head.call({version: '0.3.0', relativeUrl: '/page/3/', pagination: {next: '4', prev: '2'}}).then(function (rendered) { + should.exist(rendered); + rendered.string.should.equal('\n' + + '\n' + + '\n' + + '\n' + + ''); + done(); + }).catch(done); + }); + + it('returns next & prev URL correctly for second page', function (done) { + configUpdate({url: 'http://testurl.com'}); + helpers.ghost_head.call({version: '0.3.0', relativeUrl: '/page/2/', pagination: {next: '3', prev: '1'}}).then(function (rendered) { + should.exist(rendered); + rendered.string.should.equal('\n' + + '\n' + + '\n' + + '\n' + + ''); + done(); + }).catch(done); + }); }); describe('ghost_foot Helper', function () {