mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-21 09:52:06 +03:00
a1b55509df
refs #9601 Example: ``` collections: /podcast/: permalink: /{slug}/ ``` - the name of the collection is remembered as `routerName` (in the case above: "podcast") - the name of the collection is important for two things 1. context value 2. template name - the context value is available for specific theme helpers e.g. is helper, body_class helper - we auto-lookup the collection name in your theme e.g. podcast.hbs - this logic does not apply to static routes - if you define templates on your collection, they are stronger than the collection name
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
const _ = require('lodash');
|
|
let routes = [];
|
|
let routers = {};
|
|
|
|
module.exports = {
|
|
setRoute(routerName, route) {
|
|
routes.push({route: route, from: routerName});
|
|
},
|
|
|
|
setRouter(name, router) {
|
|
routers[name] = router;
|
|
},
|
|
|
|
getAllRoutes() {
|
|
return _.cloneDeep(routes);
|
|
},
|
|
|
|
getRouter(name) {
|
|
return routers[name];
|
|
},
|
|
|
|
/**
|
|
* https://github.com/TryGhost/Team/issues/65#issuecomment-393622816
|
|
*
|
|
* Hierarchy for primary rss url:
|
|
*
|
|
* - index collection (/)
|
|
* - if you only have one collection, we take this rss url
|
|
*/
|
|
getRssUrl(options) {
|
|
let rssUrl = null;
|
|
|
|
const collectionIndexRouter = _.find(routers, {name: 'CollectionRouter', routerName: 'index'});
|
|
|
|
if (collectionIndexRouter) {
|
|
rssUrl = collectionIndexRouter.getRssUrl(options);
|
|
|
|
// CASE: is rss enabled?
|
|
if (rssUrl) {
|
|
return rssUrl;
|
|
}
|
|
}
|
|
|
|
const collectionRouters = _.filter(routers, {name: 'CollectionRouter'});
|
|
|
|
if (collectionRouters && collectionRouters.length === 1) {
|
|
rssUrl = collectionRouters[0].getRssUrl(options);
|
|
|
|
// CASE: is rss enabled?
|
|
if (rssUrl) {
|
|
return rssUrl;
|
|
}
|
|
}
|
|
|
|
return rssUrl;
|
|
},
|
|
|
|
resetAllRoutes() {
|
|
routes = [];
|
|
},
|
|
|
|
resetAllRouters() {
|
|
_.each(routers, (value) => {
|
|
value.reset();
|
|
});
|
|
|
|
routers = {};
|
|
}
|
|
};
|