利用github pages与jekyll搭建个人博客(二)

利用github pages与jekyll搭建个人博客(一):基础环境配置与博客搭建
利用github pages与jekyll搭建个人博客(二):添加分页功能以及安装Grunt
查看github上源码
github博客地址

2.1开启分页功能

在_posts目录下文件比较多的情况下,一页展示完全不合理,这时,就需要用到分页功能。

jekyll的分页功能很简单,在index.html文件中,将代码改写成

 {% for post in paginator.posts %}
    
  • {{ post.title }}
  • {% endfor %}

    保存文件,看运行结果,显示有报错的,原因是没有引入改插件

    利用github pages与jekyll搭建个人博客(二)_第1张图片
    index页面使用了分页功能,但是我引用安装该插件

    首先是安装该插件:

    sudo gem install jekyll-paginate
    

    然后打开_config.yml,修改代码

    # Gems
    gems: 
     - jekyll-feed //这个是原来就有的
     - jekyll-paginate
    #gems也可以这样写
    #gems: [jekyll-feed, jekyll-paginate]
    paginate: 10  
    paginate_path: "page:num" 
    

    再打开Gemfile文件

    利用github pages与jekyll搭建个人博客(二)_第2张图片
    Gemfile

    将刚才安装的jekyll-paginate进行添加:

    # If you have any plugins, put them here!
    group :jekyll_plugins do
       gem "jekyll-feed", "~> 0.6"
       gem "jekyll-paginate", "~> 1.1.0"
    end
    

    保存文件之后重启服务

    jekyll serve
    

    只有分页显示还不够,还得有上一页下一页之类的链接跳转

    在Index.html中添加代码:

    {% if paginator.total_pages > 1 %}
      
    
      {% if paginator.previous_page %}
        
      {% endif %}
    
      {% for page in (1..paginator.total_pages) %}
        {% if page == paginator.page %}
          {{ page }}
        {% elsif page == 1 %}
          {{ page }}
        {% else %}
          {{ page }}
        {% endif %}
      {% endfor %}
    
      {% if paginator.next_page %}
        下一页
      {% endif %}
    {% endif %}
    

    保存文件,刷新页面将会看到文章分页功能已经实现了,之后要做的就是完善分页样式了。

    利用github pages与jekyll搭建个人博客(二)_第3张图片
    分页功能已经实现

    2.2添加Grunt

    可参考Grunt安装与环境配置
    或者跟我一步步做

    1.全局安装grunt

    npm install -g grunt-cli
    

    2.进入博客目录,生成package.json

    npm init
    

    3.目录下安装grunt

    npm install grunt --save-dev
    

    4.安装需要的插件,这里根据个人需要来安装插件

    npm install grunt-contrib-sass --save-dev
    

    5.配置Gruntfile.js
    在根目录下创建Gruntfile.js文件

    /**
     * Created by wangmengfei on 16-12-21.
     *动态数据标签和ejs模板类似 <%= %>
     */
    
    module.exports = function(grunt) {
        grunt.initConfig({
            //读取package.json文件信息
            pkg:grunt.file.readJSON('package.json'),
    
            sass:{
                dist:{
                    options:{
                        sourceMap: false,
                        style: 'expanded'
                    },
                    files:[{
                        expand:true,
                        cwd:'_sass',
                        src:['*.scss','*.sass'],
                        dest:'css',
                        ext:'.css'
                    }]
                }
            }
    
            //注解:
            //cwd: '', 指向的目录是相对的,全称Change Working Directory更改工作目录
            //src: ['**'], 指向源文件,**是一个通配符,用来匹配Grunt任何文件
            //dest: 'images', 用来输出结果任务
            //expand: true expand参数为true来启用动态扩展,涉及到多个文件处理需要开启
        });
        // 加载任务插件
        grunt.loadNpmTasks('grunt-contrib-sass');
    
    
        // 默认被执行的任务列表。
        grunt.registerTask('default',['sass']);
    };
    

    6.创建_sass文件夹,编写scss代码

    //test.scss文件
    @import './testb.scss';
    .test{
      &__red{
        color:red;
      }
      &__green{
        color:green;
      }
    }
    
    //testb.scss文件
    .test{
      &_red{
        color: red;
      }
    }
    

    7.保存文件,编译scss

    grunt
    

    8.在目录下可以看到编译之后的css文件,说明可以正常运行。

    // 编译后的test.css文件
    .testb_red {
     color: red;
    }
    
    .test__red {
     color: red;
    }
    .test__green {
     color: green;
    }
    
    /*# sourceMappingURL=test.css.map */
    
    

    现在,就可以使用scss来编写css文件啦。当然,其他的插件也是一样的,需要的移步Grunt安装与环境配置,这里有更详细的插件和配置信息。

    9.根目录下现在有目录node_modules,git上传的时候并不需要它,因此,在根目录下创建文件.gitignore,将目录node_modules写在.gitignore文件中

    利用github pages与jekyll搭建个人博客(二)_第4张图片
    .gitignore文件

    2.3 grunt watch自动编译改动的文件

    在完成2.2步之后,_sass目录下的文件改动后,需要grunt一下进行编译,然后再运行jekyll serve,改动后的样式才会显示到页面上,但是这样很麻烦,能不能像jekyll serve一样,改动之后直接编译运行呢?办法是有的,就是使用grunt的watch功能。

    首先要安装这个插件

    npm install grunt-contrib-watch --save-dev
    

    安装完成之后修改Gruntfile.js文件

    /**
     * Created by wangmengfei on 16-12-21.
     *动态数据标签和ejs模板类似 <%= %>
     */
    
    module.exports = function(grunt) {
        grunt.initConfig({
            //读取package.json文件信息
            pkg:grunt.file.readJSON('package.json'),
    
            sass:{
                dist:{
                    options:{
                        sourceMap: false,
                        style: 'expanded'
                    },
                    files:[{
                        expand:true,
                        cwd:'_sass',
                        src:['*.scss','*.sass'],
                        dest:'css',
                        ext:'.css'
                    }]
                }
            },
            // watch部分为新增内容
            watch:{
                start:{
                    files: ['_sass/*.scss'],
                    tasks: ["sass"]
                }
            }
    
            //注解:
            //cwd: '', 指向的目录是相对的,全称Change Working Directory更改工作目录
            //src: ['**'], 指向源文件,**是一个通配符,用来匹配Grunt任何文件
            //dest: 'images', 用来输出结果任务
            //expand: true expand参数为true来启用动态扩展,涉及到多个文件处理需要开启
        });
        // 加载任务插件
        grunt.loadNpmTasks('grunt-contrib-sass');
        grunt.loadNpmTasks('grunt-contrib-watch');// 加载任务插件
    
    
        // 默认被执行的任务列表。
        grunt.registerTask('default',['sass']);
    };
    

    修改完成之后运行grunt watch,现在,一旦修改了_sass目录下的scss文件,就会自动编译啦,另外再运行jekyll serve,文件一旦有改动就会重新编译刷新网站内容啦。

    利用github pages与jekyll搭建个人博客(一):基础环境配置与博客搭建
    利用github pages与jekyll搭建个人博客(二):添加分页功能以及安装Grunt
    查看github上源码
    github博客地址

    你可能感兴趣的:(利用github pages与jekyll搭建个人博客(二))