Skip to content

Commit

Permalink
Added support for dynamic sitemap generation
Browse files Browse the repository at this point in the history
  • Loading branch information
tstrimple committed Jul 14, 2014
1 parent a17a9a1 commit 2bf4854
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
26 changes: 26 additions & 0 deletions core/server/controllers/frontend.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var moment = require('moment'),
url = require('url'), url = require('url'),
when = require('when'), when = require('when'),
Route = require('express').Route, Route = require('express').Route,
sm = require('sitemap'),


api = require('../api'), api = require('../api'),
config = require('../config'), config = require('../config'),
Expand Down Expand Up @@ -63,7 +64,32 @@ function handleError(next) {
}; };
} }


function buildSitemap(posts, done, sitemap) {
var sitemap = sitemap || sm.createSitemap ({
hostname: config().url,
cacheTime: 600000
});

if(posts.length > 0) {
var post = posts.shift();
sitemap.add({ url: '/' + post.slug + '/' });
process.nextTick(buildSitemap.bind(this, posts, done, sitemap));
} else {
sitemap.toXML(function(xml) {
done(xml);
});
}
}

frontendControllers = { frontendControllers = {
'sitemap': function(req, res, next) {
api.posts.browse({}).then(function(result) {
buildSitemap(result.posts, function(sitemap) {
res.header('Content-Type', 'application/xml');
res.send(sitemap);
});
});
},
'homepage': function (req, res, next) { 'homepage': function (req, res, next) {
// Parse the page number // Parse the page number
var pageParam = req.params.page !== undefined ? parseInt(req.params.page, 10) : 1, var pageParam = req.params.page !== undefined ? parseInt(req.params.page, 10) : 1,
Expand Down
1 change: 1 addition & 0 deletions core/server/routes/frontend.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module.exports = function (server) {
var subdir = config().paths.subdir; var subdir = config().paths.subdir;


// ### Frontend routes // ### Frontend routes
server.get('/sitemap.xml', frontend.sitemap);
server.get('/rss/', frontend.rss); server.get('/rss/', frontend.rss);
server.get('/rss/:page/', frontend.rss); server.get('/rss/:page/', frontend.rss);
server.get('/feed/', function redirect(req, res) { server.get('/feed/', function redirect(req, res) {
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"rss": "0.2.1", "rss": "0.2.1",
"semver": "2.2.1", "semver": "2.2.1",
"showdown": "https://github.com/ErisDS/showdown/archive/v0.3.2-ghost.tar.gz", "showdown": "https://github.com/ErisDS/showdown/archive/v0.3.2-ghost.tar.gz",
"sitemap": "^0.7.3",
"sqlite3": "2.2.0", "sqlite3": "2.2.0",
"unidecode": "0.1.3", "unidecode": "0.1.3",
"validator": "3.4.0", "validator": "3.4.0",
Expand Down

0 comments on commit 2bf4854

Please sign in to comment.