澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

读Ghost博客源码与自定义Ghost博客主题

自己动用的Ghost博客一贯使用者暗许的Casper大旨。笔者常有没怎么收拾过本身博客,一方面感到本人相当不够标准,很难写出品质比较高的文字;其他方面认为博客太耗费时间间,超级轻巧影响健康的劳作内容。方今供销合作社将要搬迁,作者的费用专门的学问也停下,因而抽点时间自定义多个体协会和的博客主页。

澳门官网手机版 1

备注:上海体育场地来自GhostChina官方网站,与本文内容非亲非故。

Ghost与Ghost主题

Ghost自称是正统的内容发布平台,实际上跟WordPress相比较它只可以算贰个对峙相比较年轻的博客系统,在效果与利益上完全无法与成熟的WordPress相比。

自个儿于是选用Ghost用作博客系统除去它总结方便,更因为它是依照Node.js且开源。究竟基本的职能有了,倘使有别的须求的话本人改代码就足以兑现。Ghost提供HTTP劳动用的是Express框架。那是风流倜傥种对小编那类半路接触jsdc3456澳门唯一授权,的人都能够大肆领悟的框架。

澳门官网手机版,Ghost主题贮存在安装路线的content/themes目录中。安装包自带了CasperRoon七个主旨,此中后边三个为私下认可宗旨。

Ghost支持HandleBars模板语言,自带的七个大旨也是依照此语言编写的,由此,定制Ghost核心最简易的方式是复制后生可畏份Casper的代码,基于它进行自定义。小编就是这么做的。

有关自定义大旨的详细介绍不在那实行,若有亟待请参照他事他说加以考察该链接:。

自定义主页

Ghost只定义了多少个重大页面,分别是文章列表页(包蕴主页)、随笔内容页、某标签的稿子列表、某小编的小说列表,以致部分rss或sitemap相关的页面。

诸如此比一说您就意识了,博客的主页和小说列表页面是同二个页面。主页对应的路径为/,列表对应的不二等秘书诀为/page/:page,此中:page为占位符,表示某些页码值,如1、2、3等。那五个路子实际上渲染的都以同三个模板文件index.hbs。默认地,Ghost收起到须求时/page/1的GET需要时,重返301重定向到/,再组成一些体制变化,进而让您以为主页和列表页是分离开的。

作者要做的就是让主页和列表页面不形似。

搞定方法1

先是笔者想到的正是在index.hbs文件中通过变量渲染不近似的源委。参照他事他说加以考察pagination.hbs小编意识真正存在这里五个可用的变量:prev表示是还是不是有前生龙活虎页,甚至page表示近年来为第几页。

澳门官网手机版 2

假诺能获得那七个变量中的叁个,我就可以区分对待主页和列表。缺憾的是至极。

澳门官网手机版 3

分页相关的变量是模板驱动的,也等于说只能在一定的pagination.hbs这一个文件中技艺获得相应的值。该结论尚未在代码上获得验证

若在这里个标题继续下去是足以兑现本人的须求的,但思考到间距Ghost本来的安顿太远大概埋下越来越多坑,因而扬弃该解决措施。

扑灭方法2

既然如此不大概在模板上解决难点,那就让路线/渲染原本的index.hbs,让路线/page/:page渲染另叁个HandleBars文件(我设定为list)。

福衢寿车那一个措施只要多少个步骤:

  1. 去除针对/page/1的重定向;
  2. /page/:page钦定新的渲染文件list.hbs。

内需退换ghost安装目录下的core/server/routes/frontend.js文本。上面是退换后的结果:澳门官网手机版 4

其中,handleIndexPageParam是参考handlePageParam后新扩展的三个函数,内容如下:

function handleIndexPageParam(req, res, next, page) {  
    var rssRegex = new RegExp('/rss/(.*)?/');

    page = parseInt(page, 10);

    if (page === 1 && rssRegex.test(req.url)) {
        // Page 1 is an alias, do a permanent 301 redirect
        return redirect301(res, req.originalUrl.replace(rssRegex, '/rss/'));
    } else if (page < 1 || isNaN(page)) {
        // Nothing less than 1 is a valid page number, go straight to a 404
        return next(new errors.NotFoundError());
    } else {
        // Set req.params.page to the already parsed number, and continue
        req.params.page = page;
        return next();
    }
}

另外/page/:page渠道对应的渲染对象frontend.listcore/server/controllers/frontend/index.js中定义。改后的内容如下图所示:澳门官网手机版 5

叙述list节点的安插在core/server/controllers/frontend/channel-config.js中定义,在defaults中加进一个节点:

...
list: {  
    name: 'list',
    route: '/',
    frontPageTemplate: 'home'
},
...

就算需求达成了,可是这种解决措施产生了新的标题:未来无法直接利用第三方提供的核心,若要使用,要求复制index.hbs到新的公文list.hbs

一网打尽办法3

实际方法2的施工方案平添list连带的代码是剩下的,作者在Ghost官方网站的文档里面查到,原本可以让路线/单独渲染home.hbs文档,而路径/page/2+反之亦然渲染index.hbs

所以结合方法2,应该能够有意气风发种更轻便的自定义主页的办法。

正文同步博客

 

本文由澳门网络娱乐游戏平台发布于Web前端,转载请注明出处:读Ghost博客源码与自定义Ghost博客主题

相关阅读