如果您不介意破解 Ghost 核心文件,那么您可以为当前版本的 Ghost (0.7.4) 进行破解。如果升级到新的 Ghost 版本,则需要重新进行此 hack。
首先创建模板文件(升级后不会改变):
在以下位置创建主页模板:
内容/主题/主题名称/home.hbs
home.hbs现在取代index.hbs并将被渲染而不是它。
还要在以下位置创建博客模板文件:
内容/主题/主题名称/blog.hbs
添加分页帖子的车把元素是
{{> "loop"}}
所以这应该在blog.hbs文件中。
同样,如果您升级到新版本的 Ghost,上述文件不会更改。
现在编辑目录中的以下文件core/server
:
我在您需要添加的代码部分之前和之后添加了几行,以便您可以更轻松地找到需要添加新代码的位置。
/core/server/routes/frontend.js:
前:
indexRouter.route('/').get(frontend.index);
indexRouter.route('/' + routeKeywords.page + '/:page/').get(frontend.index);
后:
indexRouter.route('/').get(frontend.index);
indexRouter.route('/blog/').get(frontend.blog);
indexRouter.route('/' + routeKeywords.page + '/:page/').get(frontend.index);
这调用了前端控制器,它将以与“索引”和“主页”相同的数据级别呈现博客页面(默认是加载最近帖子的第一页),从而使我们能够使用 / 中的“循环”博客/页面。
/core/server/controllers/frontend/index.js
前:
frontendControllers = {
index: renderChannel('index'),
tag: renderChannel('tag'),
后:
frontendControllers = {
index: renderChannel('index'),
blog: renderChannel('blog'),
tag: renderChannel('tag'),
/core/server/controllers/frontend/channel-config.js
前:
getConfig = function getConfig(name) {
var defaults = {
index: {
name: 'index',
route: '/',
frontPageTemplate: 'home'
},
tag: {
后:
getConfig = function getConfig(name) {
var defaults = {
index: {
name: 'index',
route: '/',
frontPageTemplate: 'home'
},
blog: {
name: 'blog',
route: '/blog/',
frontPageTemplate: 'blog'
},
tag: {
/core/server/controllers/frontend/channel-config.js
之前:
indexPattern = new RegExp('^\\/' + config.routeKeywords.page + '\\/'),
rssPattern = new RegExp('^\\/rss\\/'),
homePattern = new RegExp('^\\/$');
后:
indexPattern = new RegExp('^\\/' + config.routeKeywords.page + '\\/'),
rssPattern = new RegExp('^\\/rss\\/'),
blogPattern = new RegExp('^\\/blog\\/'),
homePattern = new RegExp('^\\/$');
和
前:
if (indexPattern.test(res.locals.relativeUrl)) {
res.locals.context.push('index');
} else if (homePattern.test(res.locals.relativeUrl)) {
res.locals.context.push('home');
res.locals.context.push('index');
} else if (rssPattern.test(res.locals.relativeUrl)) {
res.locals.context.push('rss');
} else if (privatePattern.test(res.locals.relativeUrl)) {
res.locals.context.push('private');
后:
if (indexPattern.test(res.locals.relativeUrl)) {
res.locals.context.push('index');
} else if (homePattern.test(res.locals.relativeUrl)) {
res.locals.context.push('home');
res.locals.context.push('index');
} else if (blogPattern.test(res.locals.relativeUrl)) {
res.locals.context.push('blog');
} else if (rssPattern.test(res.locals.relativeUrl)) {
res.locals.context.push('rss');
} else if (privatePattern.test(res.locals.relativeUrl)) {
res.locals.context.push('private');
重新启动服务器,您应该会看到新的 /blog/ 页面出现了最近的博客文章列表